[PYTHON] Die Bildanalyse war mit den von Microsoft COCO bereitgestellten Daten und der API einfach

Was ist Microsoft COCO?

Screen Shot 2016-02-16 at 08.37.28.png

Zitat: http://mscoco.org/

Ein Datensatz mit Bilderkennung, Segmentierung und Untertitelung.

Selbst wenn Sie Bildverarbeitung durchführen möchten, ist das erste Problem, das in Konflikt gerät, das Problem des Datasets. Da Microsoft COCO jedoch über das erforderliche Dataset und die APIs von Python und Matlab verfügt, werde ich es verwenden. Das Merkmal ist, dass es einfach ist.

Laden Sie zunächst den Datensatz aus dem Folgenden herunter.

http://mscoco.org/dataset/#download

Screen Shot 2016-02-16 at 08.39.31.png

Ein Bildschirm wie der oben gezeigte wird angezeigt. Die Bilddaten sind groß. Wenn Sie also nur versuchen möchten, welche Art von Analyse Sie durchführen können, sollten Sie die Validierungsdaten herunterladen und ausprobieren.

MS COCO API

API zur Analyse der oben genannten Daten. Sie müssen lediglich die Daten herunterladen und können sie frei analysieren. Ich benutze viel Python, also habe ich eine Umgebung mit Python erstellt und es ausprobiert.

https://github.com/pdollar/coco

# API Download
git clone https://github.com/pdollar/coco
# API install
cd coco/PythonAPI
python setup.py install

Ordnerstruktur und Vorbereitung

Erstellen Sie das folgende Verzeichnis im Ordner coco und speichern Sie die Bild- und Anmerkungsdaten.

annotations images

MatlabAPI	README.txt	images		results
PythonAPI	annotations	license.txt

Der Python-API-Ordner lautet wie folgt und kann mit dem ipython-Notizbuch analysiert werden.

Makefile		pycocoDemo.ipynb	pycocotools
build			pycocoEvalDemo.ipynb	setup.py

Weitere Informationen zur Einführung des ipython-Notebooks finden Sie im Folgenden

http://qiita.com/icoxfog417/items/175f69d06f4e590face9

Bildanalyse

Jetzt ist es Zeit, mit der Analyse zu beginnen.

Ich werde nur die Teile aufgreifen und erklären, die wichtig erscheinen.

Laden und Vorbereiten von Bildern

Wählen Sie aus 3 Arten von train2014, val2014, test2014 für den Datentyp.

dataDir ='..'
dataType='val2014'
annFile='%s/annotations/instances_%s.json'%(dataDir,dataType)

Sie können die Datenkategorien und Superkategorien mit dem folgenden Code sehen. Superkategorien sind wie ein übergeordnetes Konzept von Kategorien. Beispiel: Kategorie: Hund, Katze ... Superkategorie: Tiere

# initialize COCO api for instance annotations
coco=COCO(annFile)
# display COCO categories and supercategories
cats = coco.loadCats(coco.getCatIds())
nms=[cat['name'] for cat in cats]
print 'COCO categories: \n\n', ' '.join(nms)

nms = set([cat['supercategory'] for cat in cats])
print 'COCO supercategories: \n', ' '.join(nms)

Wählen Sie mit dem folgenden Code aus, welche Datenkategorie ausgewählt werden soll. Dieses Mal wird "Hund" ausgewählt. Es wird zufällig aus den Daten in der Kategorie "Hund" ausgewählt und gelesen.

# get all images containing given categories, select one at random
catIds = coco.getCatIds(catNms=['dog']);
imgIds = coco.getImgIds(catIds=catIds );
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]

Das Bild wird geladen und unten angezeigt.

# load and display image
I = io.imread('%s/%s/%s'%(dataDirImage,dataType,img['file_name']))
plt.figure()
plt.imshow(I)

Dies ist das angezeigte Bild. Es wird sehr heilsam sein. Lol

Screen Shot 2016-02-16 at 09.04.03.png

Bildfilter

Lassen Sie uns das Heilungsbild analysieren.

# load and display instance annotations
plt.imshow(I)
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)

Sie können sehen, dass die Hundedaten im Bild grün sind. Ich filtere nach dem Teil "coco.getAnnIds". Die Erklärung dieser Funktion sieht wie folgt aus. Dieses Mal wird die ID des gelesenen Bildes von "imgIds = img [" id "]" verarbeitet, und das Bild wird von "catIds = catIds" gefiltert.

        """
        Get ann ids that satisfy given filter conditions. default skips that filter
        :param imgIds  (int array)     : get anns for given imgs
               catIds  (int array)     : get anns for given cats
               areaRng (float array)   : get anns for given area range (e.g. [0 inf])
               iscrowd (boolean)       : get anns for given crowd label (False or True)
        :return: ids (int array)       : integer array of ann ids
        """
Screen Shot 2016-02-16 at 09.06.24.png

Bildbeschreibung

Schauen wir uns als nächstes die Bildunterschrift an. Eine Bildunterschrift ist eine Beschreibung eines Bildes.

Ich erhalte Untertitel, indem ich ein Bild mit "caps.getAnnIds" spezifiziere. Bilder und Bildunterschriften werden mit Bildunterschriften generiert, die mit anderem Code erhalten wurden.

# load and display caption annotations
annIds = caps.getAnnIds(imgIds=img['id']);
anns = caps.loadAnns(annIds)
caps.showAnns(anns)
plt.imshow(I)
plt.show()
Screen Shot 2016-02-16 at 09.23.16.png

Ich konnte mehrere Untertitelkandidaten bestätigen. Bildunterschriften werden je nach Person unterschiedlich interpretiert. Daher wäre es hilfreich, wenn mehrere Kandidaten vorhanden wären.

Schließlich

Ich denke, es ist leicht, sich dem Problem des Datenmangels zu stellen, selbst wenn Sie das Bild analysieren möchten. Man kann sagen, dass Microsoft etwas bietet, das auf diese Weise leicht analysiert werden kann. Wir achten auch auf die zukünftigen Aktivitäten von Microsoft, die immer offener werden, wie z. B. Visual Studio Code.

Fehlerunterstützung

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ

Fügen Sie im Falle des obigen Fehlers die folgende Zeile zu ~ / .matplotlib / matplotlibrc hinzu

backend : TkAgg

Recommended Posts

Die Bildanalyse war mit den von Microsoft COCO bereitgestellten Daten und der API einfach
Beginn der Niko Niko Encyclopedia Analysis ~ JSON und berühren Sie die bereitgestellten Daten ~
Extrahieren und zeichnen Sie die neuesten Bevölkerungsdaten aus den von der Stadt bereitgestellten PDF-Daten
Beantworten Sie das verkleinerte Bild mit Flask und PILImage
Ich habe versucht, die Syntax zu bewerten, die mit der COTOHA-API zu humorvoll und humorvoll war.
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Big-Data-Analyse mit dem Datenflusskontroll-Framework Luigi
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Geschichte der Bildanalyse von PDF-Dateien und Datenextraktion
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Datenanalyse mit xarray
Bestimmung von Baumkrankheiten durch Bilderkennung mit CNTK und SVM
Erhalten Sie Daten mithilfe der API des Ministeriums für innere Angelegenheiten und Kommunikation
Image Optimize auf der Serverseite mithilfe der Web-API von TinyPNG
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
[Kartenanzeige] Zeigen Sie eine Karte anhand der vom Benutzer registrierten Adresse mit der JavaScript-API und der Geokodierungs-API von Google Maps an!
Ein Python-Anfänger hat in den letzten 10 Jahren zunächst versucht, die Wetterdaten schnell und einfach zu analysieren.