La classification d’images est une branche de l’informatique qui étudie comment construire des algorithmes qui étiquettent automatiquement les images. Par exemple, vous pouvez utiliser le traitement d’images pour étiqueter automatiquement le logo de votre entreprise comme un logo de voiture, un logo de fleur, etc. Dans cet article, nous allons explorer 15 paquets Python pour le traitement d’images.

OpenCV

OpenCV est une bibliothèque python open-source qui comprend plusieurs milliers de fonctions pour faciliter le développement d’applications de vision par ordinateur. Elle comprend un ensemble d’algorithmes de traitement d’images, des algorithmes pour détecter et reconnaître des visages, suivre des objets, classer des actions humaines dans des vidéos, etc. La bibliothèque supporte plusieurs systèmes d’exploitation (Windows, Mac OS X, Linux, Android, iOS) et elle est écrite en C++.

Command to install: pip install opencv-python

TensorFlow

TensorFlow est un système rapide, flexible et complet pour construire des systèmes d’apprentissage automatique. Il est destiné à être utilisé avec des problèmes qui ont une structure conceptuelle claire, en particulier, les problèmes qui peuvent être exprimés comme une transformation linéaire des entrées (par exemple, la factorisation matricielle, la prédiction structurée, l’apprentissage par renforcement, la reconnaissance d’images, et bien d’autres). Pour la classification d’images, vous pouvez utiliser un modèle déjà pré-entraîné qui est disponible dans TensorFlow pour faciliter l’utilisation.

Command to install: pip install tensorflow

Scikit-Image

Scikit-image est une bibliothèque gratuite pour Python, qui implémente des algorithmes et des utilitaires destinés au traitement et à l’analyse d’images, ainsi qu’à la visualisation scientifique. Elle est construite sur la base des populaires paquets python NumPy et SciPy et ajoute un support pour le traitement et l’analyse d’images, ainsi que pour le traitement géométrique d’images. En particulier, Scikit-image fournit une collection de filtres de traitement d’image (opérations morphologiques, filtres de détection des bords, opérations sur l’espace couleur, filtrage de fréquence, opérations de conversion de format d’image), une collection de filtres d’image géométriques (tels que les opérations de recalage et de peinture d’image), des routines simples d’analyse d’image (telles que la mesure de distances, de surfaces, de volumes et de centres de masse) et une collection d’algorithmes de traitement d’images multidimensionnelles.

Command to install: pip install scikit-image

Keras

Keras est une API de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au-dessus de TensorFlow, CNTK ou Theano. Elle a été développée dans le but de permettre une expérimentation rapide. Pour mener de bonnes recherches, il est essentiel de pouvoir passer de l’idée au résultat dans les meilleurs délais. Avec Keras, vous pouvez former votre modèle de réseau à partir de zéro et le configurer comme vous le souhaitez.

Command to install: pip install keras

SciPy

Le projet scikit-image est une collection de modules Python destinés au traitement des images. Il prend en charge de nombreux formats d’image courants, notamment JPEG, PNG et TIFF. Il comprend des algorithmes de traitement d’images tels que l’extraction de caractéristiques (détection de bords, détection de coins, détection de blob), les transformations d’images (transformations affines, transformations de perspective, déformation d’images, modification d’histogrammes), le traitement des couleurs, la peinture et le filtrage d’images. Pour classer les images, vous pouvez utiliser le classificateur KNN de la bibliothèque scikit-learn.

Command to install: pip install scipy

Pillow/PIL

La bibliothèque Pillow est un fork de la bibliothèque PIL, qui est l’une des bibliothèques Python les plus célèbres, gratuites et open-source pour la manipulation d’images. Elle est maintenue par le développeur de la bibliothèque PIL, qui a bifurqué du projet pour ré-licencier le code sous la licence BSD. Aujourd’hui, Pillow est considéré comme la bibliothèque « officielle » de la bibliothèque Python Imaging Library (PIL), et le responsable de la bibliothèque fait partie de l’équipe de développement de Pillow. Pillow peut se vanter de proposer une tonne de formats de fichiers d’images différents, tels que . PNG, .JPEG, PPM, .GIF, .TIFF et bien d’autres encore. Grâce à ce large éventail, les utilisateurs pourront profiter de toutes sortes de capacités de traitement d’images étonnantes que Pillow leur offre, comme l’ajout de texte ou l’augmentation/diminution de la taille des images dans leur boîte à outils.

Command to install: pip install Pillow

Mahotas

Mahotas est une bibliothèque permettant d’écrire des applications de vision par ordinateur en python. Elle vous permet d’utiliser des algorithmes de traitement d’images de pointe sans avoir à programmer vous-même les détails de ces algorithmes. Mahotas peut être utilisé à partir de la ligne de commande avec la commande mahotas_client, ou via son API en utilisant le module Mahotas. Il possède de nombreux modules prêts à l’emploi qui sont faciles à utiliser.

Command to install: pip install mahotas

SimpleITk

SimpleITk est la bibliothèque open-source avancée de vision par ordinateur pour python. Elle fournit un ensemble d’outils puissants pour vous aider à traiter des images et des vidéos et à construire simplement des applications.  SimpleITk est hautement optimisée et utilise des techniques de multithreading pour tirer pleinement parti des processeurs multicœurs.  Elle est compatible avec Python 2 et Python 3. 

Command to install: pip install SimpleITK

Numpy

Lorsque vous travaillez avec des images, vous pouvez utiliser le tableau NumPy de Python pour faire le travail. Mais qu’est-ce que NumPy ? Numpy est une bibliothèque qui fournit des structures de données rapides, flexibles et expressives en Python. Elle fournit également des routines performantes pour le calcul de transformations numériques et de fonctions mathématiques de base. Elle peut être utilisée pour manipuler des données d’image à l’aide de l’informatique scientifique. Vous pouvez utiliser NumPy avec TensorFlow ou Keras pour obtenir de meilleurs résultats.

Command to install: pip install numpy

OpenFace

OpenFace est une bibliothèque de reconnaissance faciale avec un réseau neuronal profond. Elle est développée par Facebook AI Research (FAIR).  La bibliothèque est basée sur Torch, un cadre de calcul scientifique avec un large support pour les algorithmes d’apprentissage automatique. Elle peut être utilisée pour le prototypage rapide et dans des applications en temps réel pour la reconnaissance des visages. Elle fournit également un ensemble d’outils pour l’analyse fine des images et des données de visages.

PytorchCV

Essentiellement, PyTorchCv est un fork de Pytorch-cv pour supporter Python3 et PyTorch 1.0.  PyTorchCv est un paquetage Python pour la vision par ordinateur basé sur PyTorch. Il est facile à utiliser et supporte plusieurs formats d’images. Il supporte également les couches PyTorch RNN (réseau neuronal récurrent) et LSTM (mémoire à long terme), ce qui permet aux utilisateurs de former des RNN et des LSTM pour la vision par ordinateur.

Command to install: pip install pytorchcv

Pgmagick

Pgmagick est une interface Python à ImageMagick. Elle est basée sur la bibliothèque Mac, et a été écrite par John Plaice et est maintenant maintenue par Phil Harvey. ImageMagick permet de lire, manipuler et écrire des images dans une grande variété de formats graphiques, dont PNG, JPEG, GIF, TIFF, PDF, Photo CD et SVG.

Command to install: pip install pgmagick

Pytessarct

La bibliothèque Pytessarct est une enveloppe python pour le moteur OCR de Tesseract. Elle est conçue pour être utilisée avec les fichiers images, donc vous aurez toujours besoin d’un autre logiciel pour reconnaître le texte. C’est une bibliothèque très populaire, mais pas la seule ; les paquets que j’ai mentionnés plus haut dans la liste sont beaucoup plus capables de faire de la classification d’images. Mais Pytessarct vous permet d’extraire le texte des images dans de nombreuses langues et formats différents.

Command to install: pip install pytesseract

SimpleCV

SimpleCV est une bibliothèque open-source de vision par ordinateur qui fonctionne sous Python. En utilisant SimpleCV, vous pouvez détecter et reconnaître des visages, détecter et reconnaître des objets, détecter et reconnaître du texte, compter des objets, suivre des objets, et trouver des images similaires parmi de nombreuses autres fonctionnalités. Cette bibliothèque possède bien d’autres fonctionnalités comme la reconnaissance des visages à l’aide de HaarCascades ou de LBP, l’OCR pour le texte dans les images, la manipulation totale des images comme le recadrage, le redimensionnement, la rotation, le retournement, la mise en miroir, la conversion de format, etc.

Command to install: pip install SimpleCV

ImageMagick

En ce qui concerne la classification des images, ImageMagick n’est certainement pas la meilleure option mais il convient pour créer, éditer et composer des images bitmap. Il peut lire et écrire des images dans une variété de formats (plus de 100), notamment PNG, JPEG, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF et SVG. Utilisez ImageMagick pour traduire, retourner, inverser, faire pivoter, mettre à l’échelle, cisailler et transformer des images, ajuster leurs couleurs, appliquer divers effets spéciaux ou dessiner du texte, des lignes, des polygones, des ellipses et des courbes de Bézier. ImageMagick est un logiciel libre fourni sous la licence Apache. Il est couramment utilisé, entre autres, pour la retouche de photos et la préparation de données graphiques pour une utilisation sur le web.

Command to install: pip install foliantcontrb.imagemagick

Final Words

Dans ce billet de blog, nous avons exploré les différents types de paquets Python pour le traitement d’images. Nous avons passé en revue 15 paquets Python pour le traitement d’images qui permettent d’automatiser une grande partie des processus liés aux images. Ces paquets Python pour le traitement d’images vont des implémentations de bas niveau d’algorithmes populaires aux cadres de haut niveau qui facilitent la classification et le traitement des images. Certains paquets liés à ce sujet sont relativement nouveaux ou sous-développés, mais il n’y a pas de pénurie de paquets pouvant être utilisés dans ce domaine. De toute façon, il est préférable d’utiliser des bibliothèques plus matures et plus connues. J’espère que ce blog vous aidera à décider quel outil est le meilleur pour votre travail.