iOS11 카메라와 CoreML(Vision)로 이미지 감지
iOS11
로 도입된 CoreML
와 그 상위 레이어의 Vision
를 사용해 화상 검출하는 샘플입니다.Xcode9
와 카메라를 사용하므로 iOS11
를 설치한 실제 기기가 필요합니다.요 전날
WWDC2017
세션 이런 분위기 덧붙여서 미국의 드라마 실리콘 밸리에 등장한 ホットドック🌭 かそうでないか
를 판정하는 앱이 개그로 유행했기 때문에, 여기에서도 바나나를 찍어 not 🌭
로 우케하고 있습니다.전 자료는
Brian
씨의 이쪽의 YouTube 동영상 입니다. (그에게 승낙)짧기 때문에 소스 코드를 대충 올립니다. (스토리 보드는 사용되지 않음)
ViewController.swift
import UIKit
import AVKit
import Vision
class ViewController: UIViewController, AVCaptureVideoDataOutputSampleBufferDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let captureSession = AVCaptureSession()
captureSession.sessionPreset = .photo
guard let captureDevice = AVCaptureDevice.default(for: .video) else { return }
guard let input = try? AVCaptureDeviceInput(device: captureDevice) else { return }
captureSession.addInput(input)
captureSession.startRunning()
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
view.layer.addSublayer(previewLayer)
previewLayer.frame = view.frame
let dataOutput = AVCaptureVideoDataOutput()
dataOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
captureSession.addOutput(dataOutput)
}
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else { return }
let request = VNCoreMLRequest(model: model) { (finishedReq, err) in
guard let results = finishedReq.results as? [VNClassificationObservation] else { return }
guard let firstObservation = results.first else { return }
print(firstObservation.identifier, firstObservation.confidence)
}
try? VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: [:]).perform([request])
}
}
또한 CoreML 학습 모델 파일(Inceptionv3.mlmodel)과 카메라 사용 권한 설정(Info.plist)이 필요합니다.
CoreML의 모델 파일를 다운로드합니다.
Inception v3
를 선택하십시오.다운로드한 모델 파일을 프로젝트에 복사합니다.
모델 파일을 선택하고
File Inspector > Target Membership
를 선택합니다. 그러면 자동으로 클래스 파일이 생성됩니다. (수초가 걸립니다)실제 기계를 잡고 실행합니다. 이런 느낌이 듭니다.
학습 모델을 바꾸고 싶다면
CoreML
에 해당하는 학습 학습 모델 파일은 여기에서도 다운로드 할 수 있습니다.MNIST, 랜드마크에서 위도 경도를 반환하거나 자동차 차종, 과일, 꽃에 특화된 학습 모델 등도 있습니다.
기본적으로는, 이하의
VNCoreMLModel
의 인수를 재기록하는 것만으로 움직입니다.CoreML 자체는 추론 기능뿐이므로, Keras나 Caffe등으로 학습 모델을 작성해, 전환 도구 로
CoreML
의 학습 모델 파일로 변환할 필요가 있습니다.
Reference
이 문제에 관하여(iOS11 카메라와 CoreML(Vision)로 이미지 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tfutada/items/939a889820bcef7f4171텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)