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

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

MENU

【第16回】YOLOv8で自作データセットを用いて学習:roboflowでアノテーション

はじめに

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

 リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2023年1月に最新の物体検出モデルYOLOv8が公開されています。YOLOv8でインスタンスセグメンテーションを行った例を以下に示します。

youtu.be

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

Aidemy Premium

 

1. YOLOv8のGithubリポジトリ

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

github.com

 

2. アノテーション

アノテーションには以下リンクのroboflowを使用しました。

Roboflow: Give your software the power to see objects in images and video

 

2.1 画像のアップロード

roboflowのアカウント作成後、下図の画面の「Create New Project」をクリック

次に、下図の画面が出るので、「What Are You Detection?」に検出したいクラス名を記載し、「Project Name」を記入します。その後、「Create Public Project」ボタンをクリックします。

次にアップロード画面が出てくるので、アノテーションしたい画像を選択してアップロードします。アップロードが完了したら、「Send and Continue」ボタンをクリックします。その後、右欄が出てくるので、下部にある「Assign Image」ボタンをクリックしてください。

上図の後は下図のようになります。

 

2.2 アノテーション

上記画面で画像を選択すると、以下のようになります。右メニューにある□を選択するとアノテーション作業ができます。

すべての画像のアノテーションが終わったらAnnotateの画面に戻り、右上の「Add ** images to Dataset」ボタンをクリックしてください。

 

2.3 データセットの生成

クリックすると下図のように右欄が出てくるので、下部にある「Add Images」ボタンをクリックしてください。

クリック後、下図の画面になるので、右上にある「Generate New Version」ボタンをクリックしてください。

その後、以下のような画面になります。基本的に緑のボタンをクリックして進めてください。条件を変えたい場合には修正して緑のボタンをクリックしてください。

 

2.4 データセットの取得

上図をクリックしていくと下図のようにデータセットが出来上がります。次に下図の赤枠の「export」ボタンをクリックしてください。

その後、下図の画面が出ますので、Formatから今回学習を行うYOLOv8を選択、「Show download code」のラジオボタンを選択して「Continue」ボタンをクリックしてください。

 

上記手順を行うとDownloadコードが出てくるので、Jupyter Notebookやターミナルでデータセットをダウンロードしてください。

以下にもURLを貼付しておきます。

https://app.roboflow.com/ds/K5TmOG8MLg?key=nlFi4tSZGY

 

3. 学習

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

chantastu.hatenablog.com

それでは学習を行っていきます。以下のコマンドで学習を実行します。dataの引数には、先程ダウンロードしたデータセット内にあるdata.yamlを指定します。

学習終了後はruns/detect/trainにbest.ptが保存されます。

 

4. 推論で確認

それでは推論を実施して学習の結果を簡単に確認していきます。学習で得られたbest.ptをmodelの引数に指定します。

推論の結果は下図です。今回アノテーションしたように「person」だけが検出されていますね。

 

オススメ書籍

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

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

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

 

スキル修得&転職

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

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

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

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

 

おわりに

本記事では、YOLOv8で自作データセットを用いて学習を行う方法を簡単に紹介しました。最新のYOLOv8は非常に使いやすい印象です。アノテーション・学習をご自身でも行ってみて、目的達成のために物体検出を活用してみてください。