Kako izgraditi prediktora za više i više godina, s dubokim učenjem u TensorFlowu

Izvor: https://www.governmentciomedia.com/ai-takes-face-recognition-new-frontiers

U mom posljednjem vodiču naučili ste kako kombinirati konvolucijsku neuronsku mrežu i dugoročnu memoriju (LTSM) da biste stvorili titlove s obzirom na sliku. U ovom će vam se nastavniku naučiti kako izgraditi i trenirati model višestrukog zadatka strojnog učenja kako biste na slici predvidjeli dob i spol predmeta.

Pregled

  • Uvod u dobni i rodni model
  • Izgradnja višestrukog zadatka za procjenu tensa
  • Trening

Preduvjeti

  • osnovno razumijevanje konvolucijskih neuronskih mreža (CNN)
  • osnovno razumijevanje TensorFlowa
  • GPU (izborno)

Uvod u dobni i rodni model

U 2015. godini, istraživači iz Computer Vision Lab, D-ITET, objavili su članak DEX i objavili svoj IMDB-WIKI koji se sastoji od 500K + lica lica s oznakama dobi i spola.

IMDB-WIKI Izvor skupa podataka: https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/

DEX prikazuje arhitekturu neuronske mreže koja uključuje ispitivani model imagenet vgg16 koji procjenjuje prividnu dob na slikama lica. DEX je na prvom mjestu na ChaLearn LAP 2015 - natjecanju koje se bavi prepoznavanjem ljudi na slici - nadmašivši ljudske reference.

Dob kao klasifikacijski problem

Konvencionalni način rješavanja problema s procjenom dobi sa slikom kao ulazom bit će upotreba regresijskog modela sa srednjom kvadratnom pogreškom kao funkcije gubitka. DEX ovaj problem modelira kao klasifikacijski zadatak, koristeći softmax klasifikator, a svaka dob predstavljena je kao jedinstvena klasa u rasponu od 1 do 101 i unakrsna entropija kao funkcija gubitka.

Učenje s više zadataka

Učenje s više zadataka tehnika je vježbanja na više zadataka kroz zajedničku arhitekturu. Slojevi na početku mreže naučit će zajednički generalizirani prikaz, sprječavanjem prekomjernog postavljanja na određeni zadatak koji može sadržavati buku.

Trenirajući s mrežom s više zadataka, mreža se može paralelno osposobljavati za oba zadatka. To smanjuje složenost infrastrukture na samo jedan cjevovod za obuku. Dodatno se smanjuje izračunavanje potrebno za obuku jer se oba zadatka treniraju istovremeno.

CNN izvor s više zadataka: https://murraycole.com

Izgradnja mreže više zadataka u TensorFlowu

U nastavku upotrijebite apstrakciju procjene TensorFlow za izradu modela. Model će se osposobljavati iz prikaza neobrađenih slika za predviđanje dobi i spola slike lica.

Struktura projekta

,
├── Dockerfile
├── age_gender_estimation_tutorial
│ ├── cnn_estimator.py
│ ├── cnn_model.py
│ └── skup podataka.py
├── kanta za smeće
│ ├── download-imdb.sh
│ ├── predvidjeti.py
│ ├── preproces_imdb.py
│ └── vlak.py
├── zahtjevi.txt

Okoliš

U okruženju ćete koristiti Docker za instaliranje ovisnosti. GPU verzija također je dostupna za praktičnost.

docker build -t koledur / age-gender-procjena-tutorial -f Dockerfile.

Podaci

Za obuku ovog modela koristit ćete IMDB-WIKI skup podataka koji se sastoji od 500 K + slika. Radi jednostavnosti, preuzet ćete unaprijed obrezane imdb slike (7 GB). Pokrenite dolje skriptu za preuzimanje podataka.

chmod + x bin / download-imdb-crop.sh
./bin/download-imdb-crop.sh

predobrada

Sada ćete obraditi skup podataka kako biste očistili slike loše kvalitete i obrezali ulaz na fiksnu veličinu slike. Uz to, podatke ćete oblikovati kao CSV kako biste pojednostavili čitanje u TensorFlow.

