4/14(日) 足・靴・木型研究会「第2回研究集会」を開催します☆彡

1-10. 洗濯槽内のティッシュを画像処理で検出してみた(①データセット編)

やること

はじめまして、Mayoです|・ω・)ノ

ポケットにティッシュを入れたまま洗濯を行って洗濯槽内が悲惨なことになった経験ありませんか?(私はあります笑)

洗濯が二度手間になるのは嫌ですよね。

そこで、洗濯を行う前に洗濯槽内に混入したティッシュをカメラと機械学習で検出したいと思います。今回は2023年に公開されたYOLOv8を使ってティッシュの学習を行い、検出と識別を行います。

実行環境

Google Colaboratoryが利用可能です。

Google Colaboratory

プログラミングを行う開発環境としてはvscodeもおすすめです。

Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code edit...

Pythonのバージョンは3.12.2です。

Welcome to Python.org
The official home of the Python Programming Language

参考文献

YOLOv8の公式ページはこちらのサイトをご参照ください。

予測する
YOLOv8 、様々なタスクに予測モードを使用する方法をご覧ください。画像、ビデオ、データ形式などのさまざまな推論ソースについて学びます。

また、YOLOv8による物体検出の方法は以下のサイトが参考になりました。

YOLOv8でオリジナルデータの物体検出をする
YOLOv8はUltralytics社によって開発された物体検出モデルで、2023年2月現在の最先端モデルとなっています。今回はオリジナルデータ(スイカ)を準備して、YOLOv8を実装するまでを詳しく解説していこうと思います。また既存モデルとの比較もやってみます!

Youtubeの「ゼロから始める物体検出」シリーズも参考になります。

ティッシュ画像の収集

Mac内蔵のカメラでティッシュの画像を集めました。PCに入っている撮影アプリ「Photo Booth」を使ってティッシュの写真を撮りまくります。Windowsの場合もプリインのカメラアプリで大丈夫だと思います。

全部で72枚撮りました。

これらを学習データ(trainデータ)と検証用データ(valデータ)に分割して格納します。trainデータとvaldデータの比率は8:2または7:3がおすすめです。

データは以下のように配置しておきます。

ティッシュ画像のアノテーション

次にアノテーションツールを使ってアノテーションを行います。アノテーションでは検出したい物体をバウンディングボックスで囲んでラベリングを行います。例えば、バナナを検出したい場合はバナナを囲んで”banana”とラベル付けを行います。

今回はアノテーションツールの一つである「labelImg」を使います。インストール方法はREADMEを参照してください。

GitHub - HumanSignal/labelImg: LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can che...

ラベリングの手順は以下のサイトも参考になりました。

LabelImg利用方法(アノテーション) | MIKI-IE.COM(みきいえMIKIIE)
YOLO/Darknetの学習向け教師データ準備 「教師データの間違いはないように!」 画像検出や画像認識では

注意点としてはYOLO向けのテキストファイルを出力しないといけないのでPascalVOCを「YOLO」に変更してください。

このようなテキストファイルが生成されます。クラス番号(今回は0のみ)、バウンディングボックスの中心X座標、中心Y座標、幅、高さです(小数点なので比率です)。

0 0.518403 0.653646 0.206250 0.315625

アノテーションデータは以下のように配置しておきます。

データセットの完成

「datasets」フォルダをまるごとzipに圧縮します。

データセットのパス、クラス数、クラス名称を指定するファイル「dataset.yaml」ファイルを作成します。データセットはColabにアップするのでパスは「/content」から始めます。

# Path
path: /content/datasets/mayo  # dataset root dir
train: /content/datasets/mayo/images/train  # train images (relative to 'path') 
val: /content/datasets/mayo/images/val  # val images (relative to 'path') 

# Classes
nc: 1  # number of classes
names: ['tissue']  # class names

zipとdataset.yamlをColabの左側のところにアップロードしたら準備完了です。

続く

②学習編に続きます!

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