Как да обучите основен модел ML с помощта на Turi Създайте, за да класифицирате породи кучета

Обучете модел за класификация на породи кучета, използвайки Turi Create.

В този урок ще научите как да обучите персонализиран модел на основни породи кучета Core ML, който да използвате във вашите приложения за iOS и macOS. Вашият модел Core ML ще може да разграничи пет различни породи до края на този урок!

Може би си спомняте, че Apple придоби машинно обучение и стартиране на изкуствен интелект преди няколко години за над 200 милиона долара; той предлага мощни инструменти за създаване на модерни модели за машинно обучение за кратък период от време.

В този урок ще се научите да инсталирате Turi Create на вашия Mac, да създадете Python скрипт и да го използвате, за да обучите модел на Core ML, който можете да плъзнете директно във вашите Xcode проекти и бързо да внедрите във вашите приложения.

Приготвяме се да започнем

Преди да започнем с действителната част от машинното обучение, нека първо да премахнем инсталацията на Turi и Python - и, разбира се, ще трябва да се уверите, че хардуерът и софтуерът ви отговарят на изискванията на Turi.

Изисквания

Както при всеки инсталиран от вас софтуер, Turi Create има някои специфични изисквания, които можете да намерите на официалната им страница на GitHub.

Поддръжка на Turi Create:

  • macOS 10.12+
  • Linux (с glibc 2.12+)
  • Windows 10 (чрез WSL)

Turi Create изисква:

  • Python 2.7, 3.5, 3.6
  • x86_64 архитектура
  • Най-малко 4 GB RAM

Долната линия е, стига вашият Mac да е сравнително нов, трябва да можете да стартирате Turi Create. Ако искате, можете да следвате заедно с друга операционна система; може да се наложи да промените някои стъпки, за да работят.

Инсталация

Инсталирането на Turi Create е доста просто, особено ако сте запознати с командния ред. Въпреки че можете да изберете да използвате по-нова версия на Python, аз ще използвам Python 2.7 в този урок.

В MacOS Mojave, Python 2.7 се инсталира по подразбиране, така че всичко, което трябва да направите, е да проверите версията. На вашия Mac отворете Applications> Utilities> Terminal или просто го потърсете с клавишната комбинация Command-Space.

За да проверите версията на Python на вашия Mac, въведете:

$ python - версия

Това ще ви каже версията на Python и вашата конзола трябва да изглежда така:

Фигура 1: Проверка на версията на Python

Ако вашата версия не е Python 2.7 или ако по някаква причина не е инсталирана на вашия компютър, трябва да я инсталирате на тази връзка. Ако вашата продукция изглежда подобна на моята, вие сте готови да продължите.

Забележка: Някои хора предпочитат да използват виртуална машина за инсталиране на Turi Create, тъй като това препоръчва Apple. Но за да сме нещата просто, просто ще го инсталираме директно.

За да инсталирате Turi Create, просто въведете следното във вашия прозорец на терминала:

$ pip install turicreate

Това е всичко! Turi Create е успешно инсталиран на вашия Mac и е готов за употреба. Вече можете да изградите класификация, откриване, регресия и други видове модели.

Масив от данни

За всеки модел на машинно обучение се нуждаете от набор от данни. В този урок ще научите как да обучите прост модел за класификация на породи кучета, който изисква класификация на изображенията. Данните, които ще използвам, идват от набора от кучета на университета в Станфорд.

За да може Turi да разпознае предварително класифицираните изображения, трябва да ги организирате въз основа на това, което представляват. Например, всички изображения на златни ретривъри ще бъдат в една папка, докато всички снимки на лабрадоудлите ще бъдат в друга.

В интерес на простотата, ние просто ще използваме пет породи от стотиците в набора от данни на Станфорд, но можете да използвате колкото искате. Продължих и го организирах за вас и създадох хранилище за него. Ако решите да добавите още породи кучета, просто добавете още папки и ги назовете по ваше желание.

Структура на папките

Досега може би сте разбрали, че начинът, по който подреждате вашия набор от данни, е от решаващо значение за правилното обучение на модела - няма друг начин, който Turi Create знае за това, къде отива. Отделете малко време, за да се организирате.

Фигура 2: Стартиране на структурата на папките

