Récemment, j'ai pu comprendre comment utiliser l'API Computer Vision en la touchant, et j'ai été surpris par les performances plus élevées que prévu, j'ai donc décidé de la résumer. Après avoir présenté ce qu'est l'API Computer Vision, pourquoi elle est incroyable et à quel point elle peut être puissante lorsque vous l'utilisez réellement, j'aimerais également vous montrer le code. Grâce à cet article, j'ai appris que vous pouvez facilement utiliser une fonction de reconnaissance d'image aussi puissante en écrivant quelques lignes de code, et j'espère que vous allez l'essayer.
Service d'API de Microsoft qui jette une image dans REST et renvoie le résultat de l'analyse de l'image au format JSON. Il reconnaît non seulement l'objet dans l'image et génère la balise, mais génère également l'état et la situation de l'objet sur l'image sous forme de balise avec des verbes et des adjectifs. (ex. water, sport, swimming, man) De plus, en fonction d'eux, il ajoutera une légende plausible à l'image en une phrase. (ex. a man swimming in a pool of water)
(Voir Page officielle)
Dans les coulisses, le dernier moteur de reconnaissance d'image qui intègre les derniers résultats de recherche de Microsoft Research est en cours d'exécution, et il est ouvert aux utilisateurs généraux.
Même s'il est à la pointe de la technologie, je me demande à quel point Microsoft Research est fort dans ce domaine en premier lieu. Dans le domaine de la reconnaissance d'images, il existe un projet appelé ImageNet qui publie une énorme quantité d'images et les annotations associées sous forme de jeu de données ouvert. Il existe un concours appelé Large Scale Visual Recognition Challenge qui concourt pour la précision de reconnaissance d'image d'une grande quantité de données d'image. Lors du dernier concours (ILSVRC 2015), MSRA (Microsoft Research Asia) est classé premier dans de nombreuses tâches, tandis que les départements de recherche tels que Google et les équipes de recherche des meilleures universités étrangères sont tous en concurrence.
(Extrait des Résultats ILSVRC2015)
Étant donné que j'étais dans un laboratoire proche de ce domaine lorsque j'étais étudiant, j'avais une vague image que MS publiait souvent des «articles forts», mais je suis heureux d'avoir pu connaître la situation particulière en examinant cette fois. À la fin de cet article, je cite également les papiers associés utilisés pour l'API Computer Vision, mais quand je les regarde, les derniers résultats de recherche sont généralement utilisés, donc je suis convaincu que c'est incroyable.
Jetons en fait votre propre image et voyons le résultat de l'analyse. Cette fois, je voudrais vous présenter la ** fonction de génération de légende ** et la ** fonction de génération de balises **, que j'ai personnellement trouvées particulièrement utiles et intéressantes parmi les fonctions de reconnaissance d'image de l'API Computer Vision. Pour étudier, cette fois, j'ai créé un service Web simple qui élève l'image et affiche le résultat de l'analyse et je l'ai déployé sur Azure. (Je veux télécharger le code sur Git et le résumer la prochaine fois) Voici quelques commentaires et impressions.
Tout d'abord ** Photo de café et quatre-quarts prise au café **
La bonne réponse était un morceau de gâteau et un morceau de café dans une tasse. En regardant les étiquettes, j'ai été surpris de trouver une table, du chocolat, et même mangé, ce qui indique à moitié mangé.
Vient ensuite ** une photo décontractée prise lors d'un voyage **
En regardant les légendes générées, on a de nouveau brillamment deviné que la voiture était garée devant l'église. J'ai été impressionné par le fait que la relation de position des objets dans l'image était exprimée dans la légende.
En utilisant la sortie des balises de cette manière, il semble facile d'ajouter des fonctions de recherche d'images aux applications et aux services Web, et d'effectuer le regroupement. De plus, s'il y a un grand nombre d'images dans le service Web, il peut être intéressant de les analyser et de les classer par le nombre total de balises, ce qui donnera de nouvelles perspectives.
Je voudrais vous montrer quel type de code et combien de code peut y parvenir. Je l'ai écrit dans le système Python2. Des exemples d'implémentation de la série Python3 et C #, Java, JavaScript, Objective-C, PHP, Ruby peuvent être trouvés au bas de ici. ..
Partie relative à l'utilisation de l'API ComputerVision
import httplib
import urllib
image_url = ''
headers = {
# Request headers
'Content-Type': 'application/json',
# 'Content-Type': 'application/octet-stream',
'Ocp-Apim-Subscription-Key': 'Your key',
}
params = urllib.urlencode({
# Request parameters
'visualFeatures': 'Description',
# 'visualFeatures': 'Categories,Tags, Description, Faces, ImageType, Color, Adult',
# 'details': 'Celebrities'
})
conn = httplib.HTTPSConnection('api.projectoxford.ai')
body = """{'url': '%s'}""" % (image_url)
conn.request("POST", "/vision/v1.0/analyze?%s" % params, body, headers)
response = conn.getresponse()
caption_data = response.read()
conn.close()
Dans l'exemple ci-dessus, l'URL de l'image est lancée, Il est également possible de lancer directement des données d'image. La commutation est possible en modifiant la valeur de Content-Type dans les en-têtes.
'Content-Type': 'application/json'Lorsque vous donnez une URL d'image
'Content-Type': 'application/octet-stream'Lors de la transmission directe des données d'image
Donc, si vous voulez lancer des données directement, spécifiez octat-stream et La partie suivante
body = """{'url': '%s'}""" % (image_url)
conn.request("POST", "/vision/v1.0/analyze?%s" % params, body, headers)
Peut être changé comme suit.
file_name = ''
img = open(file_name, 'rb').read()
conn.request("POST", "/vision/v1.0/analyze?%s" % params, img, headers)
Dans les paramètres, spécifiez le résultat d'analyse souhaité avec des paramètres. À ce stade, les sept valeurs suivantes peuvent être spécifiées pour visualFeatures.
(Pour plus de détails, reportez-vous aux paramètres de requête dans ici) L'exemple ci-dessus d'analyse de ma propre photo est le résultat lorsque seule Description (fonction de génération de légende et fonction de génération de balise) est spécifiée pour visualFeatures.
Si tous sont spécifiés dans visualFeatrues, le JSON suivant sera renvoyé. Voyons le résultat lors de l'utilisation de l'image utilisée sur la page officielle. Vous pouvez également vérifier la certitude de chaque tag, s'il s'agit d'une image adulte, la position du visage de la personne reflétée, le sexe et l'âge, etc.
Image analytique |
---|
JSON est retourné
{
"categories": [
{
"name": "people_swimming",
"score": 0.98046875
}
],
"adult": {
"isAdultContent": false,
"isRacyContent": false,
"adultScore": 0.14750830829143524,
"racyScore": 0.12601403892040253
},
"tags": [
{
"name": "water",
"confidence": 0.99964427947998047
},
{
"name": "sport",
"confidence": 0.95049923658370972
},
{
"name": "swimming",
"confidence": 0.90628182888031006,
"hint": "sport"
},
{
"name": "pool",
"confidence": 0.87875884771347046
},
{
"name": "water sport",
"confidence": 0.631849467754364,
"hint": "sport"
}
],
"description": {
"tags": [
"water",
"sport",
"swimming",
"pool",
"man",
"riding",
"blue",
"top",
"ocean",
"young",
"wave",
"bird",
"game",
"large",
"standing",
"body",
"frisbee",
"board",
"playing"
],
"captions": [
{
"text": "a man swimming in a pool of water",
"confidence": 0.78501081244404836
}
]
},
"requestId": "your request Id",
"metadata": {
"width": 1500,
"height": 1155,
"format": "Jpeg"
},
"faces": [
{
"age": 29,
"gender": "Male",
"faceRectangle": {
"left": 748,
"top": 336,
"width": 304,
"height": 304
}
}
],
"color": {
"dominantColorForeground": "Grey",
"dominantColorBackground": "White",
"dominantColors": [
"White"
],
"accentColor": "19A4B2",
"isBWImg": false
},
"imageType": {
"clipArtType": 0,
"lineDrawingType": 0
}
}
Fondamentalement, les balises renvoyées sont à usage général (ex. Chiens, pas caniches), mais pour les célébrités, vous pouvez même vous identifier. Si vous souhaitez activer cette fonctionnalité, accédez aux détails dans les paramètres
'details' : 'Celebrities'
Si vous spécifiez, le résultat de l'analyse sera inclus dans JSON. Le jugement de la célébrité semble être capable d'identifier environ 200 000 personnes, et lorsque demandé par d'autres personnes qui l'ont touché, il semble que cela correspond également à Demon Kogure! (Quel âge a l'âge ...?)
Une clé d'abonnement est requise pour utiliser Cognitive Services. Un essai gratuit est disponible ici S'il vous plait enregistrez vous. Vous devrez vous connecter avec votre compte Microsoft. Spécifiez la clé d'abonnement obtenue en vous enregistrant avec Ocp-Apim-Subscription-Key sur l'exemple de code. Il existe également un forfait payant, donc si vous souhaitez l'utiliser fermement au lieu de l'essayer, veuillez consulter l'élément ** Plan d'utilisation ** suivant.
Si vous voulez essayer quelque chose avant d'écrire votre propre code, jetez un œil à la page de commentaires officiels (https://www.microsoft.com/cognitive-services/en-us/computer-vision-api). Lorsque vous le recevez, vous pouvez sélectionner l'image préparée ou télécharger votre propre image et la vérifier, c'est donc recommandé.
Si vous avez différentes opinions et idées, par exemple essayer de l'utiliser et faire plus ici, Give your apps a human side (Page de partage de commentaires référencée par l'équipe de développement de l'API Computer Vision). C'est bien de pouvoir fournir des opinions côté utilisateur directement à l'équipe de développement de cette manière. Chaque idée d'amélioration peut faire l'objet d'un vote, et si les votes sont recueillis, elle sera mieux classée, il sera donc plus facile d'attirer l'attention. Utilisons-le ensemble et améliorons-le!
À partir d'aujourd'hui, le ** plan standard ** a été ajouté au plan d'essai précédent gratuit! Il n'y a pas de SLA ou de support car l'ensemble des services cognitifs est toujours en phase de prévisualisation, Je pense que vous pouvez également l'envisager pour une utilisation professionnelle.
Plan | Description | Price |
---|---|---|
Free | 5,000 transactions per month | Free |
Standard | 10 transactions per second | $ 1.50 per 1000 transactions |
Vous pouvez configurer un compte de plan standard directement depuis ici. Si vous n'avez pas d'abonnement Microsoft Azure, vous aurez besoin d'un abonnement Microsoft Azure pour utiliser le plan standard, donc si vous n'en avez pas, un mois à partir de ici Veuillez essayer le compte d'essai gratuit pour 20 500 ¥.
De plus, s'il existe un moyen d'utiliser cette API qui a un impact commercial, veuillez me le faire savoir dans les commentaires ou personnellement. Cela m'intéresse beaucoup personnellement! Lol
Enfin, je voudrais présenter les résultats de la recherche utilisés derrière l'API Computer Vision, qui a été extrait de la page officielle. (URL officielle de référence) Le premier article est celui adopté dans CVPR 2015, n'est-ce pas? CVPR est une conférence de premier plan dans les conférences internationales de vision par ordinateur, on peut donc dire qu'il s'agit d'une recherche de assez haute qualité et de haut niveau. Je pense qu'il est très intéressant, avec une rapidité sans précédent, que la recherche de pointe qui vient d'être annoncée il y a un an soit développée en tant que service pouvant être utilisé pour le grand public.
Hao Fang, Saurabh Gupta, Forrest Iandola, Rupesh Srivastava, Li Deng, Piotr Dollar, Jianfeng Gao, Xiaodong He, Margaret Mitchell, John Platt, Lawrence Zitnick, and Geoffrey Zweig, From Captions to Visual Concepts and Back,CVPR,June2015(won1stPrizeattheCOCOImageCaptioningChallenge2015)
Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep Residual Learning for Image Recognition.arXiv(wonbothImageNetandMSCOCOcompetitions2015)
Yandong Guo, Lei Zhang, Yuxiao Hu, Xiaodong He, Jianfeng Gao, MS-Celeb-1M: Challenge of Recognizing One Million Celebrities in the Real World, IS&T International Symposium on Electronic Imaging, 2016
Xiao Zhang,Lei Zhang, Xin-Jing Wang, Heung-Yeung Shum, Finding Celebrities in Billions of Web Images, accepted by IEEE Transaction on Multimedia, 2012
L'API Computer Vision (https://www.microsoft.com/cognitive-services/en-us/computer-vision-api) est les services cognitifs de Microsoft (https://www.microsoft.com/cognitive). -services /), l'un des services d'API basés sur le cloud C'est une API qui appartient à la catégorie Vision parmi les cinq catégories suivantes.
Les API de la catégorie Vision sont les suivantes.
L'API Computer Vision fournit les fonctionnalités suivantes, y compris la reconnaissance d'image:
Recommended Posts