VisionOS でも Core ML はつかえる
とりあえずシンプルな使い方。
AnimeGANで顔画像をアニメ風にしてみる。
シンプルな手順
Core ML モデルファイルを Xcode に追加
モデル処理コードと SwiftUI で表示するコードを書く
シンプルに Window に Core ML で処理した画像を表示するだけなので(最初は Core ML つかえるか試すだけだからそれでいいの!)、 SwiftUI で書けばいい。 iOSと変わらない。
モデルハンドラークラス
普通に Vision の VNCoreMLRequest を実行するだけ。
import SwiftUI
import Vision
class ModelHandler: ObservableObject {
@Published var resultImage: UIImage?
private var request: VNCoreMLRequest!
init() {
setupModel()
}
private func setupModel() {
guard let model = try? VNCoreMLModel(for: animegan2face_paint_512_v2().model) else {
fatalError()
}
self.request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error in
guard let results = request.results, let firstResult = results.first as? VNPixelBufferObservation else {
return
}
let ciImage = CIImage(cvPixelBuffer: firstResult.pixelBuffer)
let context = CIContext()
guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return }
DispatchQueue.main.async {
self?.resultImage = UIImage(cgImage: cgImage)
}
})
}
func processImage(_ uiImage: UIImage) {
guard let ciImage = CIImage(image: uiImage) else {
fatalError()
}
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
DispatchQueue.global(qos: .userInteractive).async {
do {
try handler.perform([self.request])
} catch {
fatalError()
}
}
}
}
UI
import SwiftUI
struct ContentView: View {
@State private var inputImage: UIImage = UIImage(named: "myFace")!
@ObservedObject var modelHandler = ModelHandler()
var body: some View {
VStack {
Image(uiImage: inputImage)
.resizable()
.scaledToFit()
if let resultImage = modelHandler.resultImage {
Image(uiImage: resultImage)
.resizable()
.scaledToFit()
}
Button("ToAnime") {
modelHandler.processImage(inputImage)
}
}
.padding()
}
}
#Preview(windowStyle: .automatic) {
ContentView()
}
ボタンを押すとアニメ風になる。
これだけ。
とはいえ、Core ML がふつうに使えてよかった。
Core ML モデルは以下にあります。
いろいろやってみよう。
サンプルコードは以下
🐣
フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。
もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…
いずれも中間コストを省いたリーズナブルな価格でお請けできます。
お仕事のご相談はこちらまで
rockyshikoku@gmail.com
機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。