Тази йерархична диаграма трябва да обяснява всичко и ще трябва да поставите папките си в този ред, преди да продължите с този урок. Ако искате да промените имена или да подредите нещата по различен начин, ще трябва да направите забележка за това.

Обучение на класификатора

След като приключите с настройката, вие сте готови да се потопите в месото на този урок - всъщност тренирате вашия класификатор. Ние ще работим предимно в Python, но ако никога досега не сте използвали Python, това е наред. Ще обясня всяка стъпка, докато вървим напред, и ако имате въпроси, не се колебайте да оставите коментар по-долу.

Python File

Първо, ще трябва да имаме къде да заложим мислите си (тоест, разбира се, в Python). Ако вече имате редактор, който поддържа Python, като Atom или интегрирана среда за разработка като PyCharm, можете да ги използвате, за да създадете празен файл, наречен dog_breeds.py.

Ако предпочитате по-разработения маршрут, както аз, можете да използвате терминала, за да направите същото. Ще трябва да създадете този файл в папката ml_classifier, заедно с папката с изображения, така че вашата йерархия да изглежда така:

Фигура 3: Структура на папките с Python File

За да създадете нов файл, първо въведете в целевата директория:

$ cd ml_classifier

След това създайте нов файл, наречен dog_breeds.py.

$ touch dog_breeds.py

Готово! Вашите папки, файлове и изображения са всичко, където трябва да бъдат, и вие сте готови да продължите със следващата стъпка. Ще използваме Xcode за отваряне на нашия файл, така че се уверете, че имате инсталиран и актуален.

Зареждане на изображения от набори данни

Най-накрая е време да започнем да казваме на Тури какво трябва да направи чрез файла, създаден от Python. Ако щракнете двукратно върху файла, той трябва да се отвори по подразбиране в Xcode, ако имате инсталиран. Ако не, можете да използвате и друг редактор или ID на Python.

1. Импортиране на рамки

импортиране на turicreate

В горната част на файла ще трябва да импортирате рамката за създаване на Turi. Ако искате, можете да създадете име за справка, като добавите като <вашето име>. Например, ако искате да го посочите като tc във вашия код, можете да напишете:

импортиране на turicreate като tc

Това ще ви позволи да го наречете tc, вместо да изписвате turicreate. В този урок ще използвам пълната версия и ще го нарека turicreate, за да намаля двусмислеността.

Също така ще трябва да се справите с имена на папки и други задачи, свързани с ОС, за да класифицирате вашите изображения. Това ще изисква друга библиотека на Python, наречена os. За да го импортирате, просто добавете следното:

import os

2. Зареждане на изображения

data = turicreate.image_analysis.load_images ("изображения /")

Ето, ние съхраняваме всички изображения в нашия набор от данни в променлива, наречена данни. Тъй като нашият файл dog_breeds.py е в същата директория като папката с изображения, можем просто да поставим „images /“ като пътя.

3. Дефиниране на етикети

Сега, когато Turi Create има всички ваши изображения, трябва да свържете имената на папките с име на етикет. Тези имена на етикети са това, което ще бъде върнато във вашия модел ML ML, когато се използва в приложение за iOS или MacOS.

data ["label"] = data ["path"]. прилага (ламбда пътека: os.path.basename (os.path.dirname (път)))

Това ви позволява да съпоставите всички имена на папките си с име „етикет“, което казва на Turi Create, че всички изображения, които са в папката „cocker_spaniel“, са наистина кокер шпаньоли, например.

4. Запазете като SFrame

В случай, че не сте запознати с SFrame, най-просто казано, това е речник на всичките ви данни (в случая изображение) и на всички етикети (в случая кучешката порода). Запазете своя SFrame по този начин:

data.save ( "dog_classifier.sframe")

Това ви позволява да съхранявате вашите етикетирани изображения за използване в следващата стъпка. Това е доста стандартен тип данни в индустрията на машинно обучение.

Обучение и тестване

След като Turi Create има всички ваши обозначени изображения, е време да влезете в началния участък и най-накрая да обучите модела си. Също така трябва да разделим данните, така че 80% да се използват за обучение и 20% да бъдат спестени за тестване на модела, след като е извършил обучение - няма да трябва да го тестваме ръчно.

