이 자습서에서는 iOS 및 macOS 앱에서 사용할 맞춤형 개 품종 분류 Core ML 모델을 훈련하는 방법을 배웁니다. 이 튜토리얼이 끝나면 Core ML 모델이 5가지 다른 품종을 구별할 수 있을 것입니다!
Apple이 몇 년 전 기계 학습 및 인공 지능 스타트업 Turi를 2억 달러 이상에 인수한 것을 기억할 수 있습니다. 짧은 시간에 고급 기계 학습 모델을 생성할 수 있는 강력한 도구를 제공합니다.
이 자습서에서는 Mac에 Turi Create를 설치하고, Python 스크립트를 만들고, 해당 스크립트를 사용하여 Xcode 프로젝트로 직접 끌어서 앱에서 빠르게 구현할 수 있는 Core ML 모델을 교육하는 방법을 배웁니다.피>
시작하기
실제 기계 학습 부분을 시작하기 전에 먼저 Turi 및 Python 설치를 제거하고 하드웨어와 소프트웨어가 Turi의 요구 사항을 충족하는지 확인해야 합니다.
요구사항
설치하는 다른 소프트웨어와 마찬가지로 Turi Create에는 공식 GitHub 페이지에서 찾을 수 있는 몇 가지 특정 요구 사항이 있습니다.
Turi Create 지원:
- macOS 10.12 이상
- Linux(glibc 2.12 이상 포함)
- Windows 10(WSL 사용)
Turi Create 요구 사항:
- 파이썬 2.7, 3.5, 3.6
- x86_64 아키텍처
- 최소 4GB RAM
결론은 Mac이 합리적으로 new, Turi Create를 실행할 수 있어야 합니다. 원한다면 다른 운영 체제를 따라갈 수 있습니다. 그러나 작동하려면 몇 가지 단계를 변경해야 할 수도 있습니다.
설치
Turi Create 설치는 특히 명령줄에 익숙하다면 매우 간단합니다. 최신 버전의 Python을 사용하도록 선택할 수 있지만 이 자습서에서는 Python 2.7을 사용합니다.
MacOS Mojave에서는 Python 2.7이 기본적으로 설치되어 있으므로 버전을 확인하기만 하면 됩니다. Mac에서 응용 프로그램> 유틸리티> Te를 엽니다. rminal 또는 단순히 키보드 shortcut 명령으로 검색 -스페이스.
Mac에서 Python 버전을 확인하려면 다음을 입력하십시오.
$ python - version
그러면 Python 버전이 표시되며 콘솔은 다음과 같이 표시됩니다.
버전이 Python 2.7이 아니거나 어떤 이유로 컴퓨터에 설치되지 않은 경우 이 링크에서 설치해야 합니다. 출력이 나와 비슷하면 계속 진행할 준비가 된 것입니다.
참고: Apple이 권장하는 가상 머신을 사용하여 Turi Create를 설치하는 것을 선호하는 사람들도 있습니다. 하지만 간단하게 하기 위해 직접 설치하기만 하면 됩니다.Turi Create를 설치하려면 터미널 창에 다음을 입력하세요.
$ pip install turicreate
그게 다야! Turi Create가 Mac에 성공적으로 설치되었으며 사용할 준비가 되었습니다. 이제 분류, 탐지, 회귀 및 기타 유형의 모델을 구축할 수 있습니다.
데이터 세트
모든 기계 학습 모델에는 데이터 세트가 필요합니다. 이 튜토리얼에서는 이미지 분류가 필요한 간단한 개 품종 분류 모델을 훈련하는 방법을 배우게 됩니다. 제가 사용할 데이터는 Stanford University의 Dogs Dataset에서 가져왔습니다.
Turi가 사전 분류된 이미지를 인식할 수 있으려면 이미지가 나타내는 것을 기반으로 구성해야 합니다. 예를 들어, 골든 리트리버의 모든 이미지는 한 폴더에 있고 래브라두들의 모든 사진은 다른 폴더에 있습니다.
간단하게 하기 위해 Stanford의 데이터 세트에 있는 수백 개 중 5개 품종만 사용할 것이지만 원하는 만큼 사용할 수 있습니다. 나는 당신을 위해 그것을 조직하고 그것을 위한 저장소를 만들었습니다. 개 품종을 더 추가하려면 폴더를 더 추가하고 원하는 대로 이름을 지정하면 됩니다.
폴더 구조
지금쯤이면 데이터 세트를 정렬하는 방법이 모델을 올바르게 훈련시키는 데 중요하다는 것을 알게 되었을 것입니다. Turi Create에서 무엇이 어디로 가는지 알 수 있는 다른 방법은 없습니다. 지금 잠시 시간을 내어 자신을 정리하세요.
그림 2: 폴더 구조 시작 이 계층 다이어그램은 모든 것을 설명해야 하며 이 튜토리얼을 계속하기 전에 이 순서로 폴더를 가져와야 합니다. 이름을 변경하거나 다른 방식으로 정렬하려면 이를 기록해 두셔야 합니다.
분류기 훈련
설정을 마치면 이 튜토리얼의 내용을 자세히 알아볼 준비가 된 것입니다. 실제로 분류기를 훈련시키세요. 우리는 주로 Python으로 작업하지만 이전에 Python을 사용한 적이 없다면 괜찮습니다. 진행하면서 각 단계를 설명하겠습니다. 질문이 있는 경우 주저하지 말고 아래에 댓글을 남겨주세요.
파이썬 파일
먼저 생각을 적을 장소가 필요합니다(물론 Python에서). Atom과 같은 Python을 지원하는 편집기나 PyCharm과 같은 통합 개발 환경이 이미 있는 경우 이를 사용하여
dog_breeds.py
이라는 빈 파일을 만들 수 있습니다. .저처럼 더 개발자다운 경로를 선호한다면 터미널을 사용하여 동일한 작업을 수행할 수 있습니다.
ml_classifier
안에 이 파일을 생성해야 합니다. 폴더,images
옆 계층 구조가 다음과 같이 보이도록 폴더:그림 3: Python 파일을 사용한 폴더 구조 새 파일을 생성하려면 먼저 대상 디렉토리로 들어가십시오:
$ cd ml_classifier
그런 다음
dog_breeds.py
이라는 새 파일을 만듭니다. .$ touch dog_breeds.py
짜잔! 폴더, 파일 및 이미지는 모두 필요한 위치에 있으며 다음 단계를 계속할 수 있습니다. Xcode를 사용하여 파일을 열 것이므로 파일이 설치되어 있고 최신 상태인지 확인하십시오.
데이터세트 이미지 로드
마지막으로 방금 만든 Python 파일을 통해 Turi에게 무엇을 해야 하는지 알려줄 시간입니다. 파일을 두 번 클릭하면 기본적으로 Xcode에서 열립니다(설치되어 있는 경우). 그렇지 않은 경우 다른 편집기나 Python IDE를 사용할 수도 있습니다.
1. 프레임워크 가져오기
import turicreate
파일 상단에서 Turi Create 프레임워크를 가져와야 합니다. 원하는 경우
as <your na
을 추가하여 참조용 이름을 만들 수 있습니다. 나>. 예를 들어it
을 참조하려는 경우 코드에서 tc로 다음과 같이 작성할 수 있습니다.import turicreate as tc
이렇게 하면
tc
이라고 부를 수 있습니다.turicreate
를 작성하는 대신 . 이 튜토리얼에서는 정식 버전을 사용하여turicreate
라고 부릅니다. 모호성을 줄이기 위해.또한 이미지를 분류하려면 폴더 이름 및 기타 OS 관련 작업을 처리해야 합니다.
os
이라는 다른 Python 라이브러리가 필요합니다. . 가져오려면 다음을 추가하기만 하면 됩니다.import os
2. 이미지 로드 중
data = turicreate.image_analysis.load_images("images/")
여기에서는 데이터세트의 모든 이미지를
data
이라는 변수에 저장합니다. .dog_breeds.py
이후로 파일은images
과 동일한 디렉토리에 있습니다. 폴더에“images/”
를 넣으면 됩니다. 경로로.3. 라벨 정의
이제 Turi Create에 모든 이미지가 있으므로 폴더 이름을 레이블 이름에 연결해야 합니다. 이 레이블 이름은 iOS 또는 MacOS 앱에서 사용될 때 Core ML 모델에서 반환되는 이름입니다.
data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))
이를 통해 모든 폴더 이름을 "라벨" 이름에 매핑할 수 있습니다. 예를 들어 "cocker_spaniel" 폴더에 있는 모든 이미지가 실제로 코커 스패니얼임을 Turi Create에 알립니다.
4.
SFrame
로 저장
SFrame
에 익숙하지 않은 경우 , 간단히 말해서 모든 데이터(이 경우 이미지)와 모든 레이블(이 경우 개 품종)의 사전입니다.SFrame
저장 이렇게:data.save("dog_classifier.sframe")
이렇게 하면 다음 단계에서 사용할 레이블이 있는 이미지를 저장할 수 있습니다. 이것은 기계 학습 업계에서 상당히 표준적인 데이터 유형입니다.
교육 및 테스트
Turi Create에 레이블이 지정된 이미지가 모두 배치되면 홈 스트레치를 입력하고 마지막으로 모델을 훈련할 시간입니다. 또한 80%는 학습에 사용되고 20%는 학습이 완료되면 모델 테스트에 저장되도록 데이터를 분할해야 합니다. 따라서 수동으로 테스트할 필요가 없습니다.
1. SFrame 로드
이제 이전 단계에서 생성한 SFrame을 로드해야 합니다. 이것은 나중에 테스트 및 교육 데이터로 분할하는 데 사용할 것입니다.
data = turicreate.SFrame("dog_classifier.sframe")
이것은
data
를 할당합니다. 현재SFrame
유형인 변수 이전 단계에서 저장한 SFrame에 이제 데이터를 테스트 및 교육 데이터로 분할해야 합니다. 앞서 언급했듯이 우리는 훈련 데이터에 대한 테스트를 80:20으로 분할할 것입니다.2. 데이터 분할
데이터를 분할할 때입니다. SFrame 코드 뒤에 다음을 추가하세요.
testing, training = data.random_split(0.8)
이 코드는 데이터 80–20을 무작위로 분할하고 두 변수
testing
에 할당합니다. 및training
, 각각. 이제 Turi는 테스트 이미지를 수동으로 제공하고 앱을 만들 필요 없이 모델을 자동으로 테스트합니다. 조정이 필요한 경우 먼저 완전히 구현할 필요가 없으며 대신 Python에서 바로 수행할 수 있습니다. 파일.3. 교육, 테스트 및 내보내기
당신의 노력이 드디어 결실을 맺었습니다! 이 Python 코드 줄에서는 사용하려는 아키텍처를 지정하면서 Turi Create에 모델을 교육하도록 지시합니다.
classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")
Turi에게
testing
를 사용하라고 지시하는 것입니다. 데이터(이전에 지정됨)를 사용하여labels
을 예측합니다. (이전의 폴더 구조를 기반으로 함)resnet-50
를 사용하는 동안 , 가장 정확한 기계 학습 모델 아키텍처 중 하나입니다.테스트 데이터를 사용하고 모델이 정확한지 확인하려면 다음을 추가하세요.
testing = classifier.evaluate(training)print testing["accuracy"]
이것은
training
을 사용합니다. 지정한 데이터 및 테스트 후 결과를 (당신이 추측한)testing
이라는 변수에 저장합니다. . 참고로 정확도가 출력되지만 Turi Create의 API에서 충분한 시간이 주어지면 다른 것도 출력할 수 있습니다.마지막으로 유용한 이름을 지정한 후 이 한 줄짜리를 사용하여 모델을 파일 시스템에 바로 저장할 수 있습니다.
classifier.save("dog_classifier.model")classifier.export_coreml("dog_classifier.mlmodel")
물론 다른 형식으로 모델을 저장할 수도 있지만 이 예에서는 Core ML 모델로 저장했습니다.
실행 및 출력
모든 iOS 개발자를 위해 — 아닙니다. 이것은 자동으로 컴파일되고 오류에 대해 불평하는 Xcode 프로젝트가 아닙니다. 방금 작성한 코드를 실행하려면 터미널을 통해 코드를 실행해야 합니다.
파이썬 파일 실행
Python 파일을 실행하는 것은 쉽습니다! 올바른 디렉토리에 있는지 확인하고 터미널 창에 다음을 입력하기만 하면 됩니다.
python dog_breeds.py
출력
몇 분의 교육 후
images
폴더 및dog_breeds.py
파일은 SFrame, 모델 폴더 및 .mlmodel과 함께 제공됩니다. Core ML 모델입니다!또한 터미널 창에 다음과 같은 출력이 표시됩니다.
그림 4: Python 실행 후 출력 이를 통해 훈련 및 훈련 정확도, 처리된 이미지의 양 및 기타 유용한 정보를 제공하므로 모델을 사용하지 않고도 모델을 분석하는 데 사용할 수 있습니다.
결론
내가 이 튜토리얼을 만드는 동안 즐거웠던 만큼 이 튜토리얼을 읽는 것도 즐거웠기를 바랍니다! 여기에서 어디로 가야 하는지에 대한 몇 가지 단계가 있습니다. iOS 앱에서 Core ML 모델을 사용하는 방법을 배우고 싶다면 내 튜토리얼 중 다른 하나를 확인하십시오.
Core ML에서 이미지 인식 시작하기
기술의 발전으로 우리는 기기가 내장 카메라를 사용하여 정확하게 식별할 수 있는 시점에 이르렀습니다... 암호.
tutsplus.com이 튜토리얼에서는 결과
dog_classifier.mlmodel
를 가져오는 방법을 보여줍니다. 실제 iOS 앱에서 모델링하고 구현합니다. 또한 라이브 비디오 피드를 구문 분석하고 이미지 분류를 위해 개별 프레임을 가져오는 방법도 알려줍니다.이 튜토리얼과 관련하여 질문이나 의견이 있는 경우 주저하지 말고 아래 의견 섹션에 질문하십시오! 저는 항상 피드백, 질문 또는 이 튜토리얼의 지식을 어떻게 활용했는지 듣고 싶습니다.
내 작업을 지원하기 쉽습니다!
'박수' 버튼을 부수세요. 가능한 한 많이 이 튜토리얼을 공유하세요. 소셜 미디어에서, 트위터에서 나를 팔로우하세요.
바르단 아그라왈(@vhanagwal) | 트위터
Vardhan Agrawal(@vhanagwal)의 최신 트윗. 독학으로 #ios 개발자, #강사 및 인간…