はじめに
近年、AI(Artificial Intelligence:人工知能)の急速な発展に伴い、それらを用いた技術が活用され始めています。例えば、AIによる画像認識技術として物体検出などがあります。物体検出は「画像の中から特定の物体の位置、種類、個数などの情報を認識する技術」であり、AIを用いて比較的高速に画像内の物体情報を取得することができます。この技術を用いて製造業では品質評価、外観検査、異常検知などに活用されています。
リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2022年の7月に最新の物体検出モデルYOLOv7が公開されています。YOLOv7は以下のグラフにもあるように従来の物体検出モデルよりも同精度における推論時間が短縮しています。
以前の記事では動作環境の構築と推論デモの実行方法を紹介しています。
本記事では、YOLOv7で自作データセットを用いて学習を行う方法を簡単に紹介します。
- はじめに
- 1. yolov7のGithubリポジトリ
- 2. 動作環境の構築
- 3. アノテーションデータの作成
- 4. Pascal VOCのxmlデータをtxtデータに変換
- 5. datasetsの用意
- 6. configファイルの修正
- 7. 学習の実行
- 8. 学習後のモデルで推論
- オススメ書籍
- スキル修得&転職
- おわりに
1. yolov7のGithubリポジトリ
2. 動作環境の構築
動作環境はこちらの記事をご覧ください。
3. アノテーションデータの作成
アノテーションツールVoTTを用いてアノテーション作業を行いました。以下の記事をご参考にください。以下の手順でPascalVOC形式のデータセットを作成します。
4. Pascal VOCのxmlデータをtxtデータに変換
こちらのスクリプトを用いてxml形式のデータをtxtデータに変換します。
以下のコマンドで変換作業を行います。
終了後、必要となるtxtファイルはyolo_out/labelsの中に保存されています。
5. datasetsの用意
上記で作成されたtxtファイルと画像ファイルを以下の構成してdatasetsとします。datasets/person/・・・のような構成に今回はしました。
6. configファイルの修正
dataフォルダ内にあるcoco.yamlをコピーして別名で保存します。今回はperson.yamlとしました。そして、以下のようにconfigファイルを修正しました。
7. 学習の実行
それでは学習を実行していきます。以下のコマンドで学習を実行します。今回既に学習済みモデル(yolov7-tiny.pt)がダウンロードされている状況です。
学習後にはruns/train/yolov7-tiny-person/weightsにbest.ptが保存されます。
8. 学習後のモデルで推論
学習後のモデルが正常に機能するか確認します。今回は学習に用いた画像に対して推論を行いました。以下のコマンドで確認しました。
推論後以下のような結果が得られました。人だけが検出できているのがわかると思います。今回は雑にアノテーションをしたので微妙な結果ですが、きちんとやればより正確に検出できます。
【画像】
少し前にyolov7をgit cloneした人はエラーが出る可能性があります。
もし、エラーが出たら以下を参考にして修正してみてください。
オススメ書籍
物体・画像認識と時系列データ処理入門
現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装
PyTorchで作る!深層学習モデル・AIアプリ開発入門
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
本記事では、YOLOv7で自作データセットを用いて学習を行う方法を簡単に紹介しました。ご自身の目的に合わせて自作データセットを用意して学習を行い、物体検出で新しいシステム開発などを行ってみてください!