5
3

More than 1 year has passed since last update.

iPhoneのカメラでリアルタイム物体検出 CoreMLモデルをつかえばかんたん

Posted at

iPhoneのカメラで機械学習モデルによる物体検出をします

Jan-14-2022 11-20-28.gif

スマホで物体検出できれば、色々つかえそう。でも、難しいそう

機械学習ってむずかしいのでは?

手軽に使えるCoreMLモデルで今すぐやってみれる

アップルはiPhoneでかんたんに使えるCoreMLという形式を用意してくれています。

手順

アップルの公式モデルズーCoreML-Modelsなどから物体検出モデルをダウンロード。

モデル実行リクエストを初期化。

guard let vnModel = try? VNCoreMLModel(for: yolov5().model) else { fatalError("Model initialization failed.") }
self.request = VNCoreMLRequest(model: vnModel)

カメラのフレームを食わせるだけ。

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {        
    guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }

    let handler = VNImageRequestHandler(cvPixelBuffer:buffer, orientation: .right, options: [:])
    do {
        try handler.perform([self.coreMLRequest])
        guard let results = self.coreMLRequest.results as? [VNRecognizedObjectObservation] else { return }
        for result in results {
            let label = observation.identifier
            let confidence = observation.confidence
            let boundingBox = observation.boundingBox
            print(label,confidence,boundingBox)
        }
    } catch let error {
        print(error)
        return nil
    }
}

フレーム毎に画像内で検出した物体のラベルと画像内座標を出力してくれます。

Optional("laptop") // 検出ラベル
0.6810466 // 信頼度
(0.002242632210254669, 0.002170730382204056, 0.21633444726467133, 0.09707524627447128) // 座標

視覚化はMLModelCameraといライブラリが便利です。

🐣


フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。

Twitter
Medium

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3