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
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
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
Jetzt ist es Zeit, mit der Analyse zu beginnen.
Ich werde nur die Teile aufgreifen und erklären, die wichtig erscheinen.
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
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
"""
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()
Ich konnte mehrere Untertitelkandidaten bestätigen. Bildunterschriften werden je nach Person unterschiedlich interpretiert. Daher wäre es hilfreich, wenn mehrere Kandidaten vorhanden wären.
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.
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