はじめに
前回の記事では、Yolov5をカスタムデータで学習させました。
今回は学習したモデルを使用して推論をしていきます。
前提条件
前提条件は以下の通りです。
- 前回の記事が完了している
- USBカメラもしくはPC付属のカメラがあること (なくても問題ありません)
Yolov5の推論
早速、前回と同じ推論をしていきます。
cd ~/test-yolov5/yolov5
cp runs/train/exp/weights/best.pt best.pt
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def
runs/detect/exp に以下の画像が保存されます。 (他にもたくさん保存されます)
推論結果を再学習できるようにする
学習に使用した枚数は少なかったので、追加で学習したいと思います。
しかし、毎回アノテーションするのは大変です。
そこで、推論結果を学習に使用できるようにしてくれる引数があります。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --save-txt
–save-txt で検出結果をYOLOアノテーション形式で runs/detect/exp/labels に出力してくれます。
これをそのまま使用してもらえば、容易に学習が可能です。
検出した矩形のみを保存
検出した矩形のみを保存することも可能です。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --save-crop
–save-crop で検出した矩形を runs/detect/exp/crops に保存してくれます。
USBカメラを使用
USBカメラでテストしたい場合も、引数で調整できます。
python3 detect.py --weight best.pt --source 0
これだけです。
推論の画像サイズを変更
画像サイズを変更して学習させた場合、推論時にも画像サイズを変更する必要があります。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --imgsz 480
–imgsz で変更可能です。変更した画像がどうなるかは以前の記事にあります。
検出のしきい値を変更
検出結果を確認するとき、確度の低い結果を拾いたくない時があります。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --conf-thres 0.7
0.7 以上の時のみ、検出結果を保存したりできるようになります。
NMSのIoUしきい値を変更
検出結果の矩形の重なりを処理するしきい値を変更することができます。あまり使いません。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --iou-thres 0.7
iou-thres を変化させて、結果を確認してみてください。
検出数を制限
画像内に検出結果が多く映る場合、その数を制限することができます。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --max-det 10
1枚の画像につき、10個までの検出数とします。
推論しながら結果を確認
推論中に結果を確認したい場合は、
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --view-img
–view-img と追加すれば、確認可能です。
層の可視化
層を可視化することもできます。推論中の特徴を観察することができます。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --visualize
面白い画像が出力されます。
矩形のみ表示したいとき
ラベル名や確率が邪魔な時、矩形のみを表示することができます。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --hide-labels --hide-conf
推論速度を上げたいとき
推論速度を上げたいときも、引数が用意されています。
python3 detect.py --weight best.pt --source ~/test-yolov5/Class1_def --half
PyTorch専用のfloat16を使用して推論することができます。
おわりに
Yolov5 の detect.py のコードの説明はまた別途用意します。
推論の引数を変更するだけでもAIモデルのテストのは問題ないと思います。
次回は、推論をさらに掘り下げて、自分で使用する際のプログラムの変更部分についても説明できたらと思います。
コメント