今回は画像認識AIのモデルを作成して、映像上で識別させるというものを作っていきます。
(*Pythonで人物の認識ができるコードができている前提で書いていきます)
AIでのモデル作成
Ultralytics YOLOv8 は、あなた自身のデータで「新しい物体クラス」を学習できるそうなのでまずは新しい物体クラスを作成していきます。
様々なツールがあるそうですが今回はRoboflowというツールを使って新しい物体クラスの作成をしました。
Roboflow
Roboflowページ↓
https://roboflow.com/
Youtubeなどで「roboflow」と検索するとわかりやすい動画なども出てきますが、こちらでも一応手順を書いていきます。
初めにアカウントのセットアップを行っていきます。作成するか、Googleアカウントなどでログインもできます。


初めのアカウント設定が終わるとWorkspaceを作成する上記のような画面になるので好きな名前を設定して2つのプランのGrowthプランを選んでください。
赤枠のGrowthプランは14日間のみの無料プランですが今回使っているYOLOでの利用のためにこちらを選んでください。クレジットカードの登録は必要ないため14日過ぎていつの間にか料金が発生していたなどの心配はありません。
青枠のPublicプランの概要としては、アップロードした画像データやアノテーションしたデータがRoboflow Universeというグローバル環境に公開されるというものです

Workspaceの作成を終わらせると上記のような画面になると思います。この画面になったら左のProjectを選択して「New Project」で新たにProjectを作成してください。

新たにProjectを作成するとProjectの名前とTypeを決める画面になります。
名前は好きな名前に設定してもらって、Typeは様々ありそれぞれ学習するものによって変更するのですが今回は「Object Detection」を選んで作成してください。
Annotation Groupというのは複数のProjectをマージする際に利用するのがこちらですので学習したい物の名前などに設定しておけばOKです。

Project作成後はこのような画面になるのでUpload Dataに画像、動画、PDF、別のアノテーションツールを使った作成済みのデータこれら4つから学習させるための素材提供をしていきます。

今回は水筒を画像として提供して学習させていきます。学習させるための素材をアップロードしたら右上の「Save and Continue」を押してSaveを行ってください。

「Save and Continue」を押すとこのような画面になると思います、右のタブはどのようにしてラベル付けを行っていくかの選択になります。(画像のどの部分を学習させるかの選択のようなもの)今回は真ん中の「Manual Labeling」を選択してください。

「Manual Labeling」を選択すると、次はAnnotationする画面になります。
アップロードした画像をアノテーションする必要があるので「Start Annotating」を押してください



アノテーションする方法は様々あるのですが、今回は右のタブの上から二番目、三番目のみを使って行いました。

このようにアノテーションしたい範囲を正確に囲うとポップアップが出てくるのでラベルの名前を設定してSaveしてください。

すべての画像がUnannotatedからAnnotatedに移動したらアノテーションは完了です。
次にレビューをしてもらうため「Submit For Review」を選択してください。

するとこのような画面になり、「Review」の方に先ほどアノテーションした画像などが入っていると思います。ここで「Labeler」と「Reviewer」が違った場合自身の画面には表示されないのですが今回は作業(Label)も確認(Review)も自分自身で行うため表示されています。

「Review」を押すと先程アノテーションした画像のレビューを行う画面になります。

画像をクリックするとレビューに入り、「Approve」は◯、「Reject」は✕のような意味です。今回はすべて自分でアノテーションを行ったのですべて「Approve」で大丈夫です。
「Reject」を選択した場合はアノテーションする人に画像が返還されてもう一度アノテーションして貰う必要があります


「To Do」から「Approved」に画像が移っていたらOKです、「Add Approved to Dataset」をクリックすると右の画像のようなタブが出てくるのでそのまま「Add images」をクリックして大丈夫です。

完了したら初めの画面に戻って「Versions」を押して、様々な処理や、拡張機能がありますが基本的にはそのまま進んで「Create」を押してください。


「Create」後は左のような画面になるので、中央の「Custom Train」を選択、右の画面になったら様々なモデルがありますが今回は「Roboflow3.0」で作っていきます。

次に進むとこのような2つの項目が出ると思います、「Fast」は推論スピードと学習スピードが早いが少し制度が落ちてしまうもの、「Accurate」逆で推論、学習スピードは少し遅いが制度を高めることができるものです。今回は映像上のものをリアルタイムで素早く処理していきたいので「Fast」の方を選んでいきたいと思います。

次の画面では「Train from Public Checkpoint」を選択して「Start Training」で学習を始めてください。

このような画面になったら学習中なのでしばらく時間を置いてください。

こうなると完了です。「Try This Model」で、画像を投稿するとこのVersionsでの精度を確認することができます。

精度が確認できたら画面上部の「Download Dataset」を押してFormatを「YOLOv8」に変更してzipフォルダをダウンロードしてください。ダウンロードが終わったらzipフォルダを自身の好きな場所に解答してください(解凍場所は今後必要になるので覚えておいてください)解答したフォルダの中にdata.yamlというファイルがあるのを確認してください。
確認ができたらコントロールパネルを開いてUltralytics YOLOv8 をインストールしてください(必要に応じて)
pip install ultralytics

インストールが完了したらdata.yamlファイルを編集するために開いて上部の
「train」「val」「test」のパスをフルパスで指定してあげてください。
編集が完了したらコントロールパネルに戻り、ディレクトリを解凍したフォルダまで移動してトレーニングを実行するパスを書き込みます
yolo task=detect mode=train model=yolov8n.pt data="C:/Users/AI-001/test2.v2i.yolov8/data.yaml" epochs=50 imgsz=640
Code language: JavaScript (javascript)
エラーが起こらなければ成功で自動でトレーニング開始されます、エラーがある場合はパスの指定ミスの場合が多いのでもう一度よく確認して実行してください。
トレーニングが終了するとフォルダの中に「runs」フォルダが作成され、その中にbest.ptというファイルがあることを確認してください。このbest.ptというのが学習済モデルです。
ここまでできたら後はYOLO機能実装済みのコードに学習済モデルを読み込ませるだけです。
model = YOLO("C:/Users/AI-001/test2.v2i.yolov8/runs/detect/train/weights/best.pt")
Code language: JavaScript (javascript)

このように学習データを元に識別されると思います。
まとめ
初めて機械学習に触れたがRoboflowはわかりやすい動画などもあり、かなり取っ掛かりやすかったです。