!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
予測 / クラス分類

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. Down...

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 Tzu...

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

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の左側のところにアップロードしたら準備完了です。

続く

②学習編に続きます!

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Suzu

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

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