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
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
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
Il est maintenant temps de commencer l'analyse.
Je vais reprendre et expliquer uniquement les parties qui semblent importantes.
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
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
"""
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()
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.
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.
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