[iPhone] Core ML を UIImagePickerController 使って機械学習を試す

Photo by Franck V. on Unsplash
機械学習をCore MLを使うとiOSアプリで試すことができます。人工知能、AIや機械学習のそれ自体は難しいのですが、アプリに簡単に展開できるようにAppleも考えているのでしょう

Swift 5.1
Xcode 11.4

 

Core ML

 
Appleの解説にありますがCore MLは学習させたモデルをアプリで使えるようにするフレームワークで、あくまで学習モデルを利用するだけです。(学習をさせるものとしてはCreate MLがあります)

学習モデルはAppleのページに載っているものをそのまま使えます。また他のTensorflow等からCore MLに使えるように変換するとか、Create MLで学習させたモデルを使うことができます。

以前にUIImagePickerControllerを使ったカメラアプリを簡単に作ってみましたが、これにCore MLを使えるように設定していきます。

iOSでカメラを扱うにはUIImagePickerControllerがあります。撮影して、保存、アルバムで確認するアプリが作れます。 ...

 

 

Core ML Model

 
学習モデルは以下のページにあります。
Core ML Models – Apple Developer

この中の「Resnet50」を使ってみます。この他のモデルもありますが、それぞれ学習方法が異なります。試しに使ってみるのも良いかと思います。

 

Core ML の実装

 
取得した学習モデル Resnet50.mlmodel をプロジェクト内にAddしておきます。

実装手順としては以下のようになります。

学習モデルのからVNCoreMLModelのインスタンスを生成します。

このインスタンスから画像をクラス分けした結果を取得するリクエストを出します。

ハンドラを実行して予測結果を取得する

このようになります。

 

サンプルコード

 
カメラで写真を撮ってその画像を予測させる簡単なアプリです。

Resnet50.mlmodel をAdd File to “xxx…”でプロジェクト内に追加します。

ViewController.swft

 
info.plistにカメラと写真の使用許可を取る設定をします

NSCameraUsageDescription
Privacy – Camera Usage Description
NSPhotoLibraryAddUsageDescription
Privacy – Photo Library Additions Usage Description

storyboardにUIImageView, Label, Buttonを配置します。Labelは複数行表示にしておきます。
それぞれを紐付けすると出来上がり
 

 
またAlbumを開いてアルバム内の写真を選択すると、同様に画像の予測をします。
 

着物が99%と出ましたが…
このモデルは物や動物のクラス分けがメインなのでしょうか

References:
機械学習 – Apple Developer
Core ML – Apple Developer

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Play Ground
本業と並行してやるには月額制なのがありがたいです。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールで「エンジニアになって職を得たい」のであれば手っ取り早いかもしれません


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする