În acest tutorial, veți învăța cum să instruiți un model Core ML de clasificare a rasei de câini personalizate pentru a fi utilizat în aplicațiile dvs. iOS și macOS. Modelul dvs. Core ML va putea distinge între cinci rase diferite până la sfârșitul acestui tutorial!

Poate vă amintiți că Apple a achiziționat Turi cu învățarea automată și pornirea inteligenței artificiale acum câțiva ani cu peste 200 milioane USD; oferă instrumente puternice pentru a crea modele avansate de învățare automată într-o perioadă scurtă de timp.

În acest tutorial, veți învăța să instalați Turi Create pe Mac, să creați un script Python și să utilizați acel script pentru a instrui un model Core ML pe care îl puteți trage direct în proiectele Xcode și să îl implementați rapid în aplicațiile dvs.

Noțiuni de bază

Înainte de a începe cu partea reală de învățare automată a acestuia, să eliminăm mai întâi instalarea Turi și Python – și, bineînțeles, va trebui să vă asigurați că hardware-ul și software-ul dvs. îndeplinesc cerințele Turi.

Cerințe

Ca și în cazul oricărui software pe care îl instalați, Turi Create are anumite cerințe specifice, care pot fi găsite pe site-ul lor pagina oficială GitHub.

ad-banner

Turi Create suportă:

  • macOS 10.12+
  • Linux (cu glibc 2.12+)
  • Windows 10 (prin WSL)

Turi Create necesită:

  • Python 2.7, 3.5, 3.6
  • arhitectura x86_64
  • Cel puțin 4 GB RAM

Linia de jos este, atâta timp cât Mac-ul dvs. este rezonabil nou, ar trebui să puteți rula Turi Create. Dacă doriți, puteți urmări împreună cu un alt sistem de operare; cu toate acestea, poate fi necesar să modificați câțiva pași pentru ca aceștia să funcționeze.

Instalare

Instalarea Turi Create este destul de simplă, mai ales dacă sunteți familiarizat cu linia de comandă. În timp ce puteți alege să utilizați o versiune mai nouă a Python, voi folosi Python 2.7 în acest tutorial.

În MacOS Mojave, Python 2.7 vine instalat în mod implicit, deci tot ce trebuie să faceți este să verificați versiunea. Pe Mac, deschideți Aplicații> Utilități> Terminal sau pur și simplu căutați-l cu tastatura shoComanda rtcut-Spaţiu.

Pentru a verifica versiunea Python pe Mac, introduceți:

$ python - version

Acest lucru vă va spune versiunea Python, iar consola dvs. ar trebui să arate cam așa:

Antrenarea unui model de baza ML cu Turi Create pentru
Figura 1: Verificarea versiunii Python

Dacă versiunea dvs. nu este Python 2.7 sau dacă nu este instalată pe computer din anumite motive, ar trebui să o instalați la acest link. Dacă rezultatul dvs. arată similar cu al meu, sunteți gata să continuați.

Notă: Unii oameni preferă să utilizeze o mașină virtuală pentru a instala Turi Create, deoarece asta recomandă Apple. Dar, pentru a simplifica lucrurile, îl vom instala direct.

Pentru a instala Turi Create, introduceți următoarele în fereastra Terminalului:

$ pip install turicreate

Asta e tot! Turi Create este instalat cu succes pe Mac și este gata de utilizare. Acum puteți construi clasificare, detectare, regresie și alte tipuri de modele.

Set de date

Pentru orice model de învățare automată, aveți nevoie de un set de date. În acest tutorial, veți învăța cum să instruiți un model simplu de clasificare a rasei de câini, care necesită o clasificare a imaginilor. Datele pe care le voi folosi provin Setul de date pentru câini al Universității Stanford.

Pentru ca Turi să poată recunoaște imaginile preclasificate, va trebui să le organizezi pe baza a ceea ce reprezintă. De exemplu, toate imaginile de golden retrievers ar fi într-un folder, în timp ce toate imaginile labradoodle ar fi într-un alt dosar.

Din motive de simplitate, vom folosi doar cinci rase din sutele din setul de date de la Stanford, dar puteți utiliza câte doriți. Am mers mai departe și l-am organizat pentru dvs. și am creat un depozit pentru acesta. Dacă alegeți să adăugați mai multe rase de câini, pur și simplu adăugați mai multe foldere și denumiți-le după cum doriți.

Structura folderului

Până acum, probabil că v-ați dat seama că modul în care vă aranjați setul de date este esențial pentru a putea antrena corect modelul – nu există nicio altă modalitate prin care Turi Create știe despre ce se întâmplă. Ia-ți un moment acum pentru a te organiza.

1611239830 88 Antrenarea unui model de baza ML cu Turi Create pentru
Figura 2: Structura folderului de pornire

