アニメ画像の昼/夜認識システムの作成：（1/3）「Create ML」を用いた機械学習モデルを作成

## 本シリーズの記事一覧:
- 1.（本記事）「Core ML」モデルを「Create ML」で既存のラベル付けされたアニメ画像を入力として用いてトレーニングする。
- [2. そのモデルと「Vision」フレームワークを用いて新規画像からラベルを取得する。](https://qiita.com/MaShunzhe/items/c829b3219b1afe335391)
- 3. それをもとに時間帯に合わせてmacOSの壁紙を変更する

## 意図：

1. Mac OSの壁紙として、時刻に合わせてさまざまなアニメ画像を設定するアプリの開発。

2. 機械学習を使用して、アニメ画像に自動的に昼または夜としてのマーク付けを行う。

アニメ画像から昼夜の状態を認識する必要があるため、機械学習を取り入れます。

このアプリは、例えば日中には昼の場面のさまざまなアニメ画像を壁紙として設定します。そして夜間には、夜の場面のさまざまなアニメ画像を壁紙に設定します。

### こちらは、「Create ML」を用いて機械学習モデルを作成する方法を解説する記事の第1部となります。

**早速始めましょう！**

## 機械学習モデルのトレーニング

まずは機械学習モデルのトレーニングと機械学習モデルファイルの取得に取り掛かりましょう。

### 「Create ML」ツールを開く

「Xcode」に搭載されている「Create ML」は、「iOS」、「iPadOS」、および「Mac OS」で使える機械学習モデル（拡張子.mlmodelのファイル）の生成に利用できる便利なツールで、「Xcode」内にインストールされています。

開くには、画面上部のシステムバーにある「Xcode」をクリックします。

<img width="738" alt="Screen Shot 2020-05-12 at 11.02.25 PM.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/bf67f773-de07-21de-2cab-a091cd2eb679.png">

そして、表示されたメニューから、「Open Developer Tool（開発者ツールを開く）」を選択し、「Create ML」をクリックして開きます

<img width="792" alt="Screen Shot 2020-05-12 at 11.04.58 PM.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/4e701271-c187-3a2d-9406-da7188d80b2a.png">

開いた「Create ML」ツールの画面上部のシステムバーにある「File（ファイル）」をクリックし、その後「New Project（新規プロジェクト）」をクリックします

<img width="530" alt="Screen Shot 2020-05-12 at 11.05.55 PM.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/4c545eeb-e807-849a-c891-af4eb57db649.png">

「Image Classifier（画像分類システム）」を選択します。画像を入力するとその画像のラベルを出力するモデルをトレーニングするということです。

<img width="838" alt="スクリーンショット 2020-05-12 午後11.30.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/1f4bfb16-2ce3-4a18-cf65-63b73328f18f.png">

次に、情報を入力して「Next（次）」をクリックします

「Create（作成）」をクリックしてモデルを作成します。

### 画像の収集

ここでは、プログラムに任意のアニメ画像の時間帯が昼か夜かを予測させることを目指しています。この機械学習モデルをトレーニングするには、2グループの画像、つまり昼の時間帯の画像と暗い（夜の）時間帯の画像を見つける必要があります。

そこで、「アニメ」という名前のフォルダーを作ります。そして、「アニメ」の中に2つのフォルダーを作り、名前は「昼」と「夜」にします。「アニメ」フォルダーの中にはそのほかには何も入れないでください。インターネットから何枚かアニメ画像を取得し、時間帯を判断して「昼」フォルダーか「夜」フォルダーにドラッグします。

<img width="869" alt="スクリーンショット 2020-05-13 午後3.50.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/c5b571dc-9458-871f-df14-4b1c11bc0a8e.png">

用意する画像数が多ければ多いほど、モデルはより正確になります。

### モデルのトレーニングの開始

次に、「Create ML」アプリに切り替えて、「Training Data（トレーニングデータ）」セクションを見つけ、「Choose（選択）」ドロップダウンメニューをクリックして「Select Files（ファイルを選択）」をクリックします

<img width="1312" alt="スクリーンショット 2020-05-13 午後3.52.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/2f272947-3845-c95d-29b1-cee0cb18858e.png">

先ほど作成したフォルダーを選択して「Open（開く）」をクリックします

<img width="927" alt="スクリーンショット 2020-05-13 午後3.58.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/3b79ba1f-57ac-4d19-81bf-55d9121ddbe3.png">

すると、黄色の矢印で、「Classes（クラス）」の総数、つまりカテゴリー数が指し示されて表示されます。青の矢印で用意した画像の総数が指し示されて表示されます。

#### 「Augmentations（拡張）」の設定

<img width="924" alt="スクリーンショット 2020-05-13 午後4.07.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/ee318c59-b6c6-c04d-1786-96241a969e3e.png">

実行ボタンをクリックしてトレーニングを開始します:

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.05.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/ed154973-15b8-0e63-a042-337f8c1bbefd.png">

#### 処理中

お茶でも楽しみながらトレーニングの完了を待ちます。

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.06.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/1358e065-de62-bec3-4e01-a2d5e8d6cd60.png">

#### トレーニング完了

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.07.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/c2f2d3d3-0fe8-8065-cdf8-9760ab417056.png">


## テスト用画像を何枚か用意してモデルをテストします

モデルのトレーニングが完了したので、どれほど正確なモデルになったかをテストしましょう。Testing（テスト）セクションに切り替えましょう。

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.22.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/3dc074f8-7c40-7f48-0353-bcd029b6cbe0.png">

次に、もう1つフォルダーを作り、名前を「Testing（テスト）」にします。その中に2つのフォルダーを作り、名前を「Day（昼）」と「Night（夜）」にします。新たにいくつかアニメの画像を取得して、それぞれのフォルダーに分類して保存します。

先ほどと同じように、「Choose（選択）」、「Select Files（ファイルを選択）」をクリックします。そしてこのフォルダーを選択します。

「Test Model（モデルをテスト）」をクリックします

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.26.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/20ee9eda-9378-64f0-6128-275d7733de10.png">

この例では正確性は100%となりました！素晴らしい結果です！

<img width="911" alt="スクリーンショット 2020-05-13 午後4.27.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/191dc0e6-8ca1-b87b-f9fe-198871507659.png">

お手元では正確性が低くても、心配することはありません。画像をさらに追加して再度トレーニングを開始してください。

## 直接テスト

画像をドラッグ・ドロップするだけでテストすることもできます。

「Output（出力）」をクリックし、左のパネルに画像をドラッグするだけで結果を確かめられます。

<img width="1379" alt="スクリーンショット 2020-05-14 午後3.54.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/d2e4977b-37a1-dba6-f7ff-6416fee5ae8c.png">

## モデルの書き出し

「Output（出力）」にあるモデルファイルを見つけ、フォルダーにドラッグするだけです。

<img width="1251" alt="スクリーンショット 2020-05-13 午後4.34.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635330/ce6c2161-9f6f-42d3-2f28-a95dc1c5afb6.png">

## 次の記事の内容

次の記事では、このモデルをコードから呼び出すことで、どのようにアニメ画像の時間帯の昼/夜の認識ができるかを解説します。

---

:relaxed: [Twitter @MszPro](https://twitter.com/MszPro)

:sunny: [私の公開されているQiita記事のリストをカテゴリー別にご覧いただけます。](http://mszpro.com/ioskiji/)
<img width="150" src="https://cdn.mszmagic.com/static-web-content/AppClipImage_small.png">