Reconnaissance d’objets avec TensorFlow

TensorFlow est une librairie pour le machine learning et l’intelligence logiciel. Nous allons aujourd’hui l’utiliser avec le language Python mais vous pouvez également l’utiliser en C.

Vidéo de présentation :

Je suis sous Mac, et pour installer la librairie j’ai utilisé les commandes suivantes :

$ sudo easy_install pip

$ sudo easy_install --upgrade six

Ensuite, il faut choisir la bonne version à installer :

# Ubuntu/Linux 64-bit, CPU only, Python 2.7 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 7.5 and CuDNN v5. For other versions, see "Install from sources" below. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only, Python 2.7: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0-py2-none-any.whl
# Mac OS X, GPU enabled, Python 2.7: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0-py2-none-any.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.4 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 7.5 and CuDNN v5. For other versions, see "Install from sources" below. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, CPU only, Python 3.5 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp35-cp35m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 7.5 and CuDNN v5. For other versions, see "Install from sources" below. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp35-cp35m-linux_x86_64.whl
# Mac OS X, CPU only, Python 3.4 or 3.5: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0-py3-none-any.whl
# Mac OS X, GPU enabled, Python 3.4 or 3.5: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0-py3-none-any.whl

Il ne reste plus qu’à installer. Selon que vous êtes sous Python 2 ou 3, voici les commandes :

# Python 2 $ sudo pip install --upgrade $TF_BINARY_URL

# Python 3 $ sudo pip3 install --upgrade $TF_BINARY_URL

Nous sommes maintenant prêts pour faire un premier test avec une photo ou une image que vous aurez trouvé sur internet.

Allons dans le répertoire ou la librairie est installée. Dans mon cas, elle se situe ici (sous Mac) :

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tensorflow/

Vous pouvez situer l’emplacement en utilisant la commande suivante :

locate tensorflow

Cette commande, qui fonctionne aussi sous Mac ou Linux, vous liste les emplacements ou « tensorflow » est trouvé. Déplacez vous jusqu’au bon répertoire. Tapez ensuite cette commande pour faire un test :

sudo python classify_image.py

Vous devriez obtenir le résultat suivant :

giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.88493) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00878) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00317) custard apple (score = 0.00149) earthstar (score = 0.00127)

Par défaut, c’est une image de panda qui est identifiée. Nous allons pouvoir maintenant tester avec nos propres photos. J’ai pris une photo chez moi. Il s’agit d’une guitare et la photo est de qualité plutôt moyenne.

La voici :

guitare

C’est assez sombre, et franchement je ne m’attendais pas à ce que le script puisse reconnaitre un objet sur cette photo. Et pourtant …

En tapant la commande qui suit, Tensorflow a su reconnaitre l’objet principal de la photo :

sudo python classify_image.py --image_file /Users/maxduke/Desktop/test.jpg

test.jpg est évidemment le fichier jpeg de ma photo. Le script m’a renvoyé le résultat suivant :

electric guitar (score = 0.96822)

acoustic guitar (score = 0.00692)

stage (score = 0.00334)

pick, plectrum, plectron (score = 0.00106)

microphone, mike (score = 0.00057)

Comme vous pouvez le constater, le script est certain à 96% qu’il s’agit d’une guitare électrique. C’est presque incroyable mais ça fonctionne. J’ai fait une cinquantaine de tests, et TensorFlow a retrouvé 2 fois sur 3 le bon objet 🙂

Ca laisse beaucoup de place à l’imagination. Comment se servir d’un tel script ? Je suis en ce moment en train de concevoir un robot avec un Raspberry, et ça me donne pas mal d’idées … Et si mon robot pouvait reconnaitre mon chat et ainsi pouvoir interagir avec lui ?

Je reviendrais certainement avec d’autres articles sur le sujet. En attendant, amusez-vous bien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Système anti spam *