この記事に登場する人物、人名、幼馴染はすべてフィクションです。
ある日のこと
幼馴染「どんなのが似合うかなぁ...」(写真を何枚かみせる)
私「地雷系、ゆるふわ?どれも同じに見えるぞい」
幼馴染「おまえも少しは世の中の流行に目を向けたほうがいいよ」
私「仕方ない...」
私「その写真、AIで学習させたら面白そうだなぁ...」
幼馴染「もう知らない...」
Yolov5とRoboFlowで物体検出
今回はGoogleColaboratory上でyolov5を動かして、画像中の女子の系統を判別します。
材料
・RoboFlow
・yolov5
・GoogleColaboratory
・系統別に分けた写真(200枚)
・ふと平常心に戻った時に耐える力
RoboFlowで写真をアノテーションする
今回は女子の顔で系統を見分けます。なのでAIに「写真のこの部分が顔やで!」と教えるために用意した写真全部の顔部分をアノテーションします。
RoboFlowにアクセスする
RoboFlowにアクセスしたらSignupからアカウントを作成しましょう
Projectを作成する
左上のCreateNewProjectから
・ProjectName
・ライセンス
・プロジェクトの種類
・何を見分けるのか
を入力してプロジェクトを作成しましょう。
地獄のアノテーション作業
プロジェクトが作成できたら、Select Folderより用意したファイルをアップロードしましょう。
アノテーションをする
写真をアップロードし終わったら写真をアノテーションしてタグ名をつけましょう。
(地雷系のほかにもゆるふわとか清楚とかを追加したぞ!)
終わったら左上の Add Image to Dataset
ボタンを押しましょう
AddImages
でデータセットに追加です
Generate New Version
を押して仕込みが終わりです。
適当に設定をして
Export!
Yolov5 Pytroch
を選びましょう
ここで出てきたコードを後で使うのでメモしておきましょう。
Colab+yolov5で機械学習
データセットの準備が終わったのでColabを使って機械学習をしていきます。
コード
WORKING_DIR = '/content/tmp'
!mkdir $WORKING_DIR
%cd $WORKING_DIR
!git clone https://github.com/ultralytics/yolov5 #GitHubからyolov5を持ってくる
%cd yolov5/
!pip install -qr requirements.txt
!pip install roboflow #RoboFlowのインストール
-#以下にさっきメモしたコードを張り付ける
from roboflow import Roboflow
rf = Roboflow(api_key="HOGEHOGE")
project = rf.workspace("HOGEHOGE").project("HOGEHOGE")
dataset = project.version(1).download("yolov5")
-#学習の開始 一番軽いモデル(yolov5s)で300epoch学習する
!python train.py --img 640 --batch 16 --epochs 300 --data /content/tmp/yolov5/Girls-1/data.yaml --weights yolov5s.pt
検出してみる
終わったら以下のコードで検出してみましょう。
source
で指定したフォルダにある画像について検出して、runs/detect/exp
に検出済みの画像が出力されます
#学習が終わったら
#Girls-1/imagesの中にある画像について判定する
!python detect.py --source Girls-1/images --weights /content/tmp/yolov5/runs/train/exp/weights/best.pt --conf 0.20
私「あっ...!この人は地雷系女子だ!」
今回は100枚ぐらいしか学習できなかったので精度がものすごい低いですが何千枚単位で学習させればもっと実用的なものになります...!