Step-by-step protocol

Let’s start deep learning on your Mac!

長岐清孝

岡山大学・資源植物科学研究所

Ver20220708

目次
1. 概要説明 p1
2. 本解析で使用するアプリケーション p2-3
3. Image classiﬁerの概要 p4-5
4. 学習のためのアノテーション (Image classiﬁer) p6
5. 学習 (Image classiﬁer) p7-17
6. Object detectorの概要 p18
7. 学習のためのアノテーション(Object detector) p19-26
8. 学習 (Object detector) p27-44
9. AIによるアノテーション p45-48
10. Image classiﬁerモデルを用いてアノテーションされたファイルの仕分け p49-52
11. Object detectorモデルを用いて検出された物体のカウント p53-56

1. 概要説明
これはMacを用いた画像の機械学習についてのプロトコルです。
このプロトコルには、「学習」、「画像ファイルの分類 (Image classiﬁer)」および「画像中の物体検出 (Object detector)」の方法が記されています。
これらの方法は５つのステップに分かれています。
1. 学習のためのアノテーション
2. 学習
3. 学習したAIによるアノテーション
4. ファイルの仕分け
5. 検出された物体のカウント
ステップ１および２は、Image classiﬁerとObject detectorで異なります。
ステップ３は共通ですが、ステップ４はImage classiﬁer用のオプション、ステップ５はObject detector用のオプションです。
1

2. 本解析で使用するアプリケーション
macOS (Catalina以降)
Create MLのグラフィカルインターフェースバージョンを使用するためには、Catalina (macOS 10.15)以降のmacOSがインストールされたMacが必要です。CatalinaとmacOS 11 (Big Sur)では使用できるCreate MLのバージョンが異なります。Create MLのバージョンは、version 1 (Catalina)、version 3 (Big Sur)となります。
Create ML in X-code（無料）Create MLは、アップル社がソフトウエア開発者向けに無料配布している機械学習のためのアプリケーションです。Create MLは、X-codeの一部として提供されており、App storeからダウンロード可能です。最新のXcodeであるX-code ver 12は、App storeアプリケーションからダウンロードでき、Create ML ver 3を含みます。Create ML ver 1を含む古いX-code 11は、App store (https://developer.apple.com/download/more/)からダウンロード可能です。本プロトコルでは、基本的にChromosome Research (Nagaki et al. 2021 inpress)で報告したCreate ML ver 1の使用法について解説し、ver 3で異なる部分について追加説明しています。
参考文献
Kiyotaka Nagaki, Tomoyuki Furuta, Naoki Yamaji, Daichi Kuniyoshi, Megumi Ishihara, Yuji Kishima, Minoru Murata, Atsushi
Hoshino and Hirotomo Takatsuka. Eﬀectiveness of Create ML in microscopy image classiﬁcations: A simple andinexpensive deep learning pipeline for non-data scientists. Chromosome Research in press, 2021.
22. 本解析で使用するアプリケーション（続き）
RectLabel（1週間無料、$2.99/month or $19.99/one-time)
RectLabel (https://rectlabel.com) は、Create MLで使用するアノテーションファイルを作成するのに便利なアプリケーションです。RectLabelは、Create MLによって生成されたモデルを使ったAIによるアノテーションにも使用できます。RectLabelは、App storeからダウンロード可能です。
CutSort（無料）
CutSort (https://github.com/tomoyukif/CutSort) は、RectLabelによって付加されたアノテーションに基づいて、フォルダ内の画像を仕分けするアプリケーションです。

3

3. Image classiﬁerの概要
Image classiﬁerは、画像ファイル全体の情報に基づいて画像を分類します。
例えば、画像を分裂細胞を含むもの(Dividing cells)とその他(Others)に分類することができます。

Dividing cells

Others4さらに、Image classiﬁerを用いて分類用のモデルを生成できれば、自動撮影機能つきの顕微鏡でスライドガラス上のサンプルを連続撮影して、それらから目的の細胞を含む画像だけをそのモデルとRectLabelおよびCutSotrを用いて選抜できます。

あたり

Create ML

RectLabel

はずれ54. 学習のためのアノテーション (Image classiﬁer)
Image classiﬁerのためのアノテーションは、簡単です。jpegかPNGフォーマットの画像を分けたい分類(class)名のついたフォルダーに別々に保存してください。

65. 学習 (Image classiﬁer)(1) X-codeを起動して“X-code”のプルダウンメニューから、“Open Developer Tool”内にある“Create ML”を選択してください。

75. 学習 (Image classiﬁer)(2) “New Document”ボタンをクリックしてください。

85. 学習 (Image classiﬁer)(3) “Image Classiﬁer”を選び、“Next”ボタンをクリックしてください。

95. 学習 (Image classiﬁer)(4) “Project Name”を入力し、“Next”ボタンをクリックしてください。

10

5. 学習 (Image classiﬁer)(5) project ﬁleを作成するために“Create”ボタンをクリックしてください。

115. 学習 (Image classiﬁer)(6) “Choose”をプルダウンして、「学習のためのアノテーション」で準備した学習用の画像をクラスごとに保存したフォルダーを選択してください。
うまく読み込みができるとアイテム数とクラス数が表示されます。

12

5. 学習 (Image classiﬁer)
オプション:
Augment Dataにチェックを入れることにより、加工した画像を生成し、学習に利用します。チェックしたエフェ
クトを加えた画像を生成し、そのセットを加えた学習を行うので、おおよそ、「チェックなしの計算時間 x （チェックの数+1回分）」の 計算時間がかかります。エフェクトの効果は学習に使用する画像に依存しますが、染色体画像の場合は、あまり効果的ではありませんでした。ですので、「試してみて、効果があれば使用する」程度の機能です。

13

5. 学習 (Image classiﬁer)(7) “Train” ボタンをクリックして学習を開始します。

14

5. 学習 (Image classiﬁer)
すぐに学習が始まり、多くの場合は短時間（数秒から数分）で終わります。

15

In the ver 3
Create ML ver 3では、学習が十分と判断された時は、開始時に自動的に選ばれた”Iterations”の数より少ない反復数で終了します。生成されたモデルの判定精度は、染色体画像に関しては、Create ML ver 1で生成されたモデルのものと同程度でした。

16

5. 学習 (Image classiﬁer)(8) 生成されたモデルを保存するには、“output” の下に表示されているファイルアイコンを保存したい場所にドラッグします。

17

6. Object detectorの概要
Object detectorでは、画像中の個々の物体を検出することができます。
例えば、画像中の個々の物体を分裂細胞“Chromosomes”とその他“others”として検出します。

18

7. 学習のためのアノテーション(Object detector)(1)RectLabelを起動し、“Open folder”ボタンをクリックしてください。開いたウインドウ内の“Change”ボタンをクリックして、アノテーションする画像の入っているフォルダとアノテーションを保存するフォルダ（今回は同じフォルダ）を選んでください。

19

7. 学習のためのアノテーション(Object detector)(2) “Settings”ボタンをクリックして、続いて開いたウインドウ内の“+”をクリックしてプロジェクト名を入力してください。

20

7. 学習のためのアノテーション(Object detector)(3) “Object”ボタンをクリックし、物体を登録するために“+”ボタンをクリックしてください。
続いて、物体名を入力し、それを示す枠の色を指定してください。

21

7. 学習のためのアノテーション(Object detector)(4) “Label fast”ボタンをクリックし、“Auto save”のチェックボックスにチェックを入れてください。このオプションをオンにすることにより、画像をスクロールするごとに自動的にアノテーションが保存されます。

22

7. 学習のためのアノテーション(Object detector)(5) “Edit”をプルダウンして、簡易的なアノテーションの場合は“Create box”を選択してください。
物体をより正確に多角形を用いて選択したい場合には“Create polygon”を選択してください。

23

7. 学習のためのアノテーション(Object detector)(6) 画像中の物体をアノテーションしてください。“Create box”を用いる場合は、対角にあたる２点をクリックすれば四角形を作ることができます。“Create polygon”の場合は、物体を囲うように複数の点をクリックし、起点と終点をつなぐためにリターンキーを押します。続いて“Object”をプルダウンして物体名を選択します。
矢印キーの右を押すと次の画像にスクロールできます。

24

学習のためのアノテーション(Object detector) 裏技？
「いちいち手動で大量にアノテーションしたくない」「少しでも楽したい」という場合は、少数のアノテーションで学習させたモデルや既存のモデルを使って「AIによるアノテーション（p45-47）」を行い、出力された結果の範囲や名前を修正すると、少ない労力で、大量のアノテーションを行うことができます。一見関係なさそうな物体を検出するモデルでも、個々の物体の範囲だけは正確に検出することがあり、この場合は物体の名前を変更するだけで、アノテーションを完了することができます。
ただし、この方法では、ボックスを用いたアノテーションになり、ポリゴンを用いて細かい範囲を指定することはできません。

25

7. 学習のためのアノテーション(Object detector)(7) 全ての画像中の物体のアノテーションが終了したら“Export”をプルダウンして“Export Create ML JSON ﬁle”を選択してください。そして、JSONファイルをアノテーションした画像と同一のフォルダに“annotations”という名前で保存してください。

26

8. 学習 (Object detector)(1)X-codeを起動して“X-code”のプルダウンメニューから、“Open Developer Tool”内にある“Create ML”を選択してください。

27

8. 学習 (Object detector)(2) “New Document”ボタンをクリックしてください。

28

8. 学習 (Object detector)(3) “Object Detector”を選択し、“Next”ボタンをクリックしてください。

29

8. 学習 (Object detector)(4) “Project Name”を入力し、“Next”ボタンをクリックしてください。

30

8. 学習 (Object detector)(5) project ﬁleを作成するために“Create”ボタンをクリックしてください。

31

8. 学習 (Object detector)(6) “Choose”をプルダウンして、「学習のためのアノテーション」で準備した学習用の画像とjsonファイルの入ったフォルダーを選択してください。うまく読み込みができるとアイテム数とクラス数が表示されます。

32

8. 学習 (Object detector)
オプション: Muximum Iterationsが自動的に表示されますが、必要に応じて数を変更することができます。私の経験では、自動的に表示された数値は、適切な値でした。

33

In the ver 3
Create ML ver 3では、Object Detectorに大きな変更がありました。
複雑な変更ですので、ver 1の学習の説明の後に変更点を説明します。

34

8. 学習 (Object detector)(7) “Train” ボタンをクリックして学習を開始します。

35

8. 学習 (Object detector)
すぐに学習が始まり、多くの場合は数十分から数時間で終わります。

36

8. 学習 (Object detector)(8) 生成されたモデルを保存するには、“output” の下に表示されているファイルアイコンを保存したい場所にドラッグします。

37

In the ver 3
Create ML ver 3では、Object Detectorに大きな変更がありました。

38

In the ver 3
Create ML ver 3のObject DetectorではAlgorithmが選択できるようになりました。

39

In the ver 3
Full Networkの場合は、ver 1と類似した学習を行い、生成されたモデルはmacOS 10.14以降で使用することができます。この場合、GridSizeというパラメータが表示され、1-30x1-30の範囲で選択できますので、学習画像の横x縦の比率に近い値を選択してください（例えば1300x1030の画像の場合、13x10または26x20）。この値が画像の縦横比と極端にずれると学習画像がゆがむことになり、学習結果の悪化につながります。また、理論的にはGrid Sizeの値が大きいほど近接した複数の物体を検出しやすくなりますが、Grid Sizeの値が大きいほど計算量が多くなり、学習が長時間になります。Grid Sizeの値をより大きくすれば、必ずより良いモデルができるわけではなく、画像のサイズ、画像に占める物体の割合などの条件によって結果は異なります。Batch Sizeは、一度のiterationに使用される画像の枚数ですが、使用するコンピューターの能力に合わせて自動選択されます。この値が大きいほど学習は正確になるので、手動で変更することもできますが、選んだ値が大きすぎると学習が長時間になります。

40

In the ver 3
Create ML ver 3のFull Networkを用いて生成されたモデルは、ver 1で生成されたモデルと同等の物体検出精度を持つことが多いです。

41

In the ver 3
Transfer Learningで生成されたモデルはmacOS 11以降でしか使用できません。この学習では、Macの写真アプリで物体検出に使われているモデルを利用して転移学習を行うので、学習に必要な物体数は各クラス80個以上とFull Networkの200個以上に比べて少ない画像で学習することができます（いずれもアップル社の推奨値であり、これら以下でも学習は可能です）。Batch Sizeは、一度のiterationに使用される画像の枚数ですが、使用するコンピューターの能力に合わせて自動選択されます。この値が大きいほど学習は正確になるので、手動で変更することもできますが、選んだ値が大きすぎると学習が長時間になります。

42

In the ver 3
Create ML ver 3のTransfer Learningを用いて生成されたモデルは、非常に小さいloss値を示しますが、染色体データの場合、RectLabelで確認すると１つの細胞を複数回検出する間違いが多くなっています。おそらくは、写真アプリのモデルが細胞の検出に向いていないためだと思われます
ので、検出する物体によって、転移学習の効果が異なる可能性があります。

43

In the ver 3
Create ML ver 3のObject Detectionでは、ver 1とは異なるモデルが出力されるので、双方のバージョンを用いてモデル生成すれば、目的にあったモデルが生成される可能性が高まるかもしれません。
これまでに述べなかったver 3
独自の機能として、「追加学習が容易」という点があります。
追加学習を行う場合（Iteration回数を増やす場合）、ver 1では最初からやり直す必要がありましたが、ver 3ではTrainingウィンドウ左上に表示される「TrainMore」というボタンを押せば、追加学習が可能になっています。
44

9. AIによるアノテーション(1) RectLabelを起動し、“Open folder”ボタンをクリックしてください。開いたウインドウ内の“Change”ボタンをクリックして、アノテーションする画像の入っているフォルダとアノテーションを保存するフォルダを選んでください。

45

9. AIによるアノテーション(2) “Core ML”をプルダウンして、“Load Core ML model”を選択してください。

46

9. AIによるアノテーション(3) “Core ML”をプルダウンして、アノテーションするために“Process all images using
Core ML”を選んでください。

47

9. AIによるアノテーション(4) アノテーションが終了すると、Image classiﬁerの場合は画像全体のアノテーションが、Object detectorの場合は個々の物体のアノテーションが右のウインドウに表示されます。
矢印キーの右を押すと次の画像にスクロールできます。

48

10. Image classiﬁerモデルを用いてアノテーションされたファイルの仕分け(1) ダウンロードされたCutSort-mainフォルダから“CutSort.app”の右クリックによりウインドウを表示し、続いて“Open”を選択し、開いたウインドウの“Open”ボタンをクリックしてください。

49

10. Image classiﬁerモデルを用いてアノテーションされたファイルの仕分け(2) “File Sorter”ボタンをクリックして、“Image classiﬁcation”を選択してください。

50

10. Image classiﬁerモデルを用いてアノテーションされたファイルの仕分け(3) RectLabelによって出力された画像と.xmlファイルを含むフォルダーを“Input directory”
ボタンをクリックして選択してください。続いて、出力先のフォルダーを“Output directory”
ボタンをクリックして指定してください。最後に“Run”ボタンをクリックすると画像が仕分けられます。

51

10. Image classiﬁerモデルを用いてアノテーションされたファイルの仕分け(4) 結果として、指定された出力フォルダにはクラスごとのフォルダが生成され、そのクラスに属する画像と.xmlファイルがクラスフォルダに格納されます。ファイル仕分けに関する情報が記載された“object̲list.csv”ファイルも同時に生成されます。

52

11. Object detectorモデルを用いて検出された物体のカウント(1) ダウンロードされたCutSort-mainフォルダから“CutSort.app”の右クリックによりウインドウを表示し、続いて“Open”を選択し、開いたウインドウの“Open”ボタンをクリックしてください。

53

11. Object detectorモデルを用いて検出された物体のカウント(2) “File Sorter”ボタンをクリックして、“Object detection on single images”を選択してください。

54

11. Object detectorモデルを用いて検出された物体のカウント(3) RectLabelによって出力された画像と.xmlファイルを含むフォルダーを“Input directory”ボタンをクリックして選択してください。続いて、出力先のフォルダーを“Output directory”ボタンをクリックして指定してください。最後に“Run”ボタンをクリックすると画像中の物体がカウントされます。

55

11. Object detectorモデルを用いて検出された物体のカウント(4) 結果として、指定された出力フォルダには画像中の物体に関する情報が記載された“object̲list.csv”ファイルが生成されます。このファイルには検出した物体がリストアップされていますので、エクセル等の表計算ソフトを使って全ての画像中に存在する各クラスに分類された物体の数を知ることができます。

56