データセットの説明 |
人の左手の手形を撮影した画像。対象は、生徒4名、先生1名の計5名。それぞれの対象(クラス)ごとに、訓練用(train)データ40、評価用(val)データ10、試験用(test)データ5から構成される。 |
作業フォルダ jetson-inference/python/training/classification
ラベルファイル | data/tegata/labels.txt |
ラベル | studentA studentB studentC studentD teacherA |
データセット | 対 象 | 生徒A | 生徒B | 生徒C | 生徒D | 教員A |
tegata | ラベル名 | studentA | studentB | studentC | studentD | teacherA |
訓練用 | data/tegata/train | 40 | 40 | 40 | 40 | 40 |
評価用 | data/tegata/val | 10 | 10 | 10 | 10 | 10 |
試験用 | data/tegata/test | 5 | 5 | 5 | 5 | 5 |
※ 一部の例外はあるが、「訓練用」、「評価用」、「試験用」データは、
全て異なるものを使用した。
作業 | 転移学習 | Transfer Learning with PyTorch |
分野 | 分類 | Classification |
データセット | tegata | data/tegata(オリジナル) |
学習コマンド | python3 train.py | – – model-dir=models/tegata – – epochs=30 と 60 回 data/tegata |
ネットワーク | resnet18 | for PyTorch |
作業 | 学習済みデータの onnx への転送 | resnet18.onnx(for TensorRT) |
転送コマンド | python3 onnx_export.py | – – model-dir=models/tegata |
推論用 入力データ /data/tegata | 結果用 出力フォルダ(要作成) /data/tegata |
/test(5名全員) | /result(5名全員) |
/train/studentA /train/studentB /train/studentC /train/studentD /train/teacherA | /result/sa /result/sb /result/sc /result/sd /result/ta |
作業 | 推論 | |
分野 | 分類 | Classification |
学習済みデータ | resnet18.onnx | |
推論コマンド | imagenet | – – model=models/tegata/resnet18.onnx – – labels=data/tegata/labels.txt – – input-blob=input_0 – – output-blob=output_0 |
入出力データ 生徒A | 入力:data/tegata /test/studentA | 出力:data/tegata/result |
入出力データ ビデオ | 入力:/dev/video0 | 出力:映像 |
★ 学習方法
最初に、epochs=30 次に epochs=60 で訓練をおこなった。しかし、推論結果には、ほとんど差異が見られなかった。
★ 試験用データ(test)による、結果の評価(本来の評価)
5名×5枚、計25枚の推論を行った。
正解は、生徒A 4/5、生徒B 2/5、生徒C 0/5、生徒D 2/5、教員A 1/5 で、かなり低い認識率であった。まったく実用にならないレベルであった。
★ 訓練用データ(train)による、結果の評価(過学習の評価)
5名×40枚、計200枚の推論を行った。
正解は、生徒A 34/40、生徒B 23/40、生徒C 0/40、生徒D 38/40、教員A 22/40 で、かなり高い認識率から低い認識率でばらつきがでた。認識率の傾向は、試験用データと同じであった。
★ 今後の対応
学習データの個数を増やす(40→100)。再度撮影する際は、手の向きは一定にして、多少左右に動かす程度にする。
それでも認識率が上がらない場合は、データの加工を行う。具体的な加工方法は今後検討する。