DA, подбор архитектуры. Отличить кота от собаки.

Сейчас расскажу, как примерно работает нейросеть, различающая котов от собак. Итак... датасет:

DA, подбор архитектуры. Отличить кота от собаки. Машинное обучение, Сверточный слой, Классификация, Нейронные сети, Длиннопост

Посмотрели на котиков и собачек? А как же вы отделили одних от других?

Этой задачей в свою время задумались ученые, коим было интересно, как человек ищет на картинке признаки одного или другого зверька. Им нужно было придумать какой-то фильтр, а то и несколько, которые будут искать какие-то признаки картинки. Так был изобретен сверточный слой. Как это работает?


Наша задача: найти какие-нибудь признаки на картинке и сформировать матрицу признаков. Объясняю на примере, допустим, ищем какие-нибудь палочки (границы):

DA, подбор архитектуры. Отличить кота от собаки. Машинное обучение, Сверточный слой, Классификация, Нейронные сети, Длиннопост

Так сверточный слой нашел границы предметов. Другой фильтр может отвечать за какие-нибудь кругляшки и так далее.

Если сделать несколько таких слоев, то в конце последнего сверточного слоя мы будем иметь информацию, допустим: глаза, шляпа, волосы и т. д., то есть довольно высокоуровневые данные. В случае собак и кошек мы найдем отличие, допустим, в ушах. Далее мы ставим обычный полносвязный слой (то, о чем говорил в прошлых постах) - и получаем такую задачу: уши большие, глаза черные - определить собака или кот. То есть свели задачу к предыдущей.


Обычно фильтры сильно меньше картинок, например для картинок 100х100 используются фильтры 3х3, опять же, для поиска каких-нибудь палочек и кружочков. Следующий уровень, например, может отвечать за поиск квадратов, треугольников. Потом - за какие-то крупные части изображения и так далее.


Итак, какой может быть подходящая архитектура? Ну, хотя бы такая:

DA, подбор архитектуры. Отличить кота от собаки. Машинное обучение, Сверточный слой, Классификация, Нейронные сети, Длиннопост

(Картинки размером от 50х50 до 100х100). Первые 5 - сверточные слои с фильтром 3х3. Пройдя первые 5 слоев сформируется матрица высокоуровневых признаков (например, уши, глаза...). Далее, с помощью двух обычных (полносвязных, линейных) слоев классифицируется изображение.


Как вообще подбирать архитектуру? На самом деле, ответа нет. То, что я привел - придумал из головы. Я делал модель, определяющую цифру из вебкамеры. Конкретно про собак я решал совсем иным способом: я взял существующую обученную нейросеть (VGG) и с помощью нее классифицировал. Для разного рода задач обычно есть стандарты, но существующие сетки и архитектуры улучшаются и совершенствуются...


Дальше могу рассказать про:

1) Сетки, которые понимают текст.

2) Про среду разработки, в которой мы работаем (она в браузере, серьезно)

3) Про что-нибудь еще.

4) Все, насобирал подписчиков, ни про что ни рассказывать.


Выбирайте :)

Автор поста оценил этот комментарий
Давай про текст и если можно, то про тональность текста.
И расскажи на каком языке пишешь. Ну и про иде свою, само-собой.
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Тональность? Имеется ввиду настроение? Ок, будет

Автор поста оценил этот комментарий
А почему тогда среди найденых котиков может быть 1 пес? Только попроще,пожалуйста. Я чайник, эм нет я кастрюля
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ну, в принципе по той же причине, что и если человек будет различать. И нс, и человек будут искать какие-то признаки у зверюшек. И, если, допустим, нейросетка будет различать в основном по ушам (то есть она запомнила, что зверюшки почти одинаковые, а вот уши у собак больше), то кот с большими ушами будет классифицирован как собака. Это так, для примера.

Если для более общего случая, то это происходит потому, что какие-то признаки "перевесили" другие, и нс сделала классификацию на основе более весомых. Это может быть совокупность признаков, допустим у собак обычно коричневая шерсть, большие уши. И как вы уже догадались, кот с коричневым окрасом и чуть большими чем обычно ушами станет собакой :)

показать ответы
2
Автор поста оценил этот комментарий

интересно, но рекомендую писать более развернутый пост, мне пришлось обратиться к гуглу, чтобы разобраться что такое свёртка и как она образуется. в целом годно, но поменьше терминов и больше разжевывать

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Понял, учту, спасибо