Jüngste Fähigkeit zur Bilderkennung - Die neuesten Forschungsergebnisse von MS unter Verwendung der Computer Vision API mit Python

Vor kurzem konnte ich durch Berühren verstehen, wie die Computer Vision-API verwendet wird, und ich war überrascht über die höhere Leistung als erwartet. Daher habe ich beschlossen, sie zusammenzufassen. Nachdem ich vorgestellt habe, was die Computer Vision-API ist, warum sie erstaunlich ist und wie leistungsfähig sie sein kann, wenn Sie sie tatsächlich verwenden, möchte ich Ihnen auch den Code zeigen. Durch diesen Artikel habe ich gelernt, dass Sie eine so leistungsstarke Bilderkennungsfunktion einfach verwenden können, indem Sie ein paar Codezeilen schreiben, und ich hoffe, Sie werden es versuchen.

Was ist die Computer Vision API überhaupt?

Der API-Dienst von Microsoft, der ein Bild in REST auslöst und das Ergebnis der Analyse des Bildes im JSON-Format zurückgibt. Es erkennt nicht nur das Objekt im Bild und gibt das Tag aus, sondern gibt auch den Status und die Situation des Objekts auf dem Bild als Tag mit Verben und Adjektiven aus. (ex. water, sport, swimming, man) Darüber hinaus fügt es dem Bild in einem Satz eine plausible Beschriftung hinzu. (ex. a man swimming in a pool of water)

sample image (Siehe Offizielle Seite)

Hinter den Kulissen läuft die neueste Bilderkennungs-Engine, die die neuesten Forschungsergebnisse von Microsoft Research enthält und für die breite Öffentlichkeit zugänglich ist.

Fähigkeit von Microsoft Research, eine aktive Rolle auf der Rückseite der Computer Vision API zu spielen

Obwohl es auf dem neuesten Stand ist, frage ich mich, wie stark Microsoft Research in diesem Bereich überhaupt ist. Im Bereich der Bilderkennung gibt es ein Projekt namens ImageNet, das eine große Anzahl von Bildern und zugehörigen Anmerkungen als offenen Datensatz veröffentlicht. Es gibt einen Wettbewerb namens Large Scale Visual Recognition Challenge, der von diesem Wettbewerb gesponsert wird und um die Bilderkennungsgenauigkeit einer großen Menge von Bilddaten konkurriert. Beim jüngsten Wettbewerb (ILSVRC 2015) steht MSRA (Microsoft Research Asia) bei vielen Aufgaben an erster Stelle, während Forschungsabteilungen wie Google und Forschungsteams von führenden ausländischen Universitäten miteinander konkurrieren.

(Zitiert aus ILSVRC2015-Ergebnissen)

Da ich als Student in einem Labor in der Nähe dieses Fachgebiets war, hatte ich ein vages Bild davon, dass MS oft "starke Papiere" veröffentlichte, aber ich bin froh, dass ich die spezifische Situation durch eine Untersuchung dieses Mal kennen konnte. Am Ende dieses Artikels zitiere ich auch die verwandten Artikel, die für die Computer Vision API verwendet werden, aber wenn ich sie mir anschaue, werden normalerweise die neuesten Forschungsergebnisse verwendet, daher bin ich überzeugt, dass es erstaunlich ist.

Wie genau ist es?

Lassen Sie uns tatsächlich Ihr eigenes Bild werfen und das Analyseergebnis sehen. Dieses Mal möchte ich ** Caption Generation Function ** und ** Tag Generation Function ** vorstellen, die ich persönlich als besonders nützlich und interessant unter den Bilderkennungsfunktionen der Computer Vision API empfand. Zum Lernen habe ich diesmal einen einfachen Webdienst erstellt, der das Bild aufruft, das Analyseergebnis anzeigt und es in Azure bereitstellt. (Ich möchte den Code auf Git hochladen und beim nächsten Mal zusammenfassen.) Nachfolgend einige Kommentare und Eindrücke.

Zuallererst ** Foto von Kaffee und Pfundkuchen, aufgenommen im Café **

image

Die richtige Antwort war ein Stück Kuchen und ein Stück Kaffee in einer Tasse. Als ich mir die Etiketten ansah, war ich überrascht, einen Tisch zu finden, Schokolade und sogar gegessen, was darauf hinweist, dass ich gerade essen wollte.

Als nächstes kommt ** ein lässiges Foto, das auf Reisen aufgenommen wurde ** image

Bei Betrachtung der generierten Bildunterschriften wurde erneut brillant vermutet, dass das Auto vor der Kirche geparkt war. Ich war beeindruckt, dass die Positionsbeziehung der Objekte im Bild in der Beschriftung ausgedrückt wurde.

Wenn Sie die auf diese Weise ausgegebenen Tags verwenden, ist es einfach, Apps und Webdiensten Bildsuchfunktionen hinzuzufügen und eine Gruppierung durchzuführen. Wenn der Webdienst eine große Anzahl von Bildern enthält, kann es auch interessant sein, diese zu analysieren und nach der Gesamtzahl der Tags zu ordnen, um neue Erkenntnisse zu gewinnen.

Wie setzen Sie es um?

Ich möchte Ihnen zeigen, welche Art von Code und wie viel Code dies erreichen kann. Ich habe es im Python2-System geschrieben. Implementierungsbeispiele für Python3-Serien und C #, Java, JavaScript, Objective-C, PHP und Ruby finden Sie unten in hier. ..

ComputerVision API-Nutzungsteil


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()

Im obigen Beispiel wird die Bild-URL ausgelöst. Es ist auch möglich, Bilddaten direkt zu werfen. Das Wechseln ist möglich, indem der Wert von Content-Type in den Headern geändert wird.

'Content-Type': 'application/json'Bei Angabe einer Bild-URL
'Content-Type': 'application/octet-stream'Bei der direkten Abgabe von Bilddaten

Wenn Sie also Daten direkt werfen möchten, geben Sie octat-stream und an Der folgende Teil

body = """{'url': '%s'}""" % (image_url)
conn.request("POST", "/vision/v1.0/analyze?%s" % params, body, headers)

Kann wie folgt geändert werden.

file_name = ''
img = open(file_name, 'rb').read()
conn.request("POST", "/vision/v1.0/analyze?%s" % params, img, headers)

Geben Sie in params das gewünschte Analyseergebnis mit Parametern an. Zu diesem Zeitpunkt können die folgenden sieben Werte für visualFeatures angegeben werden.

(Weitere Informationen finden Sie unter Anforderungsparameter in hier) Das obige Beispiel für die Analyse meines eigenen Fotos ist das Ergebnis, wenn für visualFeatures nur die Beschreibung (Untertitelgenerierungsfunktion und Taggenerierungsfunktion) angegeben ist.

Wenn alle in visualFeatrues angegeben sind, wird der folgende JSON zurückgegeben. Sehen wir uns das Ergebnis an, wenn Sie das auf der offiziellen Seite verwendete Bild verwenden. Sie können auch die Sicherheit jedes Tags überprüfen, ob es sich um ein Erwachsenenbild handelt, die Position des Gesichts der reflektierten Person, Geschlecht und Alter usw.

Analytisches Bild
image

JSON kehrte zurück


{
  "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
  }
}

Grundsätzlich sind die zurückgegebenen Tags für allgemeine Zwecke bestimmt (z. B. Hunde, keine Pudel), aber für Prominente können Sie sich sogar identifizieren. Wenn Sie diese Funktion aktivieren möchten, gehen Sie zu Details in den Parametern

'details' : 'Celebrities'

Wenn Sie angeben, wird das Analyseergebnis in JSON aufgenommen. Das Promi-Urteil scheint in der Lage zu sein, etwa 200.000 Menschen zu identifizieren, und wenn es von anderen Personen gefragt wird, die es berührt haben, scheint es, dass es auch Demon Kogure entspricht! (Wie alt ist das Alter ...?)

Wie fange ich an?

Für die Nutzung von Cognitive Services ist ein Abonnementschlüssel erforderlich. Eine kostenlose Testversion ist [hier] verfügbar (https://www.microsoft.com/cognitive-services/en-us/subscriptions?productId=0products/54d873dd5eefd00dc474a0f4) ) Bitte registrieren. Sie müssen sich mit Ihrem Microsoft-Konto anmelden. Geben Sie den Abonnementschlüssel an, den Sie durch Registrierung bei Ocp-Apim-Abonnementschlüssel im Beispielcode erhalten haben. Es gibt auch einen kostenpflichtigen Plan. Wenn Sie ihn also fest verwenden möchten, anstatt ihn auszuprobieren, lesen Sie bitte den folgenden Punkt ** Nutzungsplan **.

Wenn Sie etwas ausprobieren möchten, bevor Sie Ihren eigenen Code schreiben, besuchen Sie die offizielle Kommentarseite (https://www.microsoft.com/cognitive-services/en-us/computer-vision-api). Wenn Sie es erhalten, können Sie das vorbereitete Bild auswählen oder Ihr eigenes Bild hochladen und es überprüfen. Es wird daher empfohlen.

image

Wenn Sie verschiedene Meinungen und Ideen haben, z. B. versuchen, sie zu nutzen und hier mehr zu tun, Give your apps a human side (Feedback-Sharing-Seite, auf die das Computer Vision API-Entwicklungsteam verweist). Es ist schön, auf diese Weise benutzerseitige Meinungen direkt an das Entwicklungsteam übermitteln zu können. Über jede Verbesserungsidee kann abgestimmt werden. Wenn die Stimmen gesammelt werden, wird sie höher eingestuft, sodass die Aufmerksamkeit leichter auf sich gezogen werden kann. Lassen Sie es uns gemeinsam nutzen und verbessern!

Nutzungsplan (Postskriptum 2016/8/5)

Ab heute wurde ** Standardplan ** zum vorherigen Testplan hinzugefügt. Kostenlos! Es gibt keine SLA oder Unterstützung, da sich die gesamten Cognitive Services noch in der Vorschau befinden. Ich denke, Sie können es auch für geschäftliche Zwecke in Betracht ziehen.

Plan Description Price
Free 5,000 transactions per month Free
Standard 10 transactions per second $ 1.50 per 1000 transactions

Sie können ein Standardplan-Konto direkt von [hier] aus einrichten (https://portal.azure.com/#create/Microsoft.CognitiveServices/apitype/ComputerVision/pricingtier/S0). Wenn Sie kein Microsoft Azure-Abonnement haben, benötigen Sie ein Microsoft Azure-Abonnement, um den Standardplan verwenden zu können. Wenn Sie also kein Abonnement haben, einen Monat ab hier Bitte versuchen Sie es mit dem kostenlosen Testkonto für 20.500 Yen.

Wenn es eine Möglichkeit gibt, diese API zu verwenden, die geschäftliche Auswirkungen hat, lassen Sie es mich bitte in den Kommentaren oder persönlich wissen. Ich persönlich interessiere mich sehr dafür! Lol

Referenz (Die Forschung hinter Computer Vision API)

Abschließend möchte ich die Forschungsergebnisse vorstellen, die hinter der Computer Vision API verwendet wurden, die von der offiziellen Seite abgerufen wurde. (Offizielle Referenz-URL) Das erste Papier wurde in CVPR 2015 angenommen, nicht wahr? CVPR ist eine Top-Konferenz in internationalen Computer Vision-Konferenzen. Man kann also sagen, dass es sich um eine Forschung von relativ hoher Qualität und hohem Niveau handelt. Ich denke, es ist sehr interessant mit einem beispiellosen Gefühl der Geschwindigkeit, dass die vor einem Jahr angekündigte Spitzenforschung als ein Dienst entwickelt wird, der für die breite Öffentlichkeit genutzt werden kann.

Referenz 2 (Positionierung der Computer Vision API innerhalb der MS)

Die Computer Vision-API (https://www.microsoft.com/cognitive-services/en-us/computer-vision-api) ist die Cognitive Services von Microsoft (https://www.microsoft.com/cognitive). -services /), einer der Cloud-basierten API-Dienste Es ist eine API, die aus den folgenden fünf Kategorien zur Kategorie Vision gehört.

Die APIs in der Kategorie Vision lauten wie folgt.

Die Computer Vision API bietet die folgenden Funktionen, einschließlich der Bilderkennung:

Recommended Posts

Jüngste Fähigkeit zur Bilderkennung - Die neuesten Forschungsergebnisse von MS unter Verwendung der Computer Vision API mit Python
Letzte Ranglistenerstellung mit der Qiita-API mit Python
Textextraktion (Lese-API) mit Azure Computer Vision-API (Python3.6)
Bilderkennung mit API aus null Wissen mit AutoML Vision
Bilderfassung von Firefox mit Python
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Implementierung von CRUD mithilfe der REST-API mit Python + Django Rest Framework + igGrid
Grundlagen der binärisierten Bildverarbeitung durch Python
Python: Grundlagen der Bilderkennung mit CNN
Transkription von Bildern mit der Vision API von GCP
Zeichnen mit Matrix-Reinventor von Python Image Processing-
Probleme mit den Ausgabeergebnissen mit der Cloud Vision-API von Google
Textextraktion mit GCP Cloud Vision API (Python3.6)
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Anonymer Upload von Bildern mit der Imgur-API (mit Python)
Verschiedene Memoranden bei Verwendung von SDK der LINE Messaging API mit Python (2.7.9) + Google App Engine
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren
[Frage] Über die API-Konvertierung von Chat-Bot mit Python
Registrieren Sie Tickets mit der Redmine-API mithilfe von Python-Anforderungen
[Python] Verwenden der Linien-API [1. Erstellung des Beauty-Bots]