SwiftUIでCoreML。- Swift Playgrounds
まず必要なもの、CoreMLの機械学習モデル(MobileNetV2FP16を使います)、UIImageな拡張ファイル(UIimageExtension.swift)、以下参考。
https://note.com/dngri/n/nbc7f10190cea
前回のCoreMLのXcode版の方にも方法を乗っけていますが、同じファイルを使えます(ファイルの中身をコピペでできます)。
Swift Playgroundsで同じことやるには少し手を加えないといけないので、そのへんをやってみます。
import PlaygroundSupport
そして最後に表示させるため
let content = ContentView()
PlaygroundPage.current.liveView = UIHostingController(rootView: content)
MobileNetV2FP16を取り込みます。
let model = MobileNetV2FP16()
このままではこの"MobileNetV2FP16"が使えません。Xcodeで変換したものを使います。変換方法は以下。
"MobileNetV2FP16"を選んで、右側の赤丸部分を押すと、
こんな感じでコードが出てくるのでこれをコピーして、Swift Playgroundsのモジュールにファイルを作って先ほどコピーしたものをペーストします。今回はclassfication.swiftというファイルを作ってペーストしています。
このファイルの"class"や"func" や"init"の前に"public"をまずつけていきます。publicをつけることと、モデル全体を読み込ませる方法が必要のようです。
で無料配布の"動作確認版(無料)"を参考にさせてもらいました。あとは以下のコードに修正しました。
class var urlOfModelInThisBundle : URL {
return try! MLModel.compileModel(at: URL(fileReferenceLiteralResourceName: "MobileNetV2FP16.mlmodel" ))
withExtension:"mlmodelc")!
このコードでMobileNetV2FP16.mlmodelを使えるようにしているようです。
モジュールとしては以上の2つ、UIImageの拡張のファイル、MobileNetV2FP16.mlmodelを読み込ませるファイルを置いています。
これで準備終了ですあと実行してみます。
基本的には前のコードと同じでうまくいきますが、画像の表示ができません。認識はしてるみたいなので認識は問題ないです。
この記事が気に入ったらサポートをしてみませんか?