記事27 転移学習「物体検出」DS:maskface

 令和6(2024)年度・課題研究の指導のための予備実験
 AIモデル「MobileNet-SSD」の転移学習による「人物の顔検知(マスクの有無)

使用機材Xavier NX AI-Computer(Nvidia)
OSUbuntu 18.04
作業フォルダjetson-inference/python/training/detection/ssd/
データセットmaskface

■ 事前準備1 docker の起動

作業エリアに移動

cd ~/jetson-inference

「docker」の起動(管理者パスワードが必要)

docker/run.sh以後、管理者としての作業になるので要注意!

■ 事前準備2 作業ディレクトリの作成(作成後、アクセス権を775に設定する)

データ用/data/maskface
モデル用/models/maskface

■ 事前準備3 「labels.txt」の作成

ラベルファイル data/maskface/labels.txt

カテゴリ数は、とする。

対象ラベル名
マスクなしnonmask
マスクありwithmask
背景PCroom

■ 画像キャプチャソフト「camera-capture」の起動

作業エリアに移動

cd ~/jetson-inference/python/trainig/detection/ssd

「camera-capture」の起動

camera-capture /dev/video0

■ 「camera-capture」の使い方

設定項目(Data Capture Control

項目名設定値操作備考
Dataset TypeDetectionに変更
Dataset Pathdata/maskfaceを選択
Class Labelsmaskface/labels.txtを選択
Current Settrain val testの中から一つ選択
Current Class
JPEG Quality90画質を調節

また、「Save on Unfeeze」や「Clear on Unfeeze」のチェックをはずす

撮影の仕方(下記の動作を繰り返す、その際、訓練用かやラベル名の設定を変更する)

番号動作備考
カメラを対象に向ける
「feeze」ボタンを押す
トリミングを行う
「save」ボタンを押す

■ 転移学習のためのデータセットは、訓練用30評価用10試験用5とする。

 ( 簡易学習用のデータセット 訓練用15評価用5試験用5 )

camera-capture を使用した場合のディレクトリ構造

分類ディレクトリファイル意味・内容
モデルmodels/maskface/labels.txtラベルファイル
データdata/maskface/Annotations[name].xmlアノテーションファイル
・画像ファイル名
・データセット
・ラベル名
・切り取り情報
data/maskface/ImageSets/Maintest.txt試験用の画像ファイル名
train.txt訓練用の画像ファイル名
trainval.txt訓練評価用の画像ファイル名
val.txt評価用の画像ファイル名
data/maskface/JPEGImages[name].jpg全ての画像ファイル
(切り取り前の原画像
目的格納ディレクトリ(同一場所マスクなし・画像マスクあり・画像
訓練用data/maskface/JPEGImages151530
評価用data/maskface/JPEGImages5510
試験用data/maskface/JPEGImages5510

■ 転移学習コマンド

作業転移学習Transfer Learning with PyTorch
分野物体検知Object Detection
AIモデルMobileNet-SSD高速な物体検知が可能
高い認識性能&軽量モデル
データセットmaskfacedata/maskface(オリジナル)
camera-capture
使用時の
学習コマンド
python3
train_ssd.py
– – dataset-type=voc 1
– – data=data/maskface
– – model-dir=models/maskface
– – epochs=30

1 camera-capture を使用した場合の、データセット・タイプ


■ 学習済みデータの変換・転送コマンド

作業学習済みデータの
onnx への転送
ssd-mobilenet.onnx
(for TensorRT 2
転送コマンドpython3
onnx_export.py
– – model-dir=models/maskface

2 学習したデータを「AI-Computer」で処理できるように変換・転送する


■ 推論結果の格納ディレクトリ(基本的には不要)

入出力ディレクトリ
入力用/data/maskface/Input/
出力用/data/maskface/Output/

■ 転移学習して作られた新たなモデルによる、推論コマンド

作業推論
分野物体検知Object Detection
学習済みデータssd-mobilenet.onnx
推論コマンドdetectnet– – model=models/maskface
  /ssd-mobilenet.onnx
– – labels=models/maskface/labels.txt
– – input-blob=input_0
– – output-cvg=scores
– – output-bbox=boxes
標準入力(ビデオ入力:/dev/video0出力:画面表示
入出力データ
入力:data/maskface/
Input/*.jpg
出力:data/maskface/
Output/

■ 検出の結果

 記事23での経験もあり、気持ち悪いほど順調に検出ができました。

 また、新たな発見として、検出の精度が高いことから、他の点にも気づくことができました。具体的には、反応速度が非常に速いことに気付きました。

 今回のモデルは、本人の「マスクをした顔」と「マスクを外した顔」の検出でした。この検出を行う際、マスクの付け外しをするのですが、瞬時に、バウンディングボックスの色が変わりました。(検出対象の変化)

 また、本人以外の人物が画面に入ると、認識率は低いですが、確実に顔を検出していました。それらの動作が予定通りではありましたが、気持ち良い反応でした。久しぶりの充実感を味わうことができました。
 

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