画像さえあればOK！ノーコードで画像分類モデルをつくる方法

## モミの木とコニファーの見分けがつかないので機械学習してみる
クリスマスということで...こちらは**モミの木**

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/63d409f6-a6b6-1cb9-d8f8-fd812a925bf5.png">

こちらは**コニファー**
<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/9fd9cebf-29fb-9543-0ccf-30bd003711ca.png">

うーん、よく似てる！
これを分類するモデルを **Teacherble Machine** でつくりました。

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/4dcf7a81-4c27-fea2-d4c4-3cbffb91075a.png">


## Teacherble Machine
Teacherble Machine は **Google** が開発したウェブベースの機械学習ツールです。

https://teachablemachine.withgoogle.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/43ed75f3-886a-56a1-921f-d8fec574cbfb.png)

作れるモデルは以下の3つです。

:::note
- **画像分類**：画像に対して「犬」「猫」など
- **音声分類**：「ギターの音」「人の声」など
- **姿勢分類**：「正しいスクワット」「正しくないスクワット」など
:::

これらの機械学習モデルを画像データや音声データをアップロードするだけでつくることができます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/07763865-60a4-13e1-3492-0ff0ad16ecab.png)

また、モデルを **TensorFlow の対応した形式でエクスポートすることができ、ウェブアプリに統合できます**。

## モミの木分類モデルを作ってみる

[Teacherble Machine のウェブサイト](https://teachablemachine.withgoogle.com/)からプロジェクトを作成します。
`画像プロジェクト`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/a9d1bd4d-37eb-b0d4-80ac-217fd1c8d76f.png)

`標準の画像モデル`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/0412f8e5-c20b-68cc-79a7-9a96d3dcb42b.png)

こちらがプロジェクトページです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/44a1f5c9-20ae-c5f7-0e03-ad9df48bf1d0.png)

左側の`Class`に分類したいデータ名を入れそれぞれに画像をアップロードします。

:::note
#### 画像のアップロードにウェブカメラを使うことができます

例えば、じゃんけんの手のデータをアップしたいときは、わざわざ画像を探す必要がなく、ウェブカメラでじゃんけんの手を出せばすぐにデータを貯めることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/a41698f0-af5d-b144-d189-ac3765142b67.png)
:::

今回は **"モミの木"**、**"コニファー"**、**"その他"** の3つのクラスをつくりました。

![qiita_tm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/28674b29-bd7c-e4ae-5176-4aa1277e4ef6.png)

こんな感じで、できるだけ大きさや色合いの違う画像データをそれぞれのクラスにアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/443f346c-6120-8b3a-9167-ac954bbc8d04.png)

:::note warn
可能な限りたくさんの画像を用意しましょう
:::

**"その他"** には色々な種類の木の画像を入れました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/b126f45e-b826-f98a-49f2-065a37b18314.png)

画像を入れたら、真ん中の`トレーニング`を押して学習を開始します。エポックやバッチサイズなどパラメータも調整できます。

<img width="60%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/088f91db-011f-ce41-8b9e-263a6981cbf4.png">

#### これで終了です！とてつもなく簡単ですね。!

実際に画面右側の`プレビュー`にテストデータを入れることで性能を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/82a39e7a-2e4f-74a8-15c1-d4912e97ff3e.png)

コニファーは迷いなし。

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/7edf36e3-8bee-9b52-5363-ffbd17984275.png">

## まとめ
`モデルをエクスポートする`からモデルを使うことができます！めちゃくちゃ簡単...！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/b857bed0-6da3-6363-f72c-40644d50d28f.png)

Googleドライブとも連携できてプロジェクトを保存できます。

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/47db33ff-989e-462e-73e4-eae31d61beb1.png">


正直今回はチューニングをするまでもなく、トレーニング画像が少なすぎましたが、それなりに試せるものができました。

特にウェブカメラを使えるのは良いですね。ノーコードツールということで、モデルのエクスポートをしても良くわからないという方もこのプロジェクト画面でプレゼンテーションできるのは良いと思います！