Această diagramă ierarhică ar trebui să explice totul și va trebui să obțineți folderele în această ordine înainte de a continua cu acest tutorial. Dacă doriți să schimbați numele sau să aranjați lucrurile diferit, va trebui să vă asigurați că notați acest lucru.

Instruirea clasificatorului

După ce ați terminat configurarea, sunteți gata să vă scufundați în carnea acestui tutorial – de fapt, vă instruiți clasificatorul. Vom lucra mai ales în Python, dar dacă nu ați folosit niciodată Python înainte, este în regulă. Vă explic fiecare pas în timp ce mergem și, dacă aveți întrebări, nu ezitați să lăsați un comentariu mai jos.

Fișier Python

În primul rând, va trebui să avem un loc unde să ne lăsăm gândurile (adică, desigur, în Python). Dacă aveți deja un editor care acceptă Python, cum ar fi Atom sau un mediu de dezvoltare integrat precum PyCharm, le puteți utiliza pentru a crea un fișier gol numit dog_breeds.py.

Dacă preferați ruta mai dezvoltată, ca mine, puteți utiliza terminalul pentru a face același lucru. Va trebui să creați acest fișier în interiorul ml_classifier folder, alături de images folder, astfel încât ierarhia dvs. să arate astfel:

1611239830 188 Antrenarea unui model de baza ML cu Turi Create pentru
Figura 3: Structura folderului cu fișier Python

Pentru a crea un fișier nou, introduceți mai întâi în directorul țintă:

$ cd ml_classifier

Apoi, creați un nou fișier numit dog_breeds.py.

$ touch dog_breeds.py

Voilà! Dosarele, fișierele și imaginile dvs. sunt acolo unde trebuie să fie și sunteți gata să continuați cu pasul următor. Vom folosi Xcode pentru a ne deschide fișierul, deci asigurați-vă că îl aveți instalat și actualizat.

Se încarcă imagini din setul de date

În cele din urmă, este timpul să începem să-i spunem lui Turi ce trebuie să facă prin fișierul Python pe care tocmai l-am creat. Dacă faceți dublu clic pe fișier, acesta ar trebui să se deschidă în mod implicit în Xcode, dacă îl aveți instalat. Dacă nu, puteți utiliza, de asemenea, un alt editor sau un IDE Python.

1. Importați cadre

import turicreate

În partea de sus a fișierului, va trebui să importați cadrul Turi Create. Dacă doriți, puteți crea un nume de referință prin adăugare as <your naeu>. De exemplu, dacă doriți să faceți referire la it ca tc în cod, puteți scrie:

import turicreate as tc

Acest lucru vă va permite să-l apelați tc în loc să scrie turicreate. În acest tutorial, voi folosi versiunea completă, numind-o turicreate pentru a reduce ambiguitatea.

De asemenea, va trebui să vă ocupați de numele dosarelor și de alte sarcini legate de sistemul de operare pentru a vă clasifica imaginile. Acest lucru va necesita o altă bibliotecă Python numită os. Pentru a-l importa, pur și simplu adăugați următoarele:

import os

2. Încărcarea imaginilor

data = turicreate.image_analysis.load_images("images/")

Aici stocăm toate imaginile din setul nostru de date într-o variabilă numită data. Din moment ce a noastră dog_breeds.py fișierul se află în același director cu fișierul images folder, putem pur și simplu pune “images/” ca poteca.

3. Definirea etichetelor

Acum că Turi Create are toate imaginile dvs., trebuie să legați numele folderelor la un nume de etichetă. Aceste nume de etichete sunt cele care vor fi returnate în modelul dvs. Core ML atunci când este utilizat într-o aplicație iOS sau MacOS.

data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))

Acest lucru vă permite să asociați toate numele folderelor dvs. la un nume de „etichetă”, ceea ce îi spune lui Turi Create că toate imaginile din folderul „cocker_spaniel” sunt într-adevăr Cocker Spaniels, de exemplu.

4. Salvați ca SFrame

În cazul în care nu sunteți familiarizați cu un SFrame, în termeni simpli, este un dicționar cu toate datele dvs. (în acest caz, o imagine) și toate etichetele (în acest caz, rasa câinelui). Salvați-vă SFrame asa:

data.save("dog_classifier.sframe")

Acest lucru vă permite să stocați imaginile etichetate pentru a fi utilizate în pasul următor. Acesta este un tip de date destul de standard în industria învățării automate.

Instruire și testare

După ce Turi Create are toate imaginile etichetate la locul lor, este timpul să intrați în zona de acasă și, în cele din urmă, să vă antrenați modelul. De asemenea, trebuie să împărțim datele astfel încât 80% să fie utilizate pentru antrenament, iar 20% să fie salvate pentru testarea modelului odată ce a terminat antrenamentul – nu va trebui să îl testăm manual.

1. Se încarcă SFrame

Acum, trebuie să încărcăm SFrame-ul pe care tocmai l-am creat în pasul anterior. Aceasta este ceea ce vom folosi pentru a împărți în date de testare și instruire mai târziu.

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

Aceasta atribuie fișierul data variabilă, care este acum de tip SFrame la SFrame-ul pe care l-am salvat în pasul anterior. Acum, va trebui să împărțim datele în date de testare și instruire. Așa cum am menționat mai sus, vom face o divizare de 80:20 a testării datelor de instruire.

2. Împărțirea datelor

Este timpul să împărțiți datele. După codul dvs. SFrame, adăugați următoarele:

testing, training = data.random_split(0.8)

Acest cod împarte în mod aleatoriu datele 80-20 și le atribuie la două variabile, testing și training, respectiv. Acum, Turi vă va testa automat modelul fără a fi nevoie să furnizați manual imagini de test și să creați o aplicație – dacă trebuie să faceți ajustări, nu va trebui să îl implementați complet mai întâi și, în schimb, le puteți face chiar în Python fişier.

3. Instruire, testare și export

Munca ta grea a dat în sfârșit rezultatele! În această linie de cod Python, îi veți spune doar lui Turi Create să vă instruiască modelul, specificând în același timp arhitectura pe care doriți să o utilizați.

classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")

Îi spui pur și simplu lui Turi să te folosească de tine testing (specificate mai devreme) și folosiți-le pentru a prezice labels (pe baza structurii de dosare dinainte), în timp ce utilizați resnet-50, care este una dintre cele mai exacte arhitecturi de model de învățare automată.

Pentru a utiliza datele de testare și pentru a vă asigura că modelul dvs. este corect, adăugați următoarele:

testing = classifier.evaluate(training)print testing["accuracy"]

Aceasta folosește training datele pe care le-ați specificat și stochează rezultatele după testare într-o variabilă numită (ați ghicit-o) testing. Pentru informațiile dvs., tipărește exactitatea, dar puteți imprima și alte lucruri, având suficient timp pe API-urile Turi Create.

Nu în ultimul rând, puteți salva modelul chiar în sistemul de fișiere cu acest one-liner după ce îi dați un nume util:

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

Desigur, vă puteți salva modelul și în alte formate, dar pentru acest exemplu l-am salvat ca model Core ML.

Rularea și ieșirea

Pentru toți dezvoltatorii iOS de acolo – nu, acesta nu este un proiect Xcode care continuă să compileze automat și să se plângă de erori. Pentru ca codul pe care tocmai l-ați scris să fie executat, va trebui să îl facem prin terminal.

Rularea fișierului Python

Rularea fișierului Python este ușoară! Asigurați-vă că vă aflați în directorul corect și tot ce trebuie să faceți este să introduceți următoarele în fereastra terminalului:

python dog_breeds.py

Ieșire

După câteva minute de antrenament, dumneavoastră images dosar și dog_breeds.py fișierul va fi însoțit de un SFrame, un dosar model și un fișier .mlmodel fișier, care este modelul dvs. Core ML!

Veți fi prezentat și cu ieșire în fereastra terminalului, care va arăta cam așa:

1611239831 703 Antrenarea unui model de baza ML cu Turi Create pentru
Figura 4: Ieșire după rularea Python

Acest lucru vă oferă informații despre antrenament și precizia antrenamentului, cantitatea de imagini procesate și alte informații utile, pe care le puteți utiliza pentru a vă analiza modelul fără a-l utiliza niciodată.

Concluzie

Sper că ți-a plăcut să citești acest tutorial la fel de mult cum mi-a plăcut să-l fac! Iată câțiva pași pentru a merge de aici. Dacă doriți să aflați cum să utilizați modelul dvs. Core ML într-o aplicație iOS, consultați încă unul dintre tutorialele mele:

Începeți cu recunoașterea imaginilor în Core ML
Odată cu progresele tehnologice, suntem în punctul în care dispozitivele noastre își pot folosi camerele integrate pentru a identifica cu precizie …cod.
tutsplus.com

Acest tutorial vă va arăta cum să luați rezultatul dog_classifier.mlmodel modelează-l și implementează-l într-o aplicație iOS din lumea reală. De asemenea, vă va învăța să analizați un flux video live și să luați cadre individuale pentru clasificarea imaginilor.

Dacă aveți întrebări sau comentarii cu privire la acest tutorial, nu ezitați să le întrebați în secțiunea de comentarii de mai jos! Sunt întotdeauna dornic să aud feedback, întrebări sau modul în care v-ați folosit cunoștințele din acest tutorial.

Este ușor să-mi susții munca!

Asigurați-vă că sparge acel buton „clap” de câte ori poți, distribuie acest tutorial pe rețelele de socializare și urmărește-mă pe Twitter.

Vardhan Agrawal (@vhanagwal) | Stare de nervozitate
Ultimele tweets de la Vardhan Agrawal (@vhanagwal). Dezvoltator complet autodidact #ios, #instructor și uman …