Определение породы собаки

  • Теги:
    Порода собаки, Machine Learning, нейросети
Все статьи

Присоединяйтесь к нашей группе:


Оказывается, специалисты по машинному обучению, любят тренироваться распознавать породы собак. Часто они так и учатся, а на kaggle.com вы найдете множество различных решений. Мы с вами возьмем четыре из них, и посмотрим получившиеся результаты - насколько хорошо искусственный интеллект распознает породы собак.

Для нашего практического эксперимента, мы обучили три модели (1,2,3), а одну, уже обученную, скачали (4) и сразу стали использовать.

Модели нейронных сетей, использованных в эксперименте

1. InceptionV3 (также известная как GoogleNet v3), 2015

Краткое описание. Глубокая нейронная сеть для классификации изображений, разработанная Google Research.
InceptionV3 имеет более глубокую архитектуру по сравнению с предыдущими версиями, что позволяет извлекать более абстрактные и сложные характеристики изображения.

Датасет для обучения. 70-dog-breedsimage-data-set - 9346 изображений, 70 пород собак. Датасет подготовлен владельцем бизнеса по уходу за собаками.

70 пород

Afghan, African Wild Dog, Airedale, American Hairless, American Spaniel, Basenji, Basset, Beagle, Bearded Collie, Bermaise, Bichon Frise, Blenheim, Bloodhound, Bluetick, Border Collie, Borzoi, Boston Terrier, Boxer, Bull Mastiff, Bull Terrier, Bulldog, Cairn, Chihuahua, Chinese Crested, Chow, Clumber, Cockapoo, Cocker, Collie, Corgi, Coyote, Dalmation, Dhole, Dingo, Doberman, Elk Hound, French Bulldog, German Sheperd, Golden Retriever, Great Dane, Great Perenees, Greyhound, Groenendael, Irish Spaniel, Irish Wolfhound, Japanese Spaniel, Komondor, Labradoodle, Labrador, Lhasa, Malinois, Maltese, Mex Hairless, Newfoundland, Pekinese, Pit Bull, Pomeranian, Poodle, Pug, Rhodesian, Rottweiler, Saint Bernard, Schnauzer, Scotch Terrier, Shar_Pei, Shiba Inu, Shih-Tzu, Siberian Husky, Vizsla, Yorkie.





2. MobileNetV2, 2018

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

Датасет для обучения. Stanford Dogs Dataset, версия к конкурсу - 20580 изображений, 120 пород собак.

120 пород

affenpinscher, afghan_hound, african_hunting_dog, airedale, american_staffordshire_terrier, appenzeller, australian_terrier, basenji, basset, beagle, bedlington_terrier, bernese_mountain_dog, black-and-tan_coonhound, blenheim_spaniel, bloodhound, bluetick, border_collie, border_terrier, borzoi, boston_bull, bouvier_des_flandres, boxer, brabancon_griffon, briard, brittany_spaniel, bull_mastiff, cairn, cardigan, chesapeake_bay_retriever, chihuahua, chow, clumber, cocker_spaniel, collie, curly-coated_retriever, dandie_dinmont, dhole, dingo, doberman, english_foxhound, english_setter, english_springer, entlebucher, eskimo_dog, flat-coated_retriever, french_bulldog, german_shepherd, german_short-haired_pointer, giant_schnauzer, golden_retriever, gordon_setter, great_dane, great_pyrenees, greater_swiss_mountain_dog, groenendael, ibizan_hound, irish_setter, irish_terrier, irish_water_spaniel, irish_wolfhound, italian_greyhound, japanese_spaniel, keeshond, kelpie, kerry_blue_terrier, komondor, kuvasz, labrador_retriever, lakeland_terrier, leonberg, lhasa, malamute, malinois, maltese_dog, mexican_hairless, miniature_pinscher, miniature_poodle, miniature_schnauzer, newfoundland, norfolk_terrier, norwegian_elkhound, norwich_terrier, old_english_sheepdog, otterhound, papillon, pekinese, pembroke, pomeranian, pug, redbone, rhodesian_ridgeback, rottweiler, saint_bernard, saluki, samoyed, schipperke, scotch_terrier, scottish_deerhound, sealyham_terrier, shetland_sheepdog, shih-tzu, siberian_husky, silky_terrier, soft-coated_wheaten_terrier, staffordshire_bullterrier, standard_poodle, standard_schnauzer, sussex_spaniel, tibetan_mastiff, tibetan_terrier, toy_poodle, toy_terrier, vizsla, walker_hound, weimaraner, welsh_springer_spaniel, west_highland_white_terrier, whippet, wire-haired_fox_terrier, yorkshire_terrier.





