Le nouveau paramètre « faces » de détection de visages en image

Cela fait un moment que le Robot /image/facedetect
n’est pas apparu sur notre blog. Et quel meilleur moment pour en parler qu’à l’occasion de sa
dernière évolution, le paramètre faces.
Le Robot /image/facedetect repère automatiquement l’emplacement des visages sur une image, renvoie leurs coordonnées, recadre autour d’un groupe ou crée des images entièrement nouvelles de chaque visage trouvé.

Présentation des fonctionnalités du nouveau paramètre
Avant cette mise à jour, le Robot /image/facedetect recadrait chaque visage trouvé. Ainsi, pour une image contenant cinq visages, vous obteniez cinq images plus petites contenant chacune un seul visage.
Si cette option existe toujours et s’est révélée plutôt utile, elle ne suffit pas dans d’autres
situations. Pour pallier les limites du Robot, le nouveau paramètre
faces entre en jeu : il permet de choisir le visage utilisé pour le recadrage en fonction de
certains attributs de l’image utilisée.
La démonstration suivante utilise une image gratuite trouvée sur Unsplash.
Découvrir les nouvelles valeurs du paramètre
Voici le script que j’ai écrit en Python pour tester le nouveau paramètre :
# pip install pytransloadit
from transloadit import client
tl = client.Transloadit('YOUR_TRANSLOADIT_KEY', 'YOUR_TRANSLOADIT_SECRET')
assembly = tl.new_assembly()
assembly.add_file(open("test.jpg", "rb"))
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": "each"} )
# Start the Assembly
response = assembly.create(wait=True)
result_url = response.data.get('results').get('face-detect')
print("Your result:", result_url) #returns a url containing the result of the program
Dans le programme ci-dessus, nous utilisons l’image d’entrée suivante :

Veillez à remplacer YOUR_TRANSLOADIT_KEY et YOUR_TRANSLOADIT_SECRET par les clés de votre compte.
Vous les trouverez dans les paramètres API de votre compte.
Dans les exemples ci-dessous, je ne montrerai que la partie du code modifiée avec une nouvelle
valeur pour le paramètre faces, c’est-à-dire la ligne 8.
Valeur : "group"
Il s’agit d’une toute nouvelle fonctionnalité. group détermine l’emplacement des visages dans
une image et les regroupe.
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": "group"} )
Nous obtenons ainsi les résultats suivants :

Valeur : "each"
Il s’agit du mode de fonctionnement d’origine, ainsi que de la valeur par défaut. "each" permet
de renvoyer chaque visage séparément. Cela peut s’avérer utile pour extraire de nombreux avatars
d’une seule photo de classe, ou encore pour savoir facilement combien de visages figurent sur une
image.
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": "each"} )
Nous obtenons ainsi les résultats suivants :

Valeur : "max-confidence"
Troisièmement, voyons ce qui se passe lorsque vous définissez faces sur la valeur "max-confidence".
Vous verrez que l’image est traitée et que seul le visage ayant la valeur de confiance la plus
élevée est renvoyé. Cette valeur est déterminée en coulisses par un réseau de neurones, qui nous
fournit une valeur de confiance indiquant le degré de certitude que la zone détectée contient bien
un visage. C’est utile pour recadrer automatiquement un avatar.
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": "max-confidence"} )
Nous obtenons ainsi les résultats suivants :

Valeur : "max-size"
La quatrième valeur examinée est "max-size". Cette valeur calcule lequel des visages trouvés
possède la plus grande surface et renvoie le résultat. Elle extrait ainsi le visage dominant d’une
image, mais pas forcément celui qui a la valeur de confiance la plus élevée.
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": "max-size"} )
Nous obtenons ainsi les résultats suivants :

Valeur : entier
La cinquième et dernière valeur examinée est, eh bien, n’importe quel entier. Cette valeur
sélectionne un visage de l’image à l’aide d’un index, les visages de l’image étant triés à partir du
coin supérieur gauche. C’est utile si vous souhaitez qu’un utilisateur final choisisse un visage en
deux passes. Ou peut-être souhaitez-vous sélectionner la deuxième personne en partant de la gauche
sur une photo ; dans ce cas, vous indiqueriez 1, car la numérotation commence à zéro.
assembly.add_step("face-detect", "/image/facedetect", { "crop": True, "faces": 1} )
Nous obtenons ainsi les résultats suivants :

Voilà qui conclut notre présentation du
Robot /image/facedetect et de son nouveau paramètre faces.
Nous avons hâte de voir ce que vous créerez avec ces nouvelles fonctionnalités, en combinaison avec
tous les autres Robots et fonctionnalités à votre disposition.