YOLOv8のトレーニングデータを無料で大量に利用可能なサービス教える
せどりツールも形が見えてきたシリーズ4回目。前回はyolov8のデフォルトモデルでどこまで背表紙検出の精度が出るか試しました。
デフォルトの推論モデルでも悪くない精度だったんですが、どうせなら高い精度を目指したい。という事で今回は背表紙検出に特化したオリジナルモデルを作ってみたいと思います。
記事が面白かったらフォロー&♥よろしくお願いしますm(_ _)m
ところでモデルのトレーニングってなーに?
今まで当たり前のように推論モデルだのトレーニングだのとキーワードを出してきましたが、そもそもモデルってなんや!それをトレーニングするってどういうことやねん!という所をハッキリさせてから先に進みましょ。
【例え話】推論モデルとは
簡単に言うと「物探しが得意な探偵」のようなもんで、何かの画像を見せるとその画像に写っている物を探し出して名前も教えてくれます。
YOLOv8ではこの探偵たちをあらゆる画像に対応できるよう特別な訓練を受けさせており、疲れを知らずいつまでも画像を調べ続ける事ができます。
ただし、鍛え上げられた彼らでも画像の中から車を探し出す事はできますが車種までは勉強していません。人間を探す事はできますが特定の人物を探す事はできません。
【例え話】トレーニングとは
この疲れ知らずの探偵たちに更なる知識を教え込むのが「トレーニング」です。車の車種を調べる専門の探偵へと教育するには、たくさんの車種別の画像と名前を一緒に教えてあげると彼らは頑張って覚えてくれます。
トレーニングは多くの教材で何度も繰り返し教える事で車種識別テストの点数が向上します。人間と一緒ですね。逆に言えば、教材が少ない・勉強する回数が少ない場合はテストの点数はなかなか上がりません。
一説には数千~数万種類の教材を準備して勉強させる事もあるそうで、高い精度を出すには多くのデータセットが必要になります。
「覚えさせたい物と名前をセットにして探偵に勉強させる」、これが推論モデルをトレーニングするという言葉の意味って事ですね。
データセットの準備
言葉の意味が大体分かった所でトレーニングに必要な教材を準備していきましょ。前述の通り教材とは画像と写っている物の名前がセットになったデータの事なんですが、これらを簡単に生成できるアプリの事をアノテーションツール・ソフトなんて呼ばれています。
実はこのアノテーション作業、AIとか機械学習というイメージからは想像つかないくらいゴリゴリの手作業で、写っている物体をチマチマと線で囲み対応する名前を入力しなければなりません。僕は結構好きなんですけど。
具体的にはこんな作業をします。
なかなかの面倒くささ。この作業をモデルの精度が目標値に達するまで繰り返すわけですね。必要があれば何百枚~何千枚と。
ちなみにこの動画の例はインスタンスセグメンテーション用のラベル付け作業ですんで、短形モデルで推論する場合は四角で囲めばいいだけなのでちょっと楽です。
今回のチャレンジは本棚の背表紙を検出したいので、短形ではなくインスタンスセグメンテーションでラベル付けを行う必要がありますね。
アノテーションツールはどれがいい?
上記の動画の中では「make sense」という無料のアノテーションツールを使っていました、僕は物体検知を勉強するまで知らなかったのですが類似のツールは意外といっぱいあるんですねー。
僕もいくつか試しながらどれも似たようなもんだな~と思っていたんですが、ようやく劇的に便利なサービスを見つけました「https://roboflow.com/」です。
このサービスはアノテーション作業だけではなく、物体検知モデルの総合開発環境で画像の準備からモデルの生成まで全部面倒を見てくれます。
僕がroboflowを使って感動した要素は2つ。
smart polygonが最強すぎる
他のユーザーのデータ・モデルをオープンソースとして無制限に使える
それぞれ説明させて下さい。
まずsmart polygon機能なんですが、下記をご覧ください。
やばいでしょ?
インスタンスセグメンテーション用のラベル付けは輪郭をぽちぽちして他の物体との境界を明確に指定する必要があります、しかし、このsmart polygon機能は物体の境界を自動で検出して1クリックでマスクを生成してくれるんです!!
~ 神。ゴッドは実在した。~
もう一つの「他のユーザーのデータ・モデルをopen sourceとして無制限に使える」機能も激ヤバで、やりたい事によっては自分でアノテーション作業すら不要っ!!データシェアリング最高!!
データやモデルを使いたい場合はこんな感じ。
■ データセットを使う場合
■ モデルを使う場合
で、他人様がシコシコ頑張って作ったデータセットもモデルも拝借する事が可能です。
そしてこれらすべてが無料という神っぷり。オーマイゴッド。
roboflowのデメリット
いい所ばかりを言うと嘘くさいのでデメリットもご紹介しましょう。
先ほどまで崇めていた「データ・モデルの共有システム」なんですが、これは当然自分にも適用されまして、自分が作ったデータ・モデルが他人に利用される可能性があるという事です。
つまり、秘匿性の高い物なんかは当然扱えないという事ですね。世界中に晒され二次利用されるという前提でデータやモデルを扱う必要があるっちゅー事です。
しかし、これは無料プランの話ですのでお金を払えばちゃんと自分のプロジェクトは非公開にできます。無料はオープンソース・有料はプライベートと住み分けられている訳ですな。
気になるお値段は無料の1個上のスタータープランで月額$249っ!(2023年10月2日時点)、日本円にして37,000円くらい。いや無理っ!お小遣いが全部飛ぶ、完全に事業者向けのプランですわ。
この通り、roboflowは秘匿性に難あり・かつ有料プランがクソ高い。というデメリットがございますので、ご利用の際は十分にご検討下さいm(_ _)m
roboflowの使い方
そろそろ実際の使い方に話を進めましょうね。
roboflowはいろいろな機能が盛りだくさんでダッシュボードがちと見にくいと思います、下記の作業手順を参考にして下さい。
アカウント登録
プロジェクトの作成
画像のアップロード
自分の本棚を公開するのがちょっと恥ずかしいという感情が沸いた
プロジェクトには複数のアカウントをチームメンバーとして招待する事ができまして、それぞれにアノテーション作業を振り分ける事ができます。
一人でやるの大変ですからね、システム自体がチームで取り組む事を前提とした構造になっているんですな。今回はもちろん自分一人なので、用意した画像すべてを自分のアカウントに振り分けます。
アノテーション作業
この作業を用意した画像全部やります。アノテーション作業にはショートカットがいくつあるので駆使すると意外にサクサクと進められます。便利なショートカットの一覧は下記を参照。
データセットの作成
ラベリング全部終わりましたらデータセットを作成します
ラベル付けしたデータをトレーニング用・検証用・テスト用にどれくらいの割合で分けるか決める。普通はデフォルトでOK。
ラベル付けしたデータの前処理ができる、向き・サイズ・色を変えたりするとモデルの精度が高まったりする。よく分からん場合はデフォルトでOK。
データを水増しできる、ラベル付けしたデータに対し拡大・縮小・湾曲・反転などの処理を施して別画像として追加する。データ量が多いほどモデルの精度が高まる事が多いのでお手軽にデータ量を増やせるありがたい機能。
今回は無視。
今回はYOLOv8を使っているので選択、対応しているフォーマットはたくさんあるので別のアルゴリズムを使っている場合は対応している物を選ぶ。
pythonスクリプトが出力されるのでこれでデータセットの準備完了!
モデルのトレーニングも出来るんだけど…
無料プランの場合はモデルトレーニングの回数に制限があり3回までとなっています。トレーニングはモデルの精度を見ながら何度も繰り返すので、3回ぽっちじゃ全然足りません。
なので、今回はデータセットの準備まででroboflow君はお役御免とさせて頂きます。
ずいぶん長くなってしまったので、今回はここら辺で区切りましょ。次回はトレーニング済みのモデルでどのくらいの精度がでるのか試してみます。
まとめ
今回はroboflowの使い方を中心に解説してみました。
ご紹介したように多少デメリットはありますが、それでも他のツールと比較すると無料で出来る事が非常に多く、個人が趣味で遊ぶ程度ならroboflow一択かなと思っています。
せどりツール開発マガジン
最強せどりツールの完成までの道のりは下記のマガジンにまとめていきますので、良かったら読んでみて下さい('ω')ノ
この記事が面白かったら♡・フォローよろしくお願いしますm(_ _)m
下記のメンバーシップでは日々の活動報告・裏話なんかも掲示板で更新しています、一部の有料記事も読めちゃって初月無料ですので良かったらお試しを!