CreateML로 iOS 꽃미남 분류기를 만듭니다. 드래그 앤 드롭 전용.
딥 러닝을 간단하게 할 수 있는 CreateML
수학과 같은 전문 지식은 필요하지 않습니다.
Apple 도구 CreateML을 사용하면 심층 학습 모델을 쉽게 배울 수 있습니다.
그리고 그 모델은 iOS 앱에서 사용할 수 있습니다.
데이터를 수집합시다.
교육 데이터
꽃미남 이미지 100 장과 꽃미남이 아닌 이미지 100 장을 모았습니다.
그리고 그들을 폴더로 만들었습니다.
트윈 크 폴더
미남이 아닌 폴더
테스트 데이터
교육 데이터와 동일한 폴더 구성으로 테스트 데이터의 폴더도 만듭니다.
꽃미남, 미남이 아니라, 10장씩입니다.
교육 데이터에 포함되지 않은 이미지를 준비해야 합니다.
분류의 하위 폴더 이름(이 경우 ikemen 및 ikemennot)은 교육 데이터와 동일해야 합니다.
CreateML 시작
Xcode를 Controll 키를 누른 채 클릭하고 OpenDeveloperTools, CreateML을 선택합니다.
CreateML 메뉴에서 Image Classification(이미지 분류)을 선택합니다.
그런 다음 원하는 프로젝트 이름을 입력합니다.
CreatML로 이미지 분류 모델 학습
Training Data와 Testing Data의 + 버튼을 클릭하여 준비한 폴더를 지정합니다.
그런 다음 ▶️Train 버튼을 누르면 학습이 시작됩니다.
순식간에 끝납니다.
테스트 데이터로 테스트 한 결과를 표시합니다.
트윈 크의 Precision89%, Recall80%.
모델이 잘 생긴 것으로 예측한 이미지의 89%가 정답.
트윈 크 이미지의 80 %가 트윈 크로 예측되었습니다.
미리보기를 선택하고 원본 이미지를 삭제하면 해당 이미지에서 테스트할 수 있습니다.
99%의 확신으로 미남이 아니라고 예측되었습니다.
모델을 iOS 모바일 앱에서 사용
mlmodel 얻기
Output 탭을 선택하면 학습한 모델이 표시됩니다.
이것은 CoreML 모델 형식입니다.
Get 버튼을 눌러 모델을 저장합니다.
저장된 모델을 Xcode 프로젝트로 드래그 앤 드롭합니다.
Vision 프레임워크로 모델 잡기
Vision 프레임워크로 mlmodel을 간편하게 사용할 수 있습니다.
VNCoreMLRequest에서 CoreML 모델에 대한 추론 요청을 만듭니다.
ViewController.swiftfunc setupVision() -> NSError? {
// Setup Vision parts
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ikemenclasifier 1", withExtension: "mlmodelc") else {
return NSError(domain: "VisionObjectRecognitionViewController", code: -1, userInfo: [NSLocalizedDescriptionKey: "Model file is missing"])
}
do {
let visionModel = try VNCoreMLModel(for: MLModel(contentsOf: modelURL))
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.mlCompletion(results)
}
})
})
self.mlRequest = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
return error
}
VNImageRequestHandler를 사용하여 제공된 이미지에서 CoreML 요청을 실행합니다.
ViewController.swiftlet imageRequestHandler = VNImageRequestHandler(ciImage: image, orientation: exifOrientation, options: [:])
do {
try imageRequestHandler.perform(self.mlRequest)
} catch {
print(error)
}
요청은 결과를 VNClassificationObservation으로 반환합니다.
identifier는 결과의 분류 이름입니다. 그것은 데이터의 폴더 이름과 동일합니다. 이 경우 "ikemen"또는 "ikemennot"입니다.
confidence는 백분율의 신뢰도입니다.
ViewController.swift func mlCompletion(_ results: [Any]) {
guard let observation = results.first as? VNClassificationObservation else {
print("its not ml observation")
return
}
print(observation.identifier,observation.confidence)
if observation.identifier == "ikemen" {
resultLabel.text = "イケメン\n\(floor(observation.confidence * 100))"
ikemenCount += 1
} else {
resultLabel.text = "イケメンではない\n\(floor(observation.confidence * 100))"
}
}
실제 앱은 여기
GitHub에 앱을 넣을 때.
htps : // 기주 b. 코 m / 조 응로 cky / 납 d 소메 C
나의 트위터를 따르십시오. 부탁드립니다.
htps : // 라고 해서 r. 이 m / 그럼 CK로 S11
일의 의뢰를 이 메일에 부탁합니다.
로쿠키 시코쿠 @ g 마이 l. 이 m
나중에 Looks Good For Me(나쁘지 않네), 눌러 주세요.
여기입니다↓
차오🐣!
Reference
이 문제에 관하여(CreateML로 iOS 꽃미남 분류기를 만듭니다. 드래그 앤 드롭 전용.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/john-rocky/items/4a547071b3e111341d19
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
교육 데이터
꽃미남 이미지 100 장과 꽃미남이 아닌 이미지 100 장을 모았습니다.
그리고 그들을 폴더로 만들었습니다.
트윈 크 폴더
미남이 아닌 폴더
테스트 데이터
교육 데이터와 동일한 폴더 구성으로 테스트 데이터의 폴더도 만듭니다.
꽃미남, 미남이 아니라, 10장씩입니다.
교육 데이터에 포함되지 않은 이미지를 준비해야 합니다.
분류의 하위 폴더 이름(이 경우 ikemen 및 ikemennot)은 교육 데이터와 동일해야 합니다.
CreateML 시작
Xcode를 Controll 키를 누른 채 클릭하고 OpenDeveloperTools, CreateML을 선택합니다.
CreateML 메뉴에서 Image Classification(이미지 분류)을 선택합니다.
그런 다음 원하는 프로젝트 이름을 입력합니다.
CreatML로 이미지 분류 모델 학습
Training Data와 Testing Data의 + 버튼을 클릭하여 준비한 폴더를 지정합니다.
그런 다음 ▶️Train 버튼을 누르면 학습이 시작됩니다.
순식간에 끝납니다.
테스트 데이터로 테스트 한 결과를 표시합니다.
트윈 크의 Precision89%, Recall80%.
모델이 잘 생긴 것으로 예측한 이미지의 89%가 정답.
트윈 크 이미지의 80 %가 트윈 크로 예측되었습니다.
미리보기를 선택하고 원본 이미지를 삭제하면 해당 이미지에서 테스트할 수 있습니다.
99%의 확신으로 미남이 아니라고 예측되었습니다.
모델을 iOS 모바일 앱에서 사용
mlmodel 얻기
Output 탭을 선택하면 학습한 모델이 표시됩니다.
이것은 CoreML 모델 형식입니다.
Get 버튼을 눌러 모델을 저장합니다.
저장된 모델을 Xcode 프로젝트로 드래그 앤 드롭합니다.
Vision 프레임워크로 모델 잡기
Vision 프레임워크로 mlmodel을 간편하게 사용할 수 있습니다.
VNCoreMLRequest에서 CoreML 모델에 대한 추론 요청을 만듭니다.
ViewController.swiftfunc setupVision() -> NSError? {
// Setup Vision parts
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ikemenclasifier 1", withExtension: "mlmodelc") else {
return NSError(domain: "VisionObjectRecognitionViewController", code: -1, userInfo: [NSLocalizedDescriptionKey: "Model file is missing"])
}
do {
let visionModel = try VNCoreMLModel(for: MLModel(contentsOf: modelURL))
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.mlCompletion(results)
}
})
})
self.mlRequest = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
return error
}
VNImageRequestHandler를 사용하여 제공된 이미지에서 CoreML 요청을 실행합니다.
ViewController.swiftlet imageRequestHandler = VNImageRequestHandler(ciImage: image, orientation: exifOrientation, options: [:])
do {
try imageRequestHandler.perform(self.mlRequest)
} catch {
print(error)
}
요청은 결과를 VNClassificationObservation으로 반환합니다.
identifier는 결과의 분류 이름입니다. 그것은 데이터의 폴더 이름과 동일합니다. 이 경우 "ikemen"또는 "ikemennot"입니다.
confidence는 백분율의 신뢰도입니다.
ViewController.swift func mlCompletion(_ results: [Any]) {
guard let observation = results.first as? VNClassificationObservation else {
print("its not ml observation")
return
}
print(observation.identifier,observation.confidence)
if observation.identifier == "ikemen" {
resultLabel.text = "イケメン\n\(floor(observation.confidence * 100))"
ikemenCount += 1
} else {
resultLabel.text = "イケメンではない\n\(floor(observation.confidence * 100))"
}
}
실제 앱은 여기
GitHub에 앱을 넣을 때.
htps : // 기주 b. 코 m / 조 응로 cky / 납 d 소메 C
나의 트위터를 따르십시오. 부탁드립니다.
htps : // 라고 해서 r. 이 m / 그럼 CK로 S11
일의 의뢰를 이 메일에 부탁합니다.
로쿠키 시코쿠 @ g 마이 l. 이 m
나중에 Looks Good For Me(나쁘지 않네), 눌러 주세요.
여기입니다↓
차오🐣!
Reference
이 문제에 관하여(CreateML로 iOS 꽃미남 분류기를 만듭니다. 드래그 앤 드롭 전용.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/john-rocky/items/4a547071b3e111341d19
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Training Data와 Testing Data의 + 버튼을 클릭하여 준비한 폴더를 지정합니다.
그런 다음 ▶️Train 버튼을 누르면 학습이 시작됩니다.
순식간에 끝납니다.
테스트 데이터로 테스트 한 결과를 표시합니다.
트윈 크의 Precision89%, Recall80%.
모델이 잘 생긴 것으로 예측한 이미지의 89%가 정답.
트윈 크 이미지의 80 %가 트윈 크로 예측되었습니다.
미리보기를 선택하고 원본 이미지를 삭제하면 해당 이미지에서 테스트할 수 있습니다.
99%의 확신으로 미남이 아니라고 예측되었습니다.
모델을 iOS 모바일 앱에서 사용
mlmodel 얻기
Output 탭을 선택하면 학습한 모델이 표시됩니다.
이것은 CoreML 모델 형식입니다.
Get 버튼을 눌러 모델을 저장합니다.
저장된 모델을 Xcode 프로젝트로 드래그 앤 드롭합니다.
Vision 프레임워크로 모델 잡기
Vision 프레임워크로 mlmodel을 간편하게 사용할 수 있습니다.
VNCoreMLRequest에서 CoreML 모델에 대한 추론 요청을 만듭니다.
ViewController.swiftfunc setupVision() -> NSError? {
// Setup Vision parts
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ikemenclasifier 1", withExtension: "mlmodelc") else {
return NSError(domain: "VisionObjectRecognitionViewController", code: -1, userInfo: [NSLocalizedDescriptionKey: "Model file is missing"])
}
do {
let visionModel = try VNCoreMLModel(for: MLModel(contentsOf: modelURL))
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.mlCompletion(results)
}
})
})
self.mlRequest = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
return error
}
VNImageRequestHandler를 사용하여 제공된 이미지에서 CoreML 요청을 실행합니다.
ViewController.swiftlet imageRequestHandler = VNImageRequestHandler(ciImage: image, orientation: exifOrientation, options: [:])
do {
try imageRequestHandler.perform(self.mlRequest)
} catch {
print(error)
}
요청은 결과를 VNClassificationObservation으로 반환합니다.
identifier는 결과의 분류 이름입니다. 그것은 데이터의 폴더 이름과 동일합니다. 이 경우 "ikemen"또는 "ikemennot"입니다.
confidence는 백분율의 신뢰도입니다.
ViewController.swift func mlCompletion(_ results: [Any]) {
guard let observation = results.first as? VNClassificationObservation else {
print("its not ml observation")
return
}
print(observation.identifier,observation.confidence)
if observation.identifier == "ikemen" {
resultLabel.text = "イケメン\n\(floor(observation.confidence * 100))"
ikemenCount += 1
} else {
resultLabel.text = "イケメンではない\n\(floor(observation.confidence * 100))"
}
}
실제 앱은 여기
GitHub에 앱을 넣을 때.
htps : // 기주 b. 코 m / 조 응로 cky / 납 d 소메 C
나의 트위터를 따르십시오. 부탁드립니다.
htps : // 라고 해서 r. 이 m / 그럼 CK로 S11
일의 의뢰를 이 메일에 부탁합니다.
로쿠키 시코쿠 @ g 마이 l. 이 m
나중에 Looks Good For Me(나쁘지 않네), 눌러 주세요.
여기입니다↓
차오🐣!
Reference
이 문제에 관하여(CreateML로 iOS 꽃미남 분류기를 만듭니다. 드래그 앤 드롭 전용.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/john-rocky/items/4a547071b3e111341d19
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func setupVision() -> NSError? {
// Setup Vision parts
let error: NSError! = nil
guard let modelURL = Bundle.main.url(forResource: "ikemenclasifier 1", withExtension: "mlmodelc") else {
return NSError(domain: "VisionObjectRecognitionViewController", code: -1, userInfo: [NSLocalizedDescriptionKey: "Model file is missing"])
}
do {
let visionModel = try VNCoreMLModel(for: MLModel(contentsOf: modelURL))
let objectRecognition = VNCoreMLRequest(model: visionModel, completionHandler: { (request, error) in
DispatchQueue.main.async(execute: {
// perform all the UI updates on the main queue
if let results = request.results {
self.mlCompletion(results)
}
})
})
self.mlRequest = [objectRecognition]
} catch let error as NSError {
print("Model loading went wrong: \(error)")
}
return error
}
let imageRequestHandler = VNImageRequestHandler(ciImage: image, orientation: exifOrientation, options: [:])
do {
try imageRequestHandler.perform(self.mlRequest)
} catch {
print(error)
}
func mlCompletion(_ results: [Any]) {
guard let observation = results.first as? VNClassificationObservation else {
print("its not ml observation")
return
}
print(observation.identifier,observation.confidence)
if observation.identifier == "ikemen" {
resultLabel.text = "イケメン\n\(floor(observation.confidence * 100))"
ikemenCount += 1
} else {
resultLabel.text = "イケメンではない\n\(floor(observation.confidence * 100))"
}
}
Reference
이 문제에 관하여(CreateML로 iOS 꽃미남 분류기를 만듭니다. 드래그 앤 드롭 전용.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/john-rocky/items/4a547071b3e111341d19텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)