FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Create MLで学習させmlmodelファイルを得る

Create MLを使って学習させその結果であるmlmodelファイルを得る。

1)準備したデータについて
使う画像データはMNIST用の手書き文字のpng画像。28x28の白黒画像なので推奨(299x299以上)サイズよりだいぶ小さい。

学習データファイルのフォルダ構成

↑フォルダの構成はこのように学習用をtrainにし、その下に正解ラベルごとにフォルダで分類している。テスト用も同様。
データ数は学習用が100個 x 10種で1,000個、テスト用は10個 x 10種で100個としている。CreateMLを使うことが目的なのでデータ数は少なくしてる。

2)学習開始
参考サイト通りPlaygounrdで
import CreateMLUI
let buidler = MLImageClassifierBuilder()
buidler.showInLiveView()
とコピペし実行しAssistant Editorを表示させる。

Create MLの開始画面

↑この枠の所に準備していたデータ、”train”フォルダをドラッグ&ドロップすると学習が開始される。

3)学習結果

学習中のスクリーンショット

↑学習中は画像が次々表示(必要なの?)されつつプログレスバーが進んでいく。
ログも時折追加されていき、何やら進行してることがわかる。
待つこと数分で完了。

Create MLの学習結果

↑結果。

4)テスト
学習後にはテストデータに対して同じようにドラッグ&ドロップでテストできる。

テストデータに対する評価結果

テスト時の画面スクリーンショット

↑その結果。

5)mlmodelファイル出力
ImageClassifierの右にあるボタンっぽくないボタンをクリックすると

学習結果の保存画面

↑隠されている内容が表示されるので、ここでSaveボタンをクリックすると保存できる。

出力されたmlmodelファイル

↑出力された!


参考サイト
ドラッグ&ドロップで機械学習のモデルがつくれる「Create ML」の使い方 #WWDC18 - その後のその後


macOS Mojave 10.14
Xcode 10.1






(おまけ)
以上はうまくいった場合の話なんだけど、以下はそこへたどり着くまでの試行錯誤のどうでもいいお話。
最初はPlaygroundではなく普通にmacOSアプリから実行しようとした。
macOSアプリ(Objective-C)のプロジェクトを作成し必要なコードを書いてたら、、、

Module CreateML not foundエラー

などとエラーが出る。not found?まさかと思いリファレンスを見ると、

Create MLのリファレンス

まさかのSwiftだけじゃないか!
仕方ないので今度はSwiftでmacOSアプリのプロジェクトを作成し、必要なコードを書くも

Use of unresolved identifier MLImageClassifierBuilderエラー

またエラーだ。
ここでPlaygroundでないとダメと気が付いた。
ようやくPlaygoundにコードをコピペ。

訓練用データをドラッグ&ドロップすればいいと聞いていたのだが、何をドラッグすればいいのかよくわからず、、、

Create ML学習開始時の詳細画像

↑隠されているところを開くとTraining dataを指定するのが見えたのでここでフォルダを指定(これは問題ないと思うが)し、Startさせた。
ちなみにこの時指定したデータセットはMNISTの学習用データそのままで、55,000個ほどある。

Create ML学習開始後のローディング画面スクショ

↑開始後最初の15分はなにやらぐるぐるまわってるだけ。
データの数が多かったか?
ようやく変化があったと思ったら、、、

↑このように数字がどんどん表示されてるだけ。
1.5時間ほど放置していたがプログレスバーが全く進行せず、断念。Playgroundもうんともすんとも反応しないのでXcodeを強制終了。

今度はデータ数を減らしてみようと思い、数を減らしたデータセットを作成。

再挑戦しようとするもPlaygroundが動かない。Create MLなど関係なく、文字の表示さえできなくなってしまった。
Xcodeを再起動でもPlaygroundが動かない、、、
次はMacの再起動か、と思ったらそう言えばXcode10.1が来てたなと思い、10.1をダウンロード。
その後やってみたらうまくいけた、という流れ。

なので何が悪かったのかよくわからない。データの指定方法がまずかったのか、Xcode10.0がまずかったのか、データが多すぎたのか、メモリが足りなかったのか、、、

<< CreateMLで作成したmlmodelを使いCoreMLで予測する  TopPage  macOSでのスクロールビュー NSScrollView の最小実装 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1237-e1f3fe7c




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad