1-01 重み係数・バイアスを整数化するPythonプログラム
●Pythonの実行環境はGoogle Colab(*1)
Google Colabのノートブックから「ファイル」をクリックします。図1‐01のようにsample_dataフォルダのみが存在します。
(*1)PCでもラズパイでも実行できます。ブラウザはPCならChrome、ラズパイならChronium推奨。 |

図1‐01
●ファイル枠にドラッグ&ドロップ
インターフェース誌のダウンロードサイト→2025年3月号→生成AI×エッジ・デバイス…からPC用アーカイブ(edgeai-pc-202403.zip)をダウンロードして適当なディレクトリに展開します。その中にballs_int_5.py,
weight_plus.zipがあるので図1‐02のようにアップロードします。 |

図1‐02
●重み係数・バイアス(小数版)の準備
!unzip weight_plus.zip とタイプして解凍すると、図1‐03のように重み係数w1〜w6.csv、バイアスb1〜b6.csvが現れます。これらは前の章(ラズパイ編)で生成した重み係数です(*2)。
(*2)balls_float_5.pyを実行すると生成される。ただし、実行のたびに係数値、バイアス値は変わってくる(学習に使用する画像の順番がランダムに変わるので)。 |

図1‐03
●重み係数・バイアスを整数化するPythonプログラム
w1〜w6.csv、b1〜b6.csvは皆小数なので、そのままではFPGA化出来ません。run
balls_int_5.py とタイプして実行すると図1‐04のようにw1_int〜w6_int.csv、b1_int〜b6_int.csvが生成されます。これらは整数化された重み係数・バイアスです。 |

図1‐04
●ラベルリスト、推論用Python、推論用画像セットをアップ
PC用アーカイブのTestBalls_5.csv, balls_int_pred_5.py, val_1.zipをアップロードします。 |

図1‐05
●画像セットは赤/緑/青/黄/床の5クラス
!unzip val_1.zip で解凍すると図1‐06のようにval_1フォルダの下に5つのフォルダが現れます。これらは推論用画像セットです。 |

図1‐06
●整数化後の認識率の確認
balls_int_pred_5.pyは整数化した重み係数・バイアスを使って推論を行うプログラムです。実行すると図1‐07のように正解率が100%となっており、小数と比べてほぼ劣化していないことが分かります(*3)。
(*3)整数化すると推論品質は劣化するが、このケースではそれが数字に表れなかったということ。 |

図1‐07
●重み係数・バイアス(整数版)のCSVファイル
w1_int〜w6_int.csv、b1_int〜b6_int.csvがを右クリックでダウンロードします(図1‐08)。これらCSVファイル12個を以降のステップ(EXCEL化)で使用します。 |

図1‐08
●入力画像や中間出力などのデータもCSVに落とす
balls_int_pred_5.pyは他にもいろいろなCSVファイルを生成します。下表はそれらの説明。例えばlay6out_sample_00.csvはFPGA内部信号との比較に使います(ここ参照)。 |
CSVファイル |
説明 |
Bin1_int, Gin1_int, Rin1_int |
推論画像最初の1枚目の画素。それぞれB/G/R成分 |
RGB565.csv |
推論画像最初の20枚の画素。B/G/R成分が結合して1データになっている。 |
layNout_M |
N層目Mチャネル目の出力(推論画像最初の1枚目) |
lay5out |
5層目の出力(推論画像最初の1枚目、lay5Boutも同じ) |
lay6out_sample_X |
6層目の出力(推論画像最初のX枚目) |
目次へ戻る |