第5回 roboflow：学習

:::note info
本記事は、システムズナカシマの[ブログ記事](https://www.systems.nakashima.co.jp/rf/roboflow/blog/)を基に作成しています。
:::

こんにちは、システムズナカシマの松浦です。

今回は**学習**について解説します。

これまで作成したデータセットをもとにAIモデルを学習し、学習したAIモデルで推論を試す手順について解説します。

<iframe width="560" height="315" src="https://www.youtube.com/embed/N70QFuR1neA?si=oiIv-eOSNXF68R9A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

本記事をお読みになる前に、アカウントをお持ちでない方（[サインアップ](https://qiita.com/ShingoMatsuura/items/7d7a7940061f8990f50b#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)）、ワークスペース・プロジェクトの準備がお済みでない方は以下の記事をご確認ください。

 - [第1回：ワークスペースとプロジェクトの作成（1/2)](https://qiita.com/ShingoMatsuura/items/7d7a7940061f8990f50b)、[(2/2)](https://qiita.com/ShingoMatsuura/items/407bd9122bf07fd0ac4a)
 - [第2回：データのアップロード](https://qiita.com/ShingoMatsuura/items/5443bd69f2ee51ae6b1f)
 - [第3回：アノテーション（1/2）](https://qiita.com/ShingoMatsuura/items/23d241ec31727efd2e66)、[(2/2)](https://qiita.com/ShingoMatsuura/items/1a078681c6e370faeeb9)
 - [第4回：データ増強（オーグメンテーション）](https://qiita.com/ShingoMatsuura/items/64f0255c058b425fe8c1)

また、roboflowで何ができるか、概要を知りたい方は[「はじめてのroboflow」](https://qiita.com/ShingoMatsuura/items/c2df30e0b6109ab25c32)の記事をご参照ください。

## 学習
前回までの記事で作成したデータセットを利用しAIモデルの学習を行います。

画面左に表示されているメニューの「**Versions**」メニューを選択すると、前回の記事で作成したデータセットが表示されます。
その横に表示される「**Train with Roboflow**」ボタンを押下します。:point_up_tone1:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/7eb8e0a4-b6d4-8ca0-8348-13632236cd7d.png)

モデルの選択画面が表示されるので学習するモデルを選択します。ここでは「**Roboflow 3.0**」モデルを選択し「**Continue**」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/d8750b9c-cc5a-e251-3fab-7dde8a2830d6.png)

| モデルの種類 | 説明|
|:-:|:-:|
| **Roboflow 3.0**  |  推奨。Roboflowオリジナル。ホスティッドインファレンス、ローカル、エッジデバイスでの実行が可能 |
| **YOLOv11**  | ホスティッドインファレンス、ローカル実行が可能  |
| **YOLO-NAS**  | 推論スピードは速くない。ホスティッドインファレンス、ローカル実行が可能  |

「**Roboflow 3.0**」モデルを選択すると以下の画面が表示されます。用途に応じでモデルの種類を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/affffad0-851b-cb5e-1d08-5e021cb70ca9.png)

| モデルの種類 | 推論スピード| 学習時間 | 精度|
|:-:|:-:|:-:|:-:|
| **Fast**  |  速い :rabbit: | 短い  | 　低め :partly_sunny:　|
| **Accurate**  | 遅い :turtle:  | 長い |　高め :sunny:　|

「**Continue**」ボタンを押下すると「**Checkpoint**」を選択する画面が表示されるので、「**Train from Public Checkpoint**」を選択し「**Start Training**」ボタンを押下します。

[:point_up_tone1:ワンポイント]学習データを追加し次回学習を行う場合は「**Train from Previous Checkpoint**」を選択し学習を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/3295da84-c66b-435f-d239-814be37a16be.png)

学習が実行されたことを表す画面が表示されます。学習にどのくらいの時間がかかるか目安となる時間が表示されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/39d5aa31-2c50-4705-d667-251193eedc2a.png)

学習の状況はリアルタイムに画面上に表示されます。

## 学習完了
ログインに利用しているメールアドレスに以下の学習完了をお知らせるメールが届きます。:envelope_with_arrow:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/f3093069-df05-15de-d2ca-0aae17ca5153.png)