docker run -v $ PWD: / opt / app \
-e PYTHONPATH = $ PYTHONPATH: / opt / app \
-uputa kolegure / procjena dobi i spola \
python3 /opt/app/bin/preprocess_imdb.py \
--db-path /opt/app/data/imdb_crop/imdb.mat \
--photo-dir / opt / app / data / imdb_crop \
- izlaz-dir / opt / app / var \
--min-rezultat 1,0 \
--img-veličina 224

Nakon otprilike 20 minuta, obrađivat ćete skup podataka.

Zatim ćete koristiti TnsorFlow modul cjevovoda za podatke tf.data za davanje podataka procjenitelju. Tf.data je apstrakcija za paralelno čitanje i manipuliranje podacima skupa, koristeći C ++ teme za izvedbu.

Ovdje ćete upotrijebiti CSV Reader tvrtke TensorFlow za analizu podataka, preradu slika, stvaranje serija i izmjenu podataka.

Model

Ispod ćete stvoriti osnovni CNN model. Model se sastoji od tri zamota i dva potpuno povezana sloja, s softmax glavom klasifikatora za svaki zadatak.

Funkcija zajedničkog gubitka

Za operaciju treninga koristit ćete Adam Optimizer. Za funkciju gubitka prosječno ćete primijeniti pogrešku entropije svake glave stvarajući zajedničku funkciju gubitka između glava.

funkcija gubitka zgloba dobi i spola

TensorFlow procjenitelj

TensorFlow procjenitelji daju jednostavnu apstrakciju za izradu grafikona i obradu vremena izvođenja. TensorFlow je odredio model_fn sučelje koje se može koristiti za izradu prilagođenih procjenitelja.

Ispod ćete uzeti mrežu stvorenu iznad i kreirati trening, eval i predviđanje. Te će specifikacije koristiti TensorFlowova procjenjivačka klasa za promjenu ponašanja grafikona.

Vlak

Sad kad ste prethodno obradili podatke i stvorili arhitekturu modela i cjevovod podataka, započet ćete s obukom modela.

docker run -v $ PWD: / opt / app \
-e PYTHONPATH = $ PYTHONPATH: / opt / app \
-it kolekcionarstvo / procjena dobi i spola-vodič: gpu \
python3 /opt/app/bin/train.py \
--img-dir / opt / app / var / crop \
--train-csv /opt/app/var/train.csv \
--val-csv /opt/app/var/val.csv \
--model-dir / opt / app / var / cnn-model \
--img-veličina 224 \
- broj koraka 200000

Predvidjeti

Ispod ćete učitati svoj dobni i spolni model TensorFlow. Model će se učitati s diska i predvidjeti na priloženoj slici.

# Ažurirajte putanju modela u nastavku s vašim modelom
docker run -v $ PWD: / opt / app \
-e PYTHONPATH = $ PYTHONPATH: / opt / app \
-uputa kolegure / procjena dobi i spola \
python3 /opt/app/bin/predict.py \
--image-path /opt/app/var/crop/25/nm0000325_rm2755562752_1956-1-7_2002.jpg \
--model-dir / opt / app / var / cnn-model-3 / posluživanje / 
Predviđeno: M / 46 Stvarno: M / 46

Zaključak

U ovom su vodiču naučili kako izgraditi i trenirati mrežu s više zadataka za predviđanje dobi i slike subjekta. Korištenjem zajedničke arhitekture oba cilja mogu se istovremeno obučiti i predvidjeti.

Sljedeći koraci:

  • Ocijenite na vlastitom skupu podataka
  • Pokušajte s drugom mrežnom arhitekturom
  • Eksperimentirajte s različitim hiperparametrima

Pitanja / problemi? Otvorite problem ovdje na GitHubu

Kompletan kod ovdje.

Poziv na akciju

Ako ste uživali u ovom vodiču, slijedite i preporučite!

Zanima vas što više o dubinskom učenju / strojnom učenju? Pogledajte i ostale moje vodiče:

- Izgradnja generatora titlova za slike s Deep Learningom u Tensorflowu

- Izgradnja cjevovoda za prepoznavanje lica s dubinskim učenjem u Tensorflowu

- CNN duboko učenje u Tensorflowu s GPU-ovima

- Duboko učenje s Kerasom na Google Compute Engineu

- Sustavi preporuka s Apache Sparkom na Google Compute Engineu

Ostala mjesta koja me možete pronaći: