"地雷系","ゆるふわ"？どれも同じに見える...AIで判定しよう！[yolov5+RoboFlowで物体検出]

:::note info
この記事に登場する人物、人名、幼馴染はすべて**フィクション**です。
:::
# ある日のこと
幼馴染「どんなのが似合うかなぁ...」(写真を何枚かみせる)
私「地雷系、ゆるふわ？どれも同じに見えるぞい」
幼馴染「おまえも少しは世の中の流行に目を向けたほうがいいよ」
私「仕方ない...」
私「その写真、AIで学習させたら面白そうだなぁ...」
幼馴染「もう知らない...」
# Yolov5とRoboFlowで物体検出
今回は[GoogleColaboratory](https://colab.research.google.com)上で[yolov5](https://github.com/ultralytics/yolov5)を動かして、画像中の**女子の系統**を判別します。
## 材料
・RoboFlow
・yolov5
・GoogleColaboratory
・系統別に分けた写真（200枚）
・ふと平常心に戻った時に耐える力
# RoboFlowで写真をアノテーションする
今回は女子の顔で系統を見分けます。なのでAIに「写真のこの部分が顔やで！」と教えるために用意した写真全部の顔部分をアノテーションします。
## RoboFlowにアクセスする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/c39729b0-84a5-0973-51b5-a17cf27a7dd7.png)
RoboFlowにアクセスしたらSignupからアカウントを作成しましょう
## Projectを作成する
左上のCreateNewProjectから
・ProjectName
・ライセンス
・プロジェクトの種類
・何を見分けるのか
を入力してプロジェクトを作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/268bf734-118e-4f27-f27f-e480cde4578b.png)
## 地獄のアノテーション作業
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/67769d0b-378a-ed6f-00b2-392d6f0a5ac4.png)
プロジェクトが作成できたら、Select Folderより用意したファイルをアップロードしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/0ab427c3-580d-ed86-85ba-2a01d4c1f15d.png)
## アノテーションをする
写真をアップロードし終わったら写真をアノテーションしてタグ名をつけましょう。
（地雷系のほかにも**ゆるふわ**とか清楚とかを追加したぞ！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/98d1427b-f275-2abe-9ad3-c9524c0f1a13.png)
終わったら左上の　``Add Image to Dataset``ボタンを押しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/be0f22fa-1b90-d3fd-b364-3504d1cabc38.png)
``AddImages``でデータセットに追加です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/e9356005-2766-0f53-2cb9-dc300008b625.png)
``Generate New Version``を押して仕込みが終わりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/dd23e177-ba57-dab6-8fb5-8f8eeca438ab.png)
適当に設定をして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/e98141ca-d180-21ff-8203-4945d09ae864.png)
Export！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/761eaa3c-6589-f17b-ae43-efce5431f923.png)
``Yolov5　Pytroch``を選びましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/a28af782-0d4a-e9df-59e0-f6afa6dcab5f.png)
ここで出てきたコードを後で使うのでメモしておきましょう。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/b3180d2e-48b2-1bd7-e01e-f7a342f06724.png)
# Colab+yolov5で機械学習
データセットの準備が終わったのでColabを使って機械学習をしていきます。
コード
```python:GirlsType.ipynb
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

```
こんな感じで学習が進んでいきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/04319e63-3cc1-225f-cb3e-5074489b707d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/61af0da9-8471-f6ed-68dc-e4e4e2335e58.png)
# 検出してみる
終わったら以下のコードで検出してみましょう。
``source``で指定したフォルダにある画像について検出して、``runs/detect/exp``に検出済みの画像が出力されます
```python
#学習が終わったら
#Girls-1/imagesの中にある画像について判定する
!python detect.py --source Girls-1/images --weights /content/tmp/yolov5/runs/train/exp/weights/best.pt --conf 0.20
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/4ccec46a-27d5-931e-6182-bddb65d8a092.png)
私「あっ...!この人は**地雷系女子**だ！」
今回は100枚ぐらいしか学習できなかったので精度がものすごい低いですが何千枚単位で学習させればもっと実用的なものになります...!

# おまけ
私は`ゆるふわ系` でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509235/0d2c731e-bc55-4712-c589-88a1f4587e0b.png)
# 参考文献
[自意識の高い地雷系メイク女子の写真素材](https://www.pakutaso.com/20210533127post-34726.html)