[PYTHON] L'analyse d'image a été facile à l'aide des données et de l'API fournies par Microsoft COCO

Qu'est-ce que Microsoft COCO?

Screen Shot 2016-02-16 at 08.37.28.png

Citation: http://mscoco.org/

Un ensemble de données avec reconnaissance d'image, segmentation et sous-titrage.

Même si vous voulez faire du traitement d'image, le premier problème qui entre en conflit est le problème du jeu de données, mais comme Microsoft COCO a le jeu de données nécessaire et les API de python et Matlab sont également fournies, je vais l'utiliser. La caractéristique est que c'est facile.

Tout d'abord, veuillez télécharger l'ensemble de données ci-dessous.

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

Screen Shot 2016-02-16 at 08.39.31.png

Un écran comme celui ci-dessus apparaîtra. Les données d'image sont de grande taille, donc si vous voulez simplement essayer le type d'analyse que vous pouvez faire, vous devez télécharger les données de validation et l'essayer.

MS COCO API

API pour analyser les données ci-dessus. Tout ce que vous avez à faire est de télécharger les données et vous pouvez les analyser librement. J'utilise beaucoup python, donc j'ai construit un environnement avec python et l'ai essayé.

https://github.com/pdollar/coco

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

Structure et préparation des dossiers

Créez le répertoire suivant dans le dossier coco et stockez les données d'image et d'annotation.

annotations images

MatlabAPI	README.txt	images		results
PythonAPI	annotations	license.txt

Le dossier de l'API Python est le suivant et peut être analysé à l'aide du bloc-notes ipython.

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

Veuillez vous référer à ce qui suit pour l'introduction du notebook ipython

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

L'analyse d'image

Il est maintenant temps de commencer l'analyse.

Je vais reprendre et expliquer uniquement les parties qui semblent importantes.

Chargement et préparation des images

Choisissez parmi 3 types de train2014, val2014, test2014 pour dataType.

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

Vous pouvez voir les catégories de données et les super catégories avec le code ci-dessous. Les super catégories sont comme un concept supérieur de catégories. Exemple: Catégorie: Chien, Chat ... Super catégorie: Animaux

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

Sélectionnez la catégorie de données à sélectionner avec le code ci-dessous. Cette fois, "chien" est sélectionné. Il est sélectionné au hasard parmi les données de la catégorie «chien» et lu.

# 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]

L'image est chargée et affichée ci-dessous.

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

Ceci est l'image affichée. Ce sera très guérissant. Lol

Screen Shot 2016-02-16 at 09.04.03.png

Filtre d'image

Analysons l'image de guérison.

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

Vous pouvez voir que les données du chien dans l'image sont vertes. Je filtre sur la partie coco.getAnnIds. En regardant l'explication de cette fonction, c'est comme suit. Cette fois, l'id de l'image lue est traité par ʻimgIds = img ['id'] , et l'image est filtrée par catIds = catIds`.

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

Légende

Ensuite, regardons la légende de l'image. Une légende d'image est une description d'une image.

J'obtiens des légendes en spécifiant une image avec caps.getAnnIds. Les images et les légendes sont générées à l'aide de légendes obtenues avec un autre code.

# 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

J'ai pu confirmer plusieurs candidats sous-titrage. Les légendes sont interprétées différemment selon la personne, il serait donc utile s'il y avait plusieurs candidats.

finalement

Je pense qu'il est facile de faire face au problème du manque de données même si vous souhaitez analyser l'image. On peut dire que Microsoft fournit quelque chose qui peut être facilement analysé de cette manière. Nous sommes également attentifs aux futures activités de Microsoft, qui devient de plus en plus ouverte, comme Visual Studio Code.

Support d'erreur

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

En cas d'erreur ci-dessus, ajoutez la ligne suivante à ~ / .matplotlib / matplotlibrc

backend : TkAgg

Recommended Posts

L'analyse d'image a été facile à l'aide des données et de l'API fournies par Microsoft COCO
Début de l'analyse de l'encyclopédie Nico Nico ~ Appuyez sur les données fournies par JSON
Extraire et tracer les dernières données démographiques à partir des données PDF fournies par la ville
Répondre à l'image redimensionnée à l'aide de Flask et PILImage
J'ai essayé de noter la syntaxe trop humoristique et humoristique en utilisant l'API COTOHA.
Analyse des données financières par pandas et leur visualisation (2)
Analyse des données financières par pandas et leur visualisation (1)
Analyse de Big Data à l'aide du framework de contrôle de flux de données Luigi
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Histoire de l'analyse d'image du fichier PDF et de l'extraction de données
Obtenez des commentaires et des abonnés avec l'API de données YouTube
J'ai essayé d'utiliser l'API de Sakenowa Data Project
Analyse des données à l'aide de xarray
Détermination des maladies des arbres par reconnaissance d'image à l'aide de CNTK et SVM
Obtenez des données à l'aide de l'API du ministère des Affaires intérieures et des Communications
Optimisation d'image côté serveur à l'aide de l'API Web de TinyPNG
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
Obtenez la météo en utilisant l'API et laissez Raspberry Pi parler!
[Affichage de la carte] Affichez une carte à partir de l'adresse enregistrée par l'utilisateur à l'aide de l'API JavaScript de Google Maps et de l'API de géocodage!
Un débutant en Python a d'abord essayé une analyse rapide et facile des données météorologiques des 10 dernières années.