51
правка
Изменения
Нет описания правки
==MNIST==
===Описание===
[[Файл:MnistExamples.png|мини|[https://en.wikipedia.org/wiki/MNIST_database#/media/File:MnistExamples.png Оригинал]]]
===Результаты===
На сайте<ref>http://yann.lecun.com/exdb/mnist/[http://yann.lecun.com/exdb/mnist/]</ref> датасета MNIST можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасетенаборе данных, что является очень хорошим результатом, вполне сравнимым с человеком.
===Код===
Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета набора данных в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр {{---}} заметно лучше, чем случайная разметка.
from sklearn.datasets import fetch_mldata
from numpy import arange
import random
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets, svm, metrics
[[Файл:Mnist-predict.png|мини]]
mnist = fetch_mldata('MNIST original')
indices = arange(len(mnist.data))
predicted = clf.predict(X[train:])
print("Classification report for classifier %s:\n%s\n"
digit precision recall f1-score support
8 0.32 0.60 0.42 15
9 0.59 0.39 0.47 33
avg/total 0.54 0.53 0.52 250
==CIFAR-10==
==Iris=Описание===[[Файл:Cifar-10.png|мини|[https://medium.com/@jannik.zuern/training-a-cifar-10-classifier-in-the-cloud-using-tensorflow-and-google-colab-f3a5fbdfe24d Источник]]]CIFAR-10 (Canadian Institute For Advanced Research) {{---}} еще один большой набор изображений, который обычно используется для тестирования алгоритмов машинного обучения. Он содержит 60 000 цветных картинок размером 32х32 пикселя, размеченных в один из десяти классов: самолеты, автомобили, коты, олени, собаки, лягушки, лошади, корабли и грузовики. В наборе данных по 6000 картинок каждого класса. CIFAR-10 является размеченным подмножеством заметно большего набора данных, состоящего примерно из восьмидесяти миллионов изображений. ===Результаты=== С момента публикации CIFAR-10 вышло много статей, авторы которых пытаются добиться максимальной точности на этом наборе данных. В среднем более хорошие результаты показывают различные сверточные нейронные сети с различными вариантами настройки и дополнительной предобработки данных. На википедии<ref>https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10[https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10]</ref> можно найти таблицу лучших публикаций с процентами ошибки на этом наборе данных. Так, лучший на сегодняшний момент алгоритм, опубликованный в мае 2018 года, допускает ошибку всего порядка 1.48%. ===Код===Простой код, скачивающий CIFAR-10 из интернета и запускающий на нем стандартный классификатор. from keras.datasets import cifar10 from sklearn.utils import shuffle (x_train, y_train), (x_test, y_test) = cifar10.load_data() X, Y = shuffle(x_train, y_train) n = 1000 X, Y = X[:n], Y[:n] X, Y = X.reshape((n, -1)), Y.reshape((n,)) train = n // 2 clf = DecisionTreeClassifier(criterion="entropy", max_depth=5) clf.fit(X[:train], Y[:train]) expected = Y[train:] predicted = clf.predict(X[train:]) print("Classification report for classifier %s:\n%s\n" % (clf, metrics.classification_report(expected, predicted))) ==ImageNet== ===Описание===[[Файл:Imagenet.png|мини|[http://www.image-net.org/challenges/LSVRC/2014/ Источник]]] База данных Imagenet {{---}} проект по созданию и сопровождению массивной базы данных аннотированных изображений. Аннотация изображений происходит путем краудсорсинга сообществом. Из-за этого достигается большое количество размеченных данных. Особенность данного набора данных {{---}} про каждую картинку известно несколько фактов вида "в этом прямоугольнике есть автомобиль", что в совокупности с индексом по типам объектов, которые есть на изображениях, позволяет обучить алгоритм для распознавания объектов какой-то конкретной категории. На август 2017 года в ImageNet 14 197 122 изображения, разбитых на 21 841 категорию. ===Imagenet Challenge=== [[Файл:Imagenet-contest.png|мини|[https://en.wikipedia.org/wiki/File:ImageNet_error_rate_history_(just_systems).svg Оригинал]]] Вместе с публикацией набора данных стартовал конкурс ImageNet Large Scale Visual Recognition Challenge (ILSVRC<ref>http://www.image-net.org/challenges/LSVRC/[http://www.image-net.org/challenges/LSVRC/]</ref>). В его рамках участникам предлагается достигнуть наибольшей точности при классификации набора изображений. Организаторы использовали около тысячи различных категорий объектов, которые нужно классифицировать. На примере этого конкурса хорошо видно, как в 2010-е годы люди научились заметно лучше распознавать образы на изображениях, уже в 2017 году большинство участвующих команд преодолели порог в 95% правильных ответов. Эта задача, проблема компьютерного зрения, имеет огромное практическое значение во многих прикладных областях. ==COCO==
===Описание===
{| class="wikitable"
|-
! Длина чашелистникаИдентификатор! Ширина чашелистника! Длина лепестка! Ширина лепестка! КлассСоответствие
|-
| 5.1-91 | 3.5| 1.4| 0.2| setosaкатегории объектов (не используются в сегментации окружения)
|-
| 7.0| 3.2| 4.7| 1.4| versicolor|92-| 6.3| 3.3| 6.0182 | 2.5| virginicaкатегории окружения
|-
|183 || категория "другое" (выбирается для "объектов")
|}
* Паноптическая сегментация (англ. ''Panoptic Segmentation'') {{---}} обединение задач семантической сегментации ([[Сегментация изображений]]) и обнаружения объектов. Задача состоит в том, чтобы классифицировать все пиксели изображения на принадлежность к некоторому классу, а также определить, к какому из экземпляров данного класса они относятся.
* Аннотирование изображения (англ. ''Caption Evaluation''). Генерация сопроводительной подписи к изображению.
===Результаты===
Результат задачи зависит от многих факторов. Например, для задачи обнаружения объекта, наилучшие результаты алгоритмы показывают на крупных объектах.
Более подробно с метриками можно ознакомиться [http://cocodataset.org/#detection-leaderboard здесь].
Приведем лишь результаты детектора [https://arxiv.org/abs/1512.03385 ResNet] (bbox) - победителя 2015 Detection Challenge.
Графики представляют из себя семейство кривых Pressision Recall для различных метрик.
{|align="center"
|-valign="top"
|[[Файл:Detection-analysis-person.jpg|мини|PR кривые для класса "Person" [http://cocodataset.org/images/detection-analysis-person.jpg оригинал]]]
|[[Файл:Detection-analysis-all.jpg|мини|Усредненные значения для всех классов [http://cocodataset.org/images/detection-analysis-all.jpg оригинал]]]
|}
<br>
===Код===
Пример использования [https://github.com/cocodataset COCO API] на python:
%matplotlib inline
from pycocotools.coco import COCO
import numpy as np
import skimage.io as io
import matplotlib.pyplot as plt
import pylab
pylab.rcParams['figure.figsize'] = (8.0, 10.0)
dataDir='..'
dataType='val2017'
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)
coco=COCO(annFile)
cats = coco.loadCats(coco.getCatIds())
nms=[cat['name'] for cat in cats]
print('COCO categories: \n{}\n'.format(' '.join(nms)))
nms = set([cat['supercategory'] for cat in cats])
print('COCO supercategories: \n{}'.format(' '.join(nms)))
# get all images containing given categories, select one at random
catIds = coco.getCatIds(catNms=['person','dog','skateboard']);
imgIds = coco.getImgIds(catIds=catIds );
imgIds = coco.getImgIds(imgIds = [324158])
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
# load and display image
# I = io.imread('%s/images/%s/%s'%(dataDir,dataType,img['file_name']))
# use url to load image
I = io.imread(img['coco_url'])
plt.axis('off')
plt.imshow(I)
plt.show()
[[Файл:Coco-1.png |мини| center| [https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb оригинал]]]
# load and display instance annotations
plt.imshow(I); plt.axis('off')
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)
[[Файл:Coco-2.png|мини|center| [https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb оригинал]]]
==Fashion-MNIST==
===Описание===
[[Файл:FMNIST.png|мини|Пример изображений из Fashion-MNIST]]
Fashion-MNIST {{---}} это набор изображений, взятых из статей [https://jobs.zalando.com/en/tech/?gh_src=nevh2y1 Zalando], состоящий из обучающего набора из 60000 примеров и тестового набора из 10000 примеров. Каждый пример представляет собой черно-белое изображение 28x28, связанное с меткой из 10 классов. Создатели Fashion-MNIST предложили его в качестве прямой замены исходного набора данных MNIST, состоящего из рукописных цифр, для сравнительного анализа алгоритмов машинного обучения. Он имеет одинаковый размер изображения и структуру разделений для обучения и тестирования. Аргументировали необходимость такой замены тем, что исходный набор данных MNIST действительно хорошо отражает возможность алгоритма хоть что-то классифицировать, но если алгоритм работает на стандартном MNIST, он все равно может не сработать на других примерах данных. Также на наборе данных MNIST научились достигать слишком высоких результатов точности (97% для классических алгоритмов машинного обучения и 99.7% для сверточных нейронных сетей), в то время как MNIST не отражает современных сложных проблем компьютерного зрения. Это позволило сделать предположение о том, что набор данных MNIST слишком простой по современным меркам и его требуется заменить.
===Результаты===
На сайте<ref>https://github.com/zalandoresearch/fashion-mnist</ref> набора данных можно найти список лучших результатов, достигнутых алгоритмами на этом наборе данных. Так как задача классификации набора данных Fashion-MNIST сложнее, чем в случае стандартного набора MNIST, в таблице представлены только алгоритмы глубокого обучения, т.к. только для них эта задача имеет смысл. Так, худший из записанных результатов достигнут сверточной нейронной сетью с 3 сверточными слоями и одним слоем пулинга (12.4% ошибок), а подавляющее большинство лучших результатов получены боле сложными архитектурами. Лучший результат был достигнут WRN сетью и составляет всего 3.3% ошибки.
===Код===
Простой код, скачивающий Fashion-MNIST с использованием NumPy и запускающий на нем стандартный классификатор.
import mnist_reader
from sklearn.datasets import load_iris
from sklearn .ensemble import svm, metricsRandomForestClassifier
from sklearn.utils import shuffle
train = n // 2
clf = RandomForestClassifierDecisionTreeClassifier(n_estimatorscriterion=100"entropy", max_depth=2, random_state=05)
clf.fit(X[:train], Y[:train])
expected = Y[train:]
predicted = clf.predict(X[train:])
print("Classification report for classifier %s:\n%s\n"
==См.также==
* [[Общие понятия]]
* [[Сегментация изображений]]
* [[Задача нахождения объектов на изображении]]
* [[Оценка качества в задачах классификации и регрессии]]
==ImageNetПримечания==[[Категория: Машинное обучение]][[Категория: Компьютерное зрение]][[Категория: Классификация и регрессия]]