記事26 転移学習「画像分類」DS:tegata

データセットの説明
人の左手の手形を撮影した画像。対象は、生徒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ラベル名studentAstudentBstudentCstudentDteacherA
訓練用data/tegata/train4040404040
評価用data/tegata/val1010101010
試験用data/tegata/test

※ 一部の例外はあるが、「訓練用」、「評価用」、「試験用」データは、
 全て異なるものを使用した。

作業転移学習Transfer Learning with PyTorch
分野分類Classification
データセットtegatadata/tegata(オリジナル)
学習コマンドpython3
train.py
– – model-dir=models/tegata
– – epochs=30 60
data/tegata
ネットワークresnet18for 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)。再度撮影する際は、手の向きは一定にして、多少左右に動かす程度にする。

 それでも認識率が上がらない場合は、データの加工を行う。具体的な加工方法は今後検討する。

 

タイトルとURLをコピーしました