[애플 공식 문서] Integrating a Core ML Model into Your App(원문)
앱에 간단한 모델을 추가하고, 모델에 입력 데이터를 넣은 뒤, 모델 예측을 실행시키는 예제입니다.
SDKs
iOS 11.0+
Xcode 9.2+
Framework
Core ML
On This Page
개요
이번 간단한 앱은 학습된 간단한 모델 (MarsHabitatPricer.mlmodel
)을 사용하여 화성거주지 가격을 예측할 것이다.
여러분의 Xcode 프로젝트에 모델 넣기
모델을 Xcode 프로젝트에 넣기 위해서는 모델을 드레그해서 프로젝트 네비게이터에 넣어야한다.
Xcode에서 모델을 열면 모델 타입, 예상되는 입출력등 모델에대한 정보를 확인할 수 있다. 여기서 모델 입력값은 태양열 전지판과 온실 갯수, 그리고 거주지 크기(에이커 단위)이다.
코드에서 모델 생성하기
Xcode는 모델의 입출력 정보를 이용하여 자동으로 모델의 인터페이스를 생성하는데, 이 인터페이스는 여러분의 코드상에서 모델과 상호작용하는데 쓰일 것이다. MarsHabitatPricer.mlmodel
의 경우 Xcode는 MarsHabitatPricer
모델을 표현하는 인터페이스와 모델의 입력(MarsHabitatPricerInput
), 모델의 출력(MarsHabitatPricerOutput
)을 생성한다.
모델을 생성하려면 만들어진 MarsHabitatPricer
클래스 생성자를 사용하자.
let model = MarsHabitatPricer()
모델에 넣을 입력값 가져오기
이번의 간단한 앱에서는 사용자로부터 모델의 입력값을 가져오기위해 UIPickerView
를 사용한다.
func selectedRow(for feature: Feature) -> Int {
return pickerView.selectedRow(inComponent: feature.rawValue)
}
let solarPanels = pickerDataSource.value(for: selectedRow(for: .solarPanels), feature: .solarPanels)
let greenhouses = pickerDataSource.value(for: selectedRow(for: .greenhouses), feature: .greenhouses)
let size = pickerDataSource.value(for: selectedRow(for: .size), feature: .size)
예측을위해 모델 사용하기
MarsHabitatPricer
클래스는 자동으로 생성된 prediction(solarPanels:greenhouses:size:)
메소드를 가지는데, 이 메소드는 모델 입력값으로부터 가격을 예측하는데 쓰인다. 이번의경우 태양열 전지판과 온실 갯수, 그리고 거주지 크기(에이커 단위)를 넣는다. 이 메소드는 MarsHabitatPricerOutput
인스턴스를 결과로 내뱉는다.
guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else {
fatalError("Unexpected runtime error.")
}
예측된 가격을 가져오기위해 marsHabitatPricerOutput
의 price
프로퍼티에 접근하여 앱 UI에 표시하자.
let price = marsHabitatPricerOutput.price
priceLabel.text = priceFormatter.string(for: price)
주의
자동으로 생성된
prediction(solarPanels:greenhouses:size:)
메소드에서 에러를 던질수 있다. Core ML으로 작업하면서 만나게될 가장 일반적인 에러 종류는 입력 데이터의 내용과 모델이 기대하는 내용이 서로 일치하지 않는 경우입니다(가령 잘못된 이미지 포멧이라던지).
Core ML 앱을 빌드하고 실행하기
Xcode는 Core ML 모델을 디바이스에 최적화시켜 컴파일한 후 리소스 안에 넣어둘 것입니다. 최적화된 모델은 앱번들안에 들어가며, 이 모델은 앱이 디바이스에서 실행되는동안 예측을 만드는데 쓰입니다.
함께 보기
첫번째 단계
Core ML 모델 가져오기(원문) 여러분의 앱에서 사용할 Core ML 모델 얻기
학습된 모델을 Core ML 모델로 변환하기(원문) 제3자 기계학습 툴에서 학습된 모델을 Core ML 포멧으로 변환하기
'Swift와 iOS > 기술' 카테고리의 다른 글
iOS에서 엑셀파일 만들기(feat. libxlsxwriter) (771) | 2018.06.01 |
---|---|
[번역] 약간의 iOS 개발 팁 (0) | 2018.05.20 |
iOS 기기에서 Tensorflow 모델 실행시키는 방법들 (0) | 2018.05.16 |
[번역]iOS11: 모두를 위한 기계학습 (2) | 2017.08.15 |
[번역]인스트루먼트없이 누수 뷰컨트롤러 잡아내기 (363) | 2017.08.15 |
WRITTEN BY
- tucan.dev
개인 iOS 개발, tucan9389