Last active
July 4, 2017 11:37
-
-
Save jknthn/f0068907a46659501477b76a62a3cb19 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension LiveCameraViewController: LiveCameraDelegate { | |
private let ageModel = try! VNCoreMLModel(for: AgeNet().model) | |
private let genderModel = try! VNCoreMLModel(for: GenderNet().model) | |
func createAgeRequest() -> VNCoreMLRequest { | |
return VNCoreMLRequest(model: ageModel, completionHandler: onClassification) | |
} | |
func createGenderRequest() -> VNCoreMLRequest { | |
return VNCoreMLRequest(model: genderModel, completionHandler: onClassification) | |
} | |
func onClassification(request: VNRequest, error: Error?) { | |
guard | |
let results = request.results as? [VNClassificationObservation], | |
let result = results.first | |
else { | |
return | |
} | |
DispatchQueue.main.async { [weak self] in | |
if results.count == 2 { // Gender | |
self?.updateGender(label: result.identifier, confidence: result.confidence) | |
} else { // Age | |
self?.updateAge(label: result.identifier, confidence: result.confidence) | |
} | |
} | |
} | |
func didUpdateBuffer(_ buffer: CMSampleBuffer, on camera: LiveCamera) { | |
let handler = VNImageRequestHandler(cvPixelBuffer: CMSampleBufferGetImageBuffer(buffer)!, options: [:]) | |
try? handler.perform([createAgeRequest(), createGenderRequest()]) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment