Transferați învățarea pentru modelele de clasificare a imaginilor TensorFlow în Amazon SageMaker

Amazon SageMaker oferă o suită de algoritmi încorporați, modele pre-antrenate, și șabloane de soluții prefabricate pentru a ajuta oamenii de știință ai datelor și practicanții de învățare automată (ML) să înceapă pregătirea și implementarea rapidă a modelelor ML. Puteți utiliza acești algoritmi și modele atât pentru învățarea supravegheată, cât și pentru învățarea nesupravegheată. Ele pot procesa diferite tipuri de date de intrare, inclusiv tabelare, imagini și text.

Începând de astăzi, SageMaker oferă un nou algoritm încorporat pentru clasificarea imaginilor: Clasificarea imaginilor – TensorFlow. Este un algoritm de învățare supravegheată care acceptă învățarea prin transfer pentru multe modele pre-antrenate disponibile în TensorFlow Hub. Ia o imagine ca probabilitate de intrare și de ieșire pentru fiecare dintre etichetele de clasă. Puteți regla fin aceste modele pre-antrenate utilizând învățarea prin transfer chiar și atunci când un număr mare de imagini de antrenament nu sunt disponibile. Este disponibil prin SageMaker algoritmi încorporați precum și prin intermediul SageMaker JumpStart UI în interiorul Amazon SageMaker Studio. Pentru mai multe informații, consultați documentația acesteia Clasificarea imaginilor – TensorFlow și caietul de exemplu Introducere în SageMaker TensorFlow – Clasificarea imaginilor.

Clasificarea imaginilor cu TensorFlow în SageMaker oferă transfer de învățare pe multe modele pre-antrenate disponibile în TensorFlow Hub. În funcție de numărul de etichete de clasă din datele de antrenament, la modelul TensorFlow Hub este atașat un strat de clasificare. Stratul de clasificare constă dintr-un strat de abandon și un strat dens, care este un strat complet conectat cu regulator cu 2 norme care este inițializat cu greutăți aleatorii. Antrenamentul modelului are hiperparametri pentru rata de abandon a stratului de abandon și factorul de regularizare L2 pentru stratul dens. Apoi, fie întreaga rețea, inclusiv modelul pre-antrenat, fie doar stratul superior de clasificare poate fi reglat fin pe noile date de antrenament. În acest mod de învățare prin transfer, puteți obține antrenament chiar și cu un set de date mai mic.

Cum să utilizați noul algoritm de clasificare a imaginilor TensorFlow

Această secțiune descrie cum să utilizați algoritmul de clasificare a imaginilor TensorFlow cu SageMaker Python SDK. Pentru informații despre cum să îl utilizați din interfața de utilizare Studio, consultați SageMaker JumpStart.

Algoritmul acceptă învățarea prin transfer pentru modelele pre-antrenate enumerate în Modele TensorFlow Hub. Fiecare model este identificat printr-un unic model_id. Următorul cod arată cum să reglați fin MobileNet V2 1.00 224 identificat de model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 pe un set de date de antrenament personalizat. Pentru fiecare model_id, pentru a lansa un job de formare SageMaker prin intermediul Estimator clasa a SDK-ului SageMaker Python, trebuie să preluați URI-ul imaginii Docker, URI-ul scriptului de antrenament și URI-ul modelului pre-antrenat prin funcțiile utilitare furnizate în SageMaker. URI-ul scriptului de antrenament conține tot codul necesar pentru procesarea datelor, încărcarea modelului pre-antrenat, antrenamentul modelului și salvarea modelului antrenat pentru inferență. URI-ul modelului pre-antrenat conține definiția arhitecturii modelului pre-antrenat și parametrii modelului. Rețineți că URI-ul imaginii Docker și URI-ul scriptului de antrenament sunt aceleași pentru toate modelele de clasificare a imaginilor TensorFlow. URI-ul modelului pre-antrenat este specific modelului particular. Tarball-urile modelului pre-antrenate au fost pre-descărcate din TensorFlow Hub și salvate cu semnătura modelului corespunzătoare în Serviciul Amazon de stocare simplă (Amazon S3), astfel încât jobul de instruire să ruleze în izolare în rețea. Vezi următorul cod:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Cu aceste artefacte de antrenament specifice modelului, puteți construi un obiect al Estimator clasă:

# Create SageMaker Estimator instance
tf_ic_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

Apoi, pentru transferul de învățare pe setul de date personalizat, poate fi necesar să modificați valorile implicite ale hiperparametrilor de antrenament, care sunt listați în Hiperparametrele. Puteți obține un dicționar Python al acestor hiperparametri cu valorile lor implicite prin apelare hyperparameters.retrieve_default, actualizați-le după cum este necesar, apoi transmiteți-le la clasa Estimator. Rețineți că valorile implicite ale unora dintre hiperparametri sunt diferite pentru diferite modele. Pentru modelele mari, dimensiunea implicită a lotului este mai mică și train_only_top_layer hiperparametrul este setat la True. Hiperparametrul Train_only_top_layer definește parametrii modelului care se modifică în timpul procesului de reglare fină. Dacă train_only_top_layer is True, parametrii straturilor de clasificare se modifică, iar restul parametrilor rămân constanți în timpul procesului de reglare fină. Pe de altă parte, dacă train_only_top_layer is False, toți parametrii modelului sunt reglați fin. Vezi următorul cod:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Următorul cod oferă un set de date de antrenament implicit găzduit în compartimente S3. Noi oferim tf_flowers set de date ca set de date implicit pentru reglarea fină a modelelor. Setul de date cuprinde imagini cu cinci tipuri de flori. Setul de date a fost descărcat de la TensorFlow în temeiul Licență Apache 2.0.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

În cele din urmă, pentru a lansa jobul de instruire SageMaker pentru reglarea fină a modelului, sunați .fit pe obiectul clasei Estimator, în timp ce treceți locația S3 a setului de date de antrenament:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Pentru mai multe informații despre cum să utilizați noul algoritm de clasificare a imaginilor SageMaker TensorFlow pentru transferul de învățare pe un set de date personalizat, implementați modelul reglat fin, rulați inferența asupra modelului implementat și implementați modelul pre-antrenat așa cum este, fără o reglare fină mai întâi pe un set de date personalizat, consultați următorul exemplu de blocnotes: Introducere în SageMaker TensorFlow – Clasificarea imaginilor.

Interfață de intrare/ieșire pentru algoritmul de clasificare a imaginilor TensorFlow

Puteți regla fin fiecare dintre modelele pre-antrenate enumerate în Modele TensorFlow Hub la orice set de date dat care cuprinde imagini aparținând oricărui număr de clase. Obiectivul este de a minimiza eroarea de predicție a datelor de intrare. Modelul returnat prin reglare fină poate fi implementat în continuare pentru inferență. Următoarele sunt instrucțiunile despre modul în care datele de antrenament ar trebui să fie formatate pentru a fi introduse în model:

  • Intrare – Un director cu tot atâtea subdirectoare cât număr de clase. Fiecare subdirector ar trebui să aibă imagini aparținând acelei clase în format .jpg, .jpeg sau .png.
  • producție – Un model reglat fin care poate fi implementat pentru inferență sau poate fi antrenat în continuare folosind antrenament incremental. O semnătură de preprocesare și postprocesare este adăugată modelului reglat astfel încât să ia imagine brută .jpg ca intrare și să returneze probabilitățile de clasă. Un fișier de mapare a indicilor de clasă cu etichetele de clasă este salvat împreună cu modelele.

Directorul de intrare ar trebui să arate ca exemplul următor dacă datele de antrenament conțin imagini din două clase: roses și dandelion. Calea S3 ar trebui să arate ca s3://bucket_name/input_directory/. Observați trasarea / este necesară. Numele folderelor și roses, dandelion, iar numele fișierelor .jpg pot fi orice. Fișierul de mapare a etichetei care este salvat împreună cu modelul antrenat pe găleată S3 mapează folderul cu numele trandafiri și păpădie la indici din lista de probabilități de clasă pe care modelul o iese. Maparea urmează ordinea alfabetică a numelor folderelor. În exemplul următor, indicele 0 din lista de rezultate ale modelului îi corespunde dandelion, iar indicele 1 îi corespunde roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Inferență cu algoritmul de clasificare a imaginilor TensorFlow

Modelele generate pot fi găzduite pentru inferență și acceptă formatele de imagine codificate .jpg, .jpeg și .png ca application/x-image tipul de conținut. Imaginea de intrare este redimensionată automat. Ieșirea conține valorile de probabilitate, etichetele de clasă pentru toate clasele și eticheta prezisă corespunzătoare indexului de clasă cu cea mai mare probabilitate, codificat în format JSON. Modelul de clasificare a imaginilor TensorFlow procesează o singură imagine per cerere și scoate o singură linie în JSON. Următorul este un exemplu de răspuns în JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept este setat la application/json, atunci modelul produce numai probabilități. Pentru mai multe detalii despre antrenament și inferență, consultați exemplul de caiet Introducere în SageMaker TensorFlow – Clasificarea imaginilor.

Utilizați algoritmi încorporați SageMaker prin interfața de utilizare JumpStart

De asemenea, puteți utiliza clasificarea imaginilor SageMaker TensorFlow și oricare dintre ceilalți algoritmi încorporați cu câteva clicuri prin interfața de utilizare JumpStart. JumpStart este o caracteristică SageMaker care vă permite să antrenați și să implementați algoritmi încorporați și modele pre-antrenate din diferite cadre ML și hub-uri de model printr-o interfață grafică. De asemenea, vă permite să implementați soluții ML complete care îmbină modele ML și diverse alte servicii AWS pentru a rezolva un caz de utilizare vizat. Verifică Rulați clasificarea textului cu Amazon SageMaker JumpStart folosind modelele TensorFlow Hub și Hugging Face pentru a afla cum să utilizați JumpStart pentru a antrena un algoritm sau un model pre-antrenat în câteva clicuri.

Concluzie

În această postare, am anunțat lansarea algoritmului încorporat de clasificare a imaginilor SageMaker TensorFlow. Am furnizat exemplu de cod despre cum să transferați învățarea pe un set de date personalizat folosind un model pre-antrenat de la TensorFlow Hub folosind acest algoritm. Pentru mai multe informații, verificați documentaţie si exemplu caiet.


Despre autori

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan este un Senior Applied Scientist cu Algoritmi încorporați Amazon SageMaker și ajută la dezvoltarea algoritmilor de învățare automată. Și-a luat doctoratul la Universitatea din Illinois Urbana-Champaign. Este un cercetător activ în învățarea automată și inferența statistică și a publicat multe lucrări în conferințele NeurIPS, ICML, ICLR, JMLR, ACL și EMNLP.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Vivek Madan este un om de știință aplicat cu Echipa Amazon SageMaker JumpStart. Și-a luat doctoratul la Universitatea din Illinois Urbana-Champaign și a fost cercetător post-doctoral la Georgia Tech. Este un cercetător activ în învățarea automată și proiectarea algoritmilor și a publicat lucrări în cadrul conferințelor EMNLP, ICLR, COLT, FOCS și SODA.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.João Moura este arhitect specializat în soluții AI/ML la Amazon Web Services. El se concentrează în principal pe cazuri de utilizare a NLP și ajută clienții să optimizeze instruirea și implementarea modelului de deep learning. El este, de asemenea, un susținător activ al soluțiilor ML low-code și al hardware-ului specializat în ML.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Raju Penmatcha este arhitect senior în soluții de specialitate AI/ML la AWS. Lucrează cu clienți din domeniul educației, guvernamentali și nonprofit la proiecte legate de învățarea automată și inteligența artificială, ajutându-i să construiască soluții folosind AWS. Când nu ajută clienții, îi place să călătorească în locuri noi.

Timestamp-ul:

Mai mult de la Învățare automată AWS