1. Зареждане на SFrame

Сега трябва да заредим SFrame, който току-що създадохме в предишната стъпка. Това ще използваме, за да разделим по-късно данните за тестване и обучение.

data = turicreate.SFrame ("dog_classifier.sframe")

Това присвоява променливата на данни, която сега е от тип SFrame на SFrame, която записахме в предишната стъпка. Сега ще трябва да разделим данните на данни за тестване и обучение. Както беше споменато по-горе, ще направим разделяне на тестовете с данни от 80:20.

2. Разделяне на данни

Време е да разделим данните. След вашия SFrame код, добавете следното:

тестване, обучение = data.random_split (0.8)

Този код произволно разделя данните 80–20 и ги присвоява съответно на две променливи, тестване и обучение. Сега Turi автоматично ще тества вашия модел, без да е необходимо ръчно да доставяте тестови изображения и да създадете приложение - ако трябва да направите корекции, няма да е необходимо първо да го внедрите напълно и вместо това можете да ги направите направо във вашия Python файл.

3. Обучение, тестване и експорт

Вашата упорита работа най-накрая се изплати! В този ред на Python код просто ще кажете на Turi Create да обучава вашия модел, като същевременно посочвате архитектурата, която искате да използвате.

classifier = turicreate.image_classifier.create (тестване, target = "label", model = "resnet-50")

Просто казвате на Turi да използва вашите данни за тестване (посочени по-рано) и ги използва за прогнозиране на етикетите (въз основа на структурата на папките от преди), като същевременно използвате resnet-50, която е една от най-точните архитектури на машинно обучение ,

За да използвате вашите данни за тестване и да гарантирате, че моделът ви е точен, добавете това:

тестване = classifier.evaluate (обучение)
тестване на печат ["точност"]

Това използва данните за обучение, които сте посочили и съхранява резултатите след тестване в променлива, наречена (познахте я) тестване. За ваша информация, тя отпечатва точността, но можете да отпечатвате и други неща, като имате достатъчно време в API на Turi Create.

Не на последно място, можете да запишете модела си във вашата файлова система с този еднолинейник, след като му дадете полезно име:

classifier.save ( "dog_classifier.model")
classifier.export_coreml ( "dog_classifier.mlmodel")

Разбира се, можете да запазите модела си и в други формати, но за този пример го запазих като модел на основен ML.

Изпълнение и изход

За всички вас, разработчици на iOS там - не, това не е проект за Xcode, който непрекъснато се компилира и се оплаква от грешки. За да изпълните кода, който току-що написахте, ще трябва да го направим чрез терминала.

Изпълнение на файла Python

Изпълнението на файла Python е лесно! Уверете се, че сте в правилната директория и всичко, което трябва да направите, е да въведете следното в прозореца на вашия терминал:

python dog_breeds.py

продукция

След няколко минути обучение, папката ви с изображения и файл dog_breeds.py ще бъдат придружени от SFrame, папка с модел и .mlmodel файл, който е вашият модел на ML ML!

Ще ви бъде представен и изход в прозореца на вашия терминал, който ще изглежда така:

Фигура 4: Изход след изпълнение на Python

Това ви дава информация за точността на обучение и тренировка, количеството обработени изображения и друга полезна информация, която можете да използвате за анализ на вашия модел, без изобщо да го използвате.

заключение

Надявам се, че сте харесали да четете този урок толкова, колкото аз се радвах да го правя! Ето няколко стъпки за това къде да отида от тук. Ако искате да научите как да използвате модела си Core ML в приложение за iOS, разгледайте още едно от моите уроци:

Този урок ще ви покаже как да вземете получения от вас dog_classifier.mlmodel модел и да го приложите в реално приложение за iOS. Освен това ще ви научи да анализирате видео емисия на живо и да вземате отделни кадри за класификация на изображенията.

Ако имате въпроси или коментари относно този урок, не се колебайте да ги зададете в секцията за коментари по-долу! Винаги съм нетърпелив да чуя обратна връзка, въпроси или как сте използвали знанията си от този урок.

Лесно е да подкрепям работата ми!

Не забравяйте да разбиете този бутон „пляскайте“ колкото пъти можете, споделете този урок в социалните медии и ме последвайте в Twitter.