また、「**Versions**」メニューの学習を行なったバージョンに:white_check_mark:チェックマークが表示されます。画面右側には、「**mAP**」、「**Precision**」、「**Recall**」といった学習結果の指標が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/ac35eeae-fcd1-e4bd-fe35-26cdb36874b9.png)

| 項目 | 説明 |備考|
|:-:|:-:|:-:|
| **mAP**（平均適合率の平均）  | クラス毎の適合率の全体の平均値。  |  |
| **Precision**（適合率）  | 推論した結果がどれだけ正確だったか。  | そもそも推論されなかったものが考慮されない。 |
| **Recall**（再現率）  | 推論すべきものをどれだけ正確に推論できたか。  | 推論すべきものをどれだけ取りこぼしなく推論できたかを評価できる。 |


## 学習結果の評価
上記、「**mAP**」、「**Precision**」、「**Recall**」以外に「**Detailed Model Evaluation**」にて**混同行列**(Confusion Matrix)を確認することができます。
**混同行列**(Confusion Matrix)では、モデルの予測結果とアノテーションした際のクラスとの間の一致や不一致を表形式で確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/f0bc3358-244e-0c2c-ff9f-fefc8dde0ba2.png)

混同行列の利用方法について少し解説します。

表の横軸（**PREDICTION**）はモデルが推論した結果、縦軸（**GROUND TRUTH**）は、アノテーション時に設定したクラス（正解）を表します。
よって、表の対角線上の数値は正しくモデルが推論できたことを表しており、それ以外の数値に注意する必要があります。:thinking:

以下では、表の一番右にある列（**False Negative**）の「**ok_ebi**」行の確認を行なっています。セル数値を押下すると実際に「**ok_ebi**」が検出できなかった画像が確認できます。

このモデルの精度を上げるのにどういった画像を次回収集すべきかの判断材料になりますね!!　:cool: :100: :wink:

![confusion_matrix.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/d8fed586-eb0d-b84c-8533-085e8c15a9bf.gif)


## モデル実行
その他、簡単に学習したモデルでの推論を確認することができます。「**Try This Model**」を押下すると画像を選択し推論結果を確認することができます。:sunglasses:

![trythismodel.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/0e4618fc-d187-9c20-548f-d09de282501d.gif)

「**Try on mobile**」のQRコードをお手持ちのスマートフォンで読み取るとスマートフォンのカメラを利用し確認することができるので是非お試しください!!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882762/76f4edf2-1e23-6f92-c554-cdf85a212968.png)


## 最後に

いかがでしたでしょうか？:wink:

今回は、モデルの学習方法について説明しました。自分でGPUを用いた学習環境の準備が不要なので簡単に学習することができます。

次回は「[第6回 roboflow：推論結果の確認](https://qiita.com/ShingoMatsuura/items/14c5d717e9d9637f81c8)」にて学習したモデルによる推論結果の確認方法について説明します。

> ※記事一覧
> - [第1回：ワークスペースとプロジェクトの作成（1/2)](https://qiita.com/ShingoMatsuura/items/7d7a7940061f8990f50b)、[（2/2）](https://qiita.com/ShingoMatsuura/items/407bd9122bf07fd0ac4a)
> - [第2回：データのアップロード](https://qiita.com/ShingoMatsuura/items/5443bd69f2ee51ae6b1f)
> - [第3回：アノテーション（1/2）](https://qiita.com/ShingoMatsuura/items/23d241ec31727efd2e66)、[（2/2）](https://qiita.com/ShingoMatsuura/items/1a078681c6e370faeeb9)
> - [第4回：データ増強（オーグメンテーション）](https://qiita.com/ShingoMatsuura/items/64f0255c058b425fe8c1)
> - [第5回：学習](https://qiita.com/ShingoMatsuura/items/4ef2e9edd96191337c00)
> - [第6回：推論結果の確認](https://qiita.com/ShingoMatsuura/items/14c5d717e9d9637f81c8)

システムズナカシマでは、roboflowに関する個別相談・無料デモを行っております。
是非お気軽にご相談ください。

https://www.systems.nakashima.co.jp/inquiry/roboflow/contact/