앱개발

맥오에스 내장도구로 딥러닝 학습하기. (무설치, 무코딩, 무고인물)

제갈티 2024. 9. 10. 19:26

 

Xcode를 열면 세부 메뉴중에 CreateML 이란게 있죠

 

- 나름 역사가 제법 된, 맥용 딥러닝/머신러닝 개발도구 입니다.

- 처음엔 CoreML 이란 이름을 달고 나왔드랬죠.

- 딥러닝 알고리즘을 몰라도 학습이 가능한 하이엔드 유틸러티로 사용이 쉽고 심플합니다.

 

 

그걸 실행하면 이런게 뜨는데, 이게 CreateML 입니다.

 

- 그림처럼 다양한 딥러닝 학습이 가능한데, 그중 우리는 가장 간단한 이미지 분류를 해 보자구요.

- 참고로 두번째 아이콘인 멀티레이블 이미지 분류기는  이미지 한장에 복수개의 레이블을 갖는 분류기를 말합니다.

 

 

이게 이미지 분류 학습창 모습 입니다.

 

- 이 짤엔 트레이닝 데이타 영역에 이미 데이타가 채워진게 보이지만, 당근 원래는 비어있습니다.

- 특이한건, 애플의 앱 답게 이미지들이 들어있는 폴더를 드래그앤 드랍 하기만 하면  학습 데이타셋 입력이 된다는 것이죠~

 

 

폴더 방식의 학습 데이타셋 예시

 

- 이런식으로 클래스 별로 이미지들이 들어있는 폴더들의 상위폴더(여기선 cat_dog 폴더)를 비어있는 데이타셋 박스에 드래그앤드랍하여 넣기만하면 자동으로 학습쌍, 검증쌍의 데이타가 적절한 비율로 나뉘어져 들어가게 됩니다.

 

 

그리고 나서 상단에 파란색 학습버튼을 누르면 학습이 시작됩니다.

 

- 참 쉽죠?
- 물론 원하는 파라미터를 선택하거나(데이타 증강 옵션체크) 피쳐추출기를 선택한 후에 학습을 시작해도 됩니다.

 

 

딥신경망을 학습하는 모습

 

- 학습을 누르면 먼져 피쳐추출기(콘볼루셔널 신경망, Convnet)가 피쳐를 추출하게 되는데

- 이 단계에선 똘똘하게도 맥의 GPU가속(뉴럴엔진?)을 이용해 고속으로 피쳐를 추출 합니다.

- 이 과정이 딥러닝 학습에서 제일 오래걸리는 과정이죠.. 딥러닝이 딥한 이유도 피쳐추출기 때문에 깊어져서 그런거라는건 다들 아시죠?

 

피쳐추출시에 GPU를 사용하는 모습 보이죠?

 

- 파란 막대기창, 이건 맥에 유틸 폴더에 들어있는 활성상태보기 앱이 제공하는 창 이군요.

 

 

피쳐추출이 끝나고 CPU로 분류기(풀리 코넥티드 신경망, FCNet)를 학습하는 모습

 

- 분류기 학습은 피쳐추출보다 더 가벼운 연산이므로 CPU를 사용해서 연산하더군요...

- 이 그래프는 25에포크만 사용했지만 에포크 크기는 앞선 옵션에서 변경이 가능합니다.

 

 

학습이 끝난 모델은 이렇게 입력이미지를 드래그앤 드랍하여 추론(Inference)을 해 볼수도 있죠

 

- 전체 테스트 데이타셋을 드랙앤 드랍하여 Precision, Recall과 같은 성능분석을 해 볼수도 있습니다.

 

 

이건 학습된 모델을 XCode 용 앱개발용 모델로 내보내기 하는 창

 

- 모델 로딩 및 입출력 포맷을 명세해주기 때문에 딥러닝 추론앱 개발이 편리해지며

- Get 메뉴를 눌러서 학습모델을 다운로드 받아 딥러닝 추론용 앱개발에 활용이 가능하게 됩니다.

- 참고로 모델명은 CatDog_Classifyer.mlmodel  이런 형태가 되며 엄청나게 압축된(encoding) 형태로 저장됩니다.

 

요약 및 후기:

- 맥에서 CreateML 을 이용해 딥러닝모델을 학습하면

엔비댜 글카를 꼽을 필요도 없고, 리눅스같은걸 깔 필요도 없고, 파이토치 나 CUDA툴킷 같은걸 설치할 필요도없고

파이썬을 몰라도 된다.

- GPU로 딥러닝 학습중에도 맥은 뜨겁지도 않고 조용하며 전기를 적게 먹는다.

- 아이폰에서 실시간에 돌아가는 딥러닝 인식앱은 매우 가성비가 높다.

(작은 사이즈, 적은 전력, 내장 고성능 카메라, 실시간 추론속도, 무소음, 와이파이 연동)

- 참 쉽다.