API de transfert de Style

Par Benjamin Nicol

Cette API permet d'utiliser une technologie du machine learning qui est le transfert de style. Elle utilise Tensorflow Lite ainsi qu'un modèle adapté pour une utilisation sur environnement embarqué.

Cette API utilise les modèles de transfert de style publiés par Google.

Installation

Afin que l'API fonctionne correctement, il suffit d'installer les deux dépendances suivantes : TensorFlow et Flask.

$ pip install Tensorflow
$ pip install Flask

Et de la lancer en utilisant python (3.7)

$ python api.py

Routes

L'API dispose de trois routes pour le moment :

  • GET :

    • / : Renvoie des informations relatives à l'API
    • /example : Permet d'avoir un exemple de ce que peux renvoyer l'API
  • POST :

    • /model/<modelName> : A utiliser avec une image dans un attribut image, renvoit l'image envoyée avec le style donnée dans le paramètre <modelName>

Exemples d'utilisation :

# Renvoie le résultat de l'exemple
$ curl -o example.jpg http://localhost:5000/example

# Renvoie le fichier 'lance.jpg' avec le style 'sphere' dans le fichier 'output.jpg'
$ curl --request POST 'http://127.0.0.1:5000/model/udnie' --form 'file=@/home/bnicol/Pictures/lance.jpg' --output 'output.jpg'

Structure de fichiers

L'API est constiuée du dossier racine contenant les fichiers nécessaires au fonctionnement de celle-ci et de trois sous-dossiers

  • styles : contenant les différents styles disponibles
  • upload : ici sont sauvegardées les images envoyées par le POST avant le traitement
  • save : ici sont sauvegardées les images après le transfert de style

Styles

Nom du style (<modelName>) Tableau original
udnie Udnie, par Francis PicabiaUdnie, Young American Girl by Francis Picabia
scream Le cri, par Edvard Munch
Le cri, par Edvard Munch
sphere Hand with Reflecting Sphere, par M.C. Escher
Hand with Reflecting Sphere, par M.C. Escher