Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第13回】YOLOv7で自作データセットを用いて学習

はじめに

 近年、AI(Artificial Intelligence:人工知能)の急速な発展に伴い、それらを用いた技術が活用され始めています。例えば、AIによる画像認識技術として物体検出などがあります。物体検出は「画像の中から特定の物体の位置、種類、個数などの情報を認識する技術」であり、AIを用いて比較的高速に画像内の物体情報を取得することができます。この技術を用いて製造業では品質評価、外観検査、異常検知などに活用されています。

 リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2022年の7月に最新の物体検出モデルYOLOv7が公開されています。YOLOv7は以下のグラフにもあるように従来の物体検出モデルよりも同精度における推論時間が短縮しています。

以前の記事では動作環境の構築と推論デモの実行方法を紹介しています。

chantastu.hatenablog.com

本記事では、YOLOv7で自作データセットを用いて学習を行う方法を簡単に紹介します。

Aidemy Premium

 

1. yolov7のGithubリポジトリ

yolov7のGithubリポジトリは以下です。

github.com

 

2. 動作環境の構築

動作環境はこちらの記事をご覧ください。

chantastu.hatenablog.com

 

3. アノテーションデータの作成

アノテーションツールVoTTを用いてアノテーション作業を行いました。以下の記事をご参考にください。以下の手順でPascalVOC形式のデータセットを作成します。

chantastu.hatenablog.com

chantastu.hatenablog.com

 

4. Pascal VOCのxmlデータをtxtデータに変換

こちらのスクリプトを用いてxml形式のデータをtxtデータに変換します。

github.com

以下のコマンドで変換作業を行います。

 

終了後、必要となる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した人はエラーが出る可能性があります。

もし、エラーが出たら以下を参考にして修正してみてください。

fixed the GPU indexing error when running in colab by mhwahdan · Pull Request #1 · RobEn-AAST/yolov7 · GitHub

 

オススメ書籍

物体・画像認識と時系列データ処理入門

現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装

PyTorchで作る!深層学習モデル・AIアプリ開発入門

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、YOLOv7で自作データセットを用いて学習を行う方法を簡単に紹介しました。ご自身の目的に合わせて自作データセットを用意して学習を行い、物体検出で新しいシステム開発などを行ってみてください!