12/9(月) 応用科学学会シンポジウムで自動運転に関する講演を担当します☆彡(試乗会もあります!来て!)

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

やること

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

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

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

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

実行環境

Google Colaboratoryが利用可能です。

Google Colab

プログラミングを行う開発環境としては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の公式ページはこちらのサイトをご参照ください。

予測する
Ultralytics YOLO11 のパワーを活用し、様々なデータソースに対してリアルタイムで高速な推論を行う。予測モード、主な機能、実用的なアプリケーションについて学びましょう。

また、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/suzu  # dataset root dir
train: /content/datasets/suzu/images/train  # train images (relative to 'path') 
val: /content/datasets/suzu/images/val  # val images (relative to 'path') 

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

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

続く

②学習編に続きます!

SNS等でお気軽にご連絡ください

※当ブログに関することは何でもご相談・ご依頼可能です(Servicesになくても)
※TwitterはFF外の場合はDMではなく返信orメンションでお願いしますm(_ _)m

情報発信しています

質問・コメントはSlackやDiscordでお気軽に

勉強会の告知はこちらで

回帰 / クラス分類
この記事を書いた人

専門は情報工学とロボット制御。元ロボコニストでRoboCup世界部門優勝常連チーム。ご飯にシチューかける党党首。

この記事をシェアする
Vignette & Clarity(ビネット&クラリティ)
タイトルとURLをコピーしました