3. InceptionV3 + Xception + InceptionResNetV2 + NASNetLarge

Краткое описание. Использование моделей вместе позволяет объединить их сильные стороны и извлечь лучшие признаки для обработки изображения.
InceptionV3, 2015. - описание выше.
Xception, 2016. Разновидность сверточной нейронной сети, в которой используются depthwise separable convolutions. Этот подход позволяет уменьшить количество параметров и вычислительную сложность сети, сохраняя при этом хорошую эффективность.
InceptionResNetV2, 2017. Модель объединяет преимущества Inception и ResNet, используя блоки ResNet для более глубокой архитектуры и лучшей стабильности обучения.
NASNetLarge, 2018. Архитектура сверточной нейронной сети, разработанная с использованием автоматического поиска архитектур (Neural Architecture Search, NAS). NASNetLarge обладает высокой эффективностью и способностью к обобщению на разные задачи.

Датасет для обучения. Stanford Dogs Dataset, версия к конкурсу - 20580 изображений, 120 пород собак.





4. Vision Transformer (ViT), 2020

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

ViT использует механизмы внимания (self-attention) для анализа взаимосвязей между различными частями изображения, не зависимо от их расположения на изображении. Это позволяет ViT эффективно обрабатывать как центральные, так и периферийные области изображения.

Датасет для обучения. Stanford Dogs Dataset - 20580 изображений, 120 пород собак.





Беглый взгляд на датасеты для обучения показывает, что отсутствуют такие популярные породы как классический Бультерьер, Кане-Корсо, Далматин, Джек-рассел-терьер. Видно в Стэнфорде не смотрели фильм "Маска", или они что-то знают. Будем надеется, что кто-нибудь на радость всем сделает когда-нибудь в перспективе более совершенный датасет братьев наших меньших.


Результаты сканирования картинок (18 изображений, топ 5 вероятностей для наглядности)


Изображение 1. InceptionV3,
70 пород
2. MobileNetV2,
120 пород
3. InceptionV3+Xception+
InceptionResNetV2+NASNetLarge,
120 пород
4. Vision Transformer (ViT),
120 пород
доступно в нашем боте
с.Дивноморское, 2014
German Sheperd - 91.35%
Malinois - 8.59%
Bulldog - 0.05%
kelpie - 21.83%
german_shepherd - 15.18%
airedale - 15.03%
malinois - 7.47%
giant_schnauzer - 5.02%
german_shepherd - 99.82%
kelpie - 0.05%
dingo - 0.04%
malinois - 0.01%
norwegian_elkhound - 0.01%
german_shepherd - 19.56%
malinois - 3.08%
kelpie - 2.66%
rottweiler - 1.35%
miniature_pinscher - 1.11%
Пас (српски)
German Sheperd - 97.80%
Malinois - 1.98%
Rhodesian - 0.09%
Bulldog - 0.05%
Great Dane - 0.01%
malinois - 41.07%
kelpie - 25.44%
pembroke - 5.83%
german_shepherd - 2.70%
norwegian_elkhound - 2.56%
german_shepherd - 99.78%
malinois - 0.03%
kelpie - 0.03%
dingo - 0.02%
norwegian_elkhound - 0.02%
german_shepherd - 19.23%
malinois - 3.28%
kelpie - 1.72%
norwegian_elkhound - 1.56%
rottweiler - 1.21%
Тот же пас с ушами на растопырке
German Sheperd - 86.89%
Malinois - 13.08%
Dingo - 0.01%
Bulldog - 0.01%
Groenendael - 0.00%
malinois - 54.77%
kelpie - 22.83%
german_shepherd - 8.58%
dingo - 3.39%
norwegian_elkhound - 2.85%
german_shepherd - 98.52%
kelpie - 0.57%
malinois - 0.42%
dingo - 0.24%
eskimo_dog - 0.04%
german_shepherd - 18.57%
malinois - 5.12%
kelpie - 2.09%
norwegian_elkhound - 1.25%
cardigan - 1.21%
Новая будка для щенка клиента
Golden Retriever - 67.64%
Shiba Inu - 21.47%
Great Perenees - 7.29%
Pomeranian - 0.76%
Pug - 0.46%
malamute - 15.39%
great_pyrenees - 12.45%
pug - 11.45%
chihuahua - 8.34%
golden_retriever - 5.25%
golden_retriever - 78.12%
labrador_retriever - 17.83%
pomeranian - 1.04%
great_pyrenees - 0.54%
basenji - 0.28%
labrador_retriever - 7.57%
golden_retriever - 5.26%
beagle - 2.72%
chihuahua - 1.81%
weimaraner - 1.68%
Наша дворняга
Labradoodle - 52.22%
Malinois - 19.33%
Lhasa - 4.66%
Bichon Frise - 4.28%
Bearded Collie - 4.24%
bedlington_terrier - 22.33%
toy_poodle - 21.32%
standard_poodle - 15.26%
lakeland_terrier - 14.08%
miniature_poodle - 3.32%
old_english_sheepdog - 86.75%
scottish_deerhound - 2.19%
bouvier_des_flandres - 1.55%
tibetan_terrier - 1.2%
wire-haired_fox_terrier - 0.97%
old_english_sheepdog - 4.05%
bedlington_terrier - 3.36%
lakeland_terrier - 3.16%
irish_wolfhound - 3.14%
sealyham_terrier - 2.65%
Бигль Аделька
Beagle - 99.99%
Basset - 0.01%
beagle - 31.01%
walker_hound - 23.09%
english_foxhound - 22.24%
basset - 12.26%
bluetick - 1.66%
beagle - 73.8%
english_foxhound - 21.14%
walker_hound - 4.17%
bloodhound - 0.13%
redbone - 0.08%
beagle - 21.17%
walker_hound - 7.65%
english_foxhound - 6.7%
basset - 5.35%
brittany_spaniel - 0.97%
Черный лабрадор-кондотьер в исполнении Midjorney
Labrador - 99.96%
Pug - 0.03%
Bull Mastiff - 0.01%

да, Midjorney, InceptionV3? :)
german_short-haired_pointer - 52.23%
giant_schnauzer - 6.01%
chesapeake_bay_retriever - 5.92%
kerry_blue_terrier - 5.57%
staffordshire_bullterrier - 4.18%
rottweiler - 75.04%
bull_mastiff - 11.45%
labrador_retriever - 6.43%
tibetan_mastiff - 1.85%
appenzeller - 0.8%

не, ну морда и правда ротвейлерская
укороченная, разве нет?
pug - 11.07%
labrador_retriever - 2.77%
bull_mastiff - 2.77%
staffordshire_bullterrier - 2.62%
boxer - 2.14%
А что со скульптурами?
Собачка из дворца Питти, Флоренция.
American Spaniel - 47.65%
Labrador - 23.51%
Mex Hairless - 17.90%
Chinese Crested - 3.38%
American Hairless - 1.68%

модель к этому не была готова
malinois - 18.36%
miniature_pinscher - 15.67%
mexican_hairless - 7.77%
giant_schnauzer - 7.11%
basenji - 5.75%
boxer - 19.72%
miniature_pinscher - 17.08%
italian_greyhound - 10.14%
staffordshire_bullterrier - 10.1%
mexican_hairless - 8.48%
mexican_hairless - 15.7%
italian_greyhound - 1.88%
kelpie - 1.58%
toy_terrier - 1.43%
miniature_pinscher - 1.43%

порода цвета брозны
Целый жилой комплекс собачников не смог однозначно
определить породу. Хозяева называют её фасоль-терьер.
Chinese Crested - 94.09%
Shih-Tzu - 5.18%
Lhasa - 0.27%
Cairn - 0.24%
Japanese Spaniel - 0.15%
blenheim_spaniel - 12.59%
shih-tzu - 10.22%
japanese_spaniel - 7.14%
lhasa - 6.02%
basenji - 5.74%
papillon - 96.45%
japanese_spaniel - 0.98%
toy_terrier - 0.58%
yorkshire_terrier - 0.5%
shih-tzu - 0.31%
papillon - 21.66%
chihuahua - 2.47%
japanese_spaniel - 1.97%
pomeranian - 1.51%
tibetan_terrier - 1.24%
Оля и её чудовище ❤.
Bulldog - 98.88%
Greyhound - 0.52%
French Bulldog - 0.33%
Dingo - 0.08%
Beagle - 0.06%
boston_bull - 33.68%
basenji - 16.31%
pug - 9.43%
beagle - 4.87%
whippet - 4.02%
boxer - 29.36%
pug - 21.82%
boston_bull - 21.26%
french_bulldog - 16.71%
toy_terrier - 1.67%
boston_bull - 17.17%
french_bulldog - 6.45%
american_staffordshire_terrier - 3.56%
pug - 2.73%
boxer - 2.25%
Чудовище во всей красе.
К вопросу о важности ракурса на фото.
French Bulldog - 80.14%
Bulldog - 19.23%
Boston Terrier - 0.63%
french_bulldog - 82.32%
boston_bull - 3.49%
basenji - 1.78%
chihuahua - 1.53%
italian_greyhound - 0.91%
boston_bull - 78.95%
french_bulldog - 17.36%
toy_terrier - 1.34%
boxer - 0.53%
pug - 0.48%
french_bulldog - 20.32%
boston_bull - 10.1%
pug - 2.22%
american_staffordshire_terrier - 1.43%
boxer - 1.14%
Закинем в проверку абиссинского котика.
Chihuahua - 95.83%
American Spaniel - 1.73%
Dhole - 0.71%
Dingo - 0.62%
Bichon Frise - 0.32%
chihuahua - 27.34%
basenji - 14.34%
dingo - 4.34%
beagle - 4.03%
cardigan - 4.00%
ibizan_hound - 15.78%
dhole - 9.77%
vizsla - 9.34%
chihuahua - 9.24%
basenji - 5.78%

элегантная кошка = элегантная собака
pomeranian - 1.86%
chihuahua - 1.56%
ibizan_hound - 1.46%
dhole - 1.31%
irish_setter - 1.3%

незначащие результаты - браво!
Посмотрим на собакоподобное существо
с того самого триптиха Иеронима Босха.
American Spaniel - 63.06%
Rhodesian - 29.35%
Chinese Crested - 3.43%
Bloodhound - 1.85%
Beagle - 0.41%

и правда роскошные уши
pug - 14.96%
weimaraner - 8.18%
irish_setter - 7.54%
whippet - 5.58%
rhodesian_ridgeback - 5.31%
redbone - 66.18%
vizsla - 9.97%
bloodhound - 9.54%
rhodesian_ridgeback - 1.77%
irish_setter - 1.01%
redbone - 4.03%
italian_greyhound - 3.24%
rhodesian_ridgeback - 3.05%
saluki - 1.82%
miniature_pinscher - 1.69%

машина чувствует подвох
Проверим на актёре Роне Перлмане.
Видим что три модели реагируют низкими значениями.
Отметим, прическая актёра похожа на волнистые уши спаниеля,
а в лице есть радушная улыбка мопса 😊.
American Spaniel - 55.51%
Cocker - 10.92%
Chinese Crested - 7.71%
Afghan - 3.80%
Rhodesian - 2.40%
pug - 9.27%
saint_bernard - 8.32%
boston_bull - 6.41%
african_hunting_dog - 5.47%
kerry_blue_terrier - 4.11%
yorkshire_terrier - 4.82%
dhole - 4.66%
afghan_hound - 4.5%
bouvier_des_flandres - 3.17%
scottish_deerhound - 2.42%
pug - 1.82%
weimaraner - 1.41%
labrador_retriever - 1.41%
pomeranian - 1.34%
dhole - 1.34%
Виточка
Pug - 99.75%
Bulldog - 0.23%
Shih-Tzu - 0.01%
French Bulldog - 0.01%
pug - 90.40%
french_bulldog - 1.12%
pekinese - 0.70%
bull_mastiff - 0.64%
basenji - 0.55%
pug - 99.65%
bull_mastiff - 0.09%
brabancon_griffon - 0.03%
norwegian_elkhound - 0.02%
silky_terrier - 0.02%
pug - 48.62%
bull_mastiff - 1.14%
norwegian_elkhound - 0.96%
border_terrier - 0.79%
boston_bull - 0.76%
Зефир, вест-хайленд-уайт-терьер
Cairn - 61.32%
Maltese - 20.24%
Scotch Terrier - 14.24%
Shih-Tzu - 0.95%
Chinese Crested - 0.51%

породы не было в обучающей выборке
west_highland_white_terrier - 50.18%
maltese_dog - 5.89%
australian_terrier - 5.67%
toy_poodle - 3.33%
scotch_terrier - 2.94%
west_highland_white_terrier - 99.03%
miniature_schnauzer - 0.28%
maltese_dog - 0.16%
scotch_terrier - 0.08%
yorkshire_terrier - 0.08%
west_highland_white_terrier - 27.83%
cairn - 3.53%
maltese_dog - 2.36%
sealyham_terrier - 1.93%
norwich_terrier - 1.62%
Йоркширский терьер
Yorkie - 99.94%
Cairn - 0.04%
Chinese Crested - 0.01%
australian_terrier - 34.69%
yorkshire_terrier - 18.65%
silky_terrier - 13.78%
cairn - 6.07%
norwich_terrier - 5.79%
yorkshire_terrier - 99.27%
silky_terrier - 0.4%
australian_terrier - 0.2%
toy_terrier - 0.02%
tibetan_terrier - 0.02%
silky_terrier - 18.83%
yorkshire_terrier - 17.84%
australian_terrier - 5.47%
norwich_terrier - 0.86%
blenheim_spaniel - 0.79%
Эльфа, 9 мес., вельш-корги пемброк
Corgi - 99.98%
Siberian Husky - 0.01%
Dhole - 0.01%
pembroke - 19.43%
cardigan - 19.33%
samoyed - 9.02%
golden_retriever - 6.85%
malamute - 5.09%
pembroke - 99.54%
cardigan - 0.41%
pembroke - 29.83%
cardigan - 8.75%
shetland_sheepdog - 1.13%
pomeranian - 1.04%
dingo - 0.95%


Сформируем рейтинг по результатам нашего визуального экспресс-тестирования, и добавим некоторые наблюдения.

В целом - отлично. Нейросетки рулят и неплохо определяют породы собак. Пройдемся снизу вверх по нашему рейтингу.

4-е место Легковесная архитектура для мобильных устройств - №2 MobileNetV2 хоть и легковесна, но и результат получился наихудший. Хоть и многие породы распознает на раз, но ребятки, как можно не определить немецкую овчарку? Верх безобразия в контексте решаемой задачи.

Плюс как нам показалось, модель достаточно сильно непредсказуемым образом реагировала на саму картинку (одну и ту же) - на расположение собаки и сторонних объектов на изображении. Перемещая овчарку по картинке, мы в какой-то момент получил верное предсказание, но это лишь означает что модели MobileNetV2 требуется дополнительная устойчивость для стабильно правильных результатов.

Конечно, и наш код мог быть неидеаленым, исключать не стоит.

Кстати, согласно теории, №4 Vision Transformer (ViT) может быть наиболее устойчивой к расположению собаки и сторонних объектах на изображении из-за механизмов внимания. Возможно, как-нибудь проведем дополнительные сравнительные эксперименты на моделях.

3-е место Модели №1,3,4 показали отличные результаты. Видно, что модель №1 InceptionV3 обучалась на другом датасете, и появляются такие интересные породы как Лабрадудль, Китайская хохлатая собака и Керн-терьер. Но нам больше нравится тот факт, что модели №3 и №4 реагируют на изображение человека понижением вероятностей по "собачьему классификатору". Т.е. получается что InceptionV3 недостаточно гибка для точной классификации объектов, ей обязательно хочется предсказать именно породу собаки несмотря ни на что. Впрочем, актер Рон как американский спаниель - это может быть весело, да и породы собак InceptionV3 в целом определяет здорово.

2-е место Связка моделей №3 InceptionV3+Xception+InceptionResNetV2+NASNetLarge - показывает хорошо сбалансированные вероятности в наших предсказаниях, хотя по ощущениям в иной раз уж слишком однозначно.

Из минусов. Для обучения такой модели потребуется железо. Бесплатные мощности colab также не подойдут, в какой-то момент заканчивается выделяемая оперативная память и всё рушится. Мы воспользовались DataSphere в Yandex Cloud - соблазнились на приветственный бонус в 4К, но в конечном итоге все равно закинули 500 р. :), чтобы активировать все видеокарты (в доступной "без платежного аккаунта" GPU только на минималках - проблема аналогично Google colab). Но смогли посмотреть на Yandex DataSphere, первое впечатление положительное. Если локально нет видеокарты, а альтернативы искать лень, то почему бы и не попробовать этот вариант.

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

1-е место №4. Vision Transformer (ViT). Хороший баланс распределения вероятностей, выделяет и явно предсказанную породу, и близкие классы когда машина сомневается.

Можете скачать, подготовить, пользоваться этой уже обученной моделью: https://huggingface.co/wesleyacheng/dog-breeds-multiclass-image-classification-with-vit
Немного свистопляски с виртуальным окружением и докером, и в конечном итоге, рабочий образ нашего определителя пород получился на 10+Гб. Шлифуем код приложения напильником, запускаем - всё работает.

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

Спасибо за внимание!
Владимир, по заказу boxdog.ru
август 2023



Смотрите в боте в разделе "Сервисы"

Определить породу собаки в telegram