TensorFlow-da Dərin Öyrənmədən istifadə edərək bir Yaş və Cinsi Çox Tapşırıq Proqnozlaşdırıcısı necə qurulur

Mənbə: https://www.governmentciomedia.com/ai-takes-face-recognition-new-frontiers

Son təlimimdə konvolyusional sinir şəbəkəsini və uzun müddətli qısamüddətli yaddaşın (LTSM) birləşdirilərək verilmiş bir şəkil ilə altyazılar yaratmağı öyrəndiniz. Bu təlimatda bir şəkildəki mövzunun yaşını və cinsini proqnozlaşdırmaq üçün çox tapşırıqlı bir maşın öyrənmə modelini necə qurmağı və öyrətməyi öyrənəcəksiniz.

ümumi baxış

  • Yaş və cinsiyyət modelinə giriş
  • Bir çox tapşırıq üçün Tensorflow Tahmincisi yaratmaq
  • təlim

tələblər

  • Konvolyusional sinir şəbəkələri (CNN) haqqında əsas məlumat
  • TensorFlow haqqında əsas məlumat
  • GPU (isteğe bağlı)

Yaş və cinsiyyət modelinə giriş

2015-ci ildə D-ITET Computer Vision Laboratoriyasında tədqiqatçılar DEX adlı bir məqalə dərc etdilər və yaş və cins təyinatları ilə 500.000-dən çox üz şəklindən ibarət olan IMDB-WIKI-lərini nəşr etdilər.

IMDB-WIKI məlumat mənbəyi: https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/

DEX, üz şəkillərində aydın yaşı qiymətləndirən əvvəlcədən qurulmuş bir imagenet vgg16 modelinə sahib bir sinir şəbəkəsi arxitekturasını əks etdirir. DEX ChaLearn LAP 2015-də birinci yeri tutdu - insanları imicdə tanımağa və insan istinadını üstələməyə baxan bir yarışma.

Yaş təsnifat problemi olaraq

Giriş şəklində bir yaş qiymətləndirmə problemini həll etmək üçün ənənəvi bir yol, itki funksiyası olaraq orta kvadrat səhv olan bir regresiya əsaslı model istifadə etməkdir. DEX, bu problemi, hər yaşın 1 ilə 101 aralığında unikal bir sinif olaraq və eninə entropiyanın bir zərər funksiyası kimi təmsil olunduğu bir softmax təsnifatçısı istifadə edərək bir təsnifat tapşırığı olaraq modelləşdirir.

Çox vəzifəli təlim

Çox tapşırıqlı öyrənmə, ümumi bir memarlıqda birdən çox tapşırıq hazırlamaq üçün bir texnikadır. Şəbəkənin başlanğıcındakı təbəqələr səs-küy ehtiva edə bilən müəyyən bir tapşırığa uyğun gəlməməsi üçün ümumi bir ümumiləşdirilmiş nümayəndəlik öyrənir.

Çox tapşırıqlı bir şəbəkə ilə məşq edərək, şəbəkə hər iki tapşırıq üçün paralel olaraq öyrədilə bilər. Bu, infrastrukturun mürəkkəbliyini yalnız bir təlim boru kəmərinə qədər azaldır. Bundan əlavə, təlim üçün hesablama səyləri azalır, çünki hər iki tapşırıq eyni zamanda hazırlanır.

Bir çox tapşırıq üçün CNN mənbəyi: https://murraycole.com

TensorFlow'da çox tapşırıqlı bir şəbəkə yaratmaq

Bundan sonra, modeli qurmaq üçün TensorFlow təxmin edici abstraksiyasından istifadə edəcəksiniz. Model, üz şəklinin yaşını və cinsini proqnozlaşdırmaq üçün xam görüntü girişinə öyrədilmişdir.

Layihə quruluşu

. ├── Dockerfile ├── age_gender_estimation_tutorial │ │ cnn_estimator.py │ ├── cnn_model.py │ └── Database.py ├── bin │ ├── download-imdb.sh │ │ predict.py │ ├── preprocess_imdb .py │ └── train.py ├── tələbləri.txt

Ətraf

Ətraf mühit üçün asılılıqları qurmaq üçün Docker istifadə edin. GPU versiyası da verilir.

Docker Build -t Colemurray / Age-Cins-Tahmini-Tutorial -f Dockerfile.

Məlumat

Bu modeli öyrətmək üçün 500.000-dən çox şəkildən ibarət olan IMDB-WIKI məlumat dəstini istifadə edirsiniz. İşləri asanlaşdırmaq üçün əvvəlcədən kəsilmiş imdb şəkillərini yükləyin (7 GB). Veriləri yükləmək üçün aşağıdakı skripti işə salın.

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

Ön emal

İndi keyfiyyətsiz şəkilləri təmizləmək və daxil olanları sabit bir şəkil ölçüsündə kəsmək üçün verilənlər bazasını işləyəcəksiniz. TensorFlow-da oxunmasını asanlaşdırmaq üçün məlumatları CSV kimi formatlaya bilərsiniz.

docker run -v $ PWD: / opt / app \ -e PYTHONPATH = $ PYTHONPATH: / opt / app \ -es Colemurray / Age-Gender-Estimation-Tutorial \ python3 /opt/app/bin/preprocess_imdb.py \ - db-path /opt/app/data/imdb_crop/imdb.mat \ --photo-dir / opt / app / data / imdb_crop \ --output-dir / opt / app / var \ --Min-Score 1.0 \ - -img ölçülü 224

Təxminən 20 dəqiqədən sonra işlənmiş bir qeydiniz olacaq.

Sonra, qiymətləndiriciyə məlumat vermək üçün TensorFlow-un tf.data məlumat boru kəməri modulundan istifadə edəcəksiniz. Tf.data, performans üçün C ++ iplərindən istifadə edərək bir verilənlər bazasını paralel olaraq oxumaq və idarə etmək üçün bir abstraktdır.

Burada TensorFlow-un CSV oxucusundan məlumatları təhlil etmək, şəkilləri əvvəlcədən işləmək, partiyalar yaratmaq və qarışdırmaq üçün istifadə edirsiniz.

model

Budur əsas CNN modeli. Model, hər bir tapşırıq üçün Softmax təsnifat başlığı olan üç rulondan və iki tam birləşdirilmiş təbəqədən ibarətdir.

Birgə zərər funksiyası

Təlim prosesi üçün Adam Optimizatordan istifadə edin. Zərər funksiyası ilə hər başın çarpaz entropiya xətası orta hesablanır və başlar arasında ortaq itki funksiyası yaranır.

Yaş və cinsə görə oynaq itkisi funksiyası

TensorFlow qiymətləndiricisi

TensorFlow qiymətləndiriciləri qrafik və işləmə müddəti üçün sadə bir soyutlama təmin edir. TensorFlow, xüsusi təxminlər yaratmaq üçün istifadə edilə bilən bir model_fn interfeysi təyin etdi.

Aşağıda yuxarıda yaradılan şəbəkəni götürəcək və təlim, qiymətləndirmə və proqnozlaşdırma yaradacaqsınız. Bu məlumatlar TensorFlow qiymətləndirmə sinfi tərəfindən qrafın davranışını dəyişdirmək üçün istifadə olunur.

qatar

Veriləri əvvəlcədən işləyib model arxitekturasını və məlumat boru kəmərini qurduqdan sonra modeli öyrətməyə başlayırsınız.

docker run -v $ PWD: / opt / app \ -e PYTHONPATH = $ PYTHONPATH: / opt / app \ -es Colemurray / Age-Cins-Estimation-Tutorial: gpu \ python3 /opt/app/bin/train.py \ --img-dir / opt / app / var / məhsul \ --train-csv /opt/app/var/train.csv \ --val-csv /opt/app/var/val.csv \ --model directory / opt / app / var / cnn-model \ --img-size 224 \ - addım sayı 200000

Proqnozlar

Aşağıda TensorFlow modelinizi yaşa və cinsə görə yükləyin. Model sabit diskdən yüklənir və təqdim olunan görüntüdə proqnozlaşdırılır.

# Aşağıdakı model yolunu model docker run -v $ PWD: / opt / app \ -e PYTHONPATH = $ PYTHONPATH: / opt / app \ -es Colemurray / Age-Gender-Estimation-Tutorial \ python3 / opt / app /bin/predict.py \ --image-path /opt/app/var/crop/25/nm0000325_rm2755562752_1956-1-7_2002.jpg \ --Modellverzeichnis / opt / app / var / cnn-model-3 / service /
Təxmini: M / 46 Aktual: M / 46

Nəticə

Bu təlimatda bir mövzunun yaşını və imicini proqnozlaşdırmaq üçün çox tapşırıqlı bir şəbəkə qurmağı və öyrətməyi öyrəndiniz. Ortaq bir memarlıq istifadə edərək, hər iki hədəf eyni zamanda öyrədilə və proqnozlaşdırıla bilər.

Növbəti addımlar:

  • Öz məlumat dəstinizi qiymətləndirin
  • Fərqli bir şəbəkə arxitekturasını sınayın
  • Fərqli hiperparametrlərlə təcrübə edin

Suallar / problemlər? GitHub'da bir problem açın

Kodu buradan tamamlayın.

Hərəkətə çağırın

Bu təlimatı bəyəndinizsə, izləyin və tövsiyə edin!

Dərin öyrənmə / maşın öyrənmə haqqında daha çox öyrənmək istərdinizmi? Digər təlimlərimə baxın:

- Tensorflow-da dərin öyrənmə ilə başlıqlar üçün generatorun yaradılması

- Tensorabanda Dərin Öyrənmə ilə Üz Tanıma Boru Kəmərinin inkişafı

- GPU ilə Tensorflow-da dərin öyrənmə CNN-ləri

- Google Compute Engine-də Keras ilə dərin öyrənmə

- Google Compute Engine-də Apache Spark ilə tövsiyə sistemləri

Məni tapa biləcəyiniz digər yerlər: