Встречайте лето.

Вот визуальное изображение обычного летнего дня:

Она любит играть на улице в прохладную канадскую погоду. Кат-сцена:

Ясно, что ей весело.

Еще ей очень нравятся долгие прогулки. А под длительными прогулками я имею в виду, когда меня несут или кладут в коляску.

Лето имеет лишний вес на 5 фунтов, и жизнь для нее не может быть лучше. Лето не для этого мира.

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

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

Лето любит приключения и исследования. Ей нравится находить вокруг моего дома очень интересные места, где можно поспать. Шкаф? Ванна? Стол? Похоже на кровать для лета.

Она буквально противоположность собаке. Она часто ведет себя как обычная кошка.

Я давно не обращал внимания на этот вопрос.

Но недавно у меня возникло внезапное желание решить эту проблему. Может, заводчик «собачьих» соврал и на самом деле продал мне кошку. Время узнать. Я, конечно, не верну Саммер, я просто хочу раскрыть это дело.

Саммер - кошка или собака?

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

Поэтому я решил спросить своих сторонних исследователей, моих матери и отца. Неудивительно, что с меньшей детективной подготовкой, чем у меня (вот почему они - мои сторонние следователи ...), они также не смогли прийти к консенсусу.

Мой брат тоже был бесполезен. У нас нет членов семьи.

К сожалению, все мои школьные друзья-детективы были заняты менее важными делами.

Это только я, лето и мой компьютер. Решение грандиозной загадки. Поскольку я не знаю приговора, а Лето, конечно, не знает, мы чувствовали, что у нас нет выбора.

Но потом… у меня появилась идея.

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

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

Так я и поступил. Использование машинного обучения. Нейронные сети. Искусственный интеллект. (Весь этот веселый джаз).

Создание классификатора кошек-собак для диагностики моего кошачьего пса

Используя python, я создал величайший классификатор кошек и собак всех времен. Вам нужно будет дочитать до конца, чтобы узнать, кто Саммер - кошка или собака.

Обещаю, я буду держать вас в напряжении.

А теперь давайте возьмем * здоровые закуски * (классификатор "кошка-собака" уже был сложной задачей, поэтому я не буду одобрять употребление сахара, потому что я не хочу создавать классификатор "сахар убивает вас". ) и получите взлом.

Что я вообще буду делать?

Отличный вопрос.

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

Не знаете, что такое CNN? Прочтите здесь.

Не хочешь читать? Подведу итоги.

CNN - это тип нейронной сети, которая принимает изображения в качестве входных данных и изучает различные функции в изображениях и на основе характеристик изображения определяет выходные данные. В нашем случае это либо кошки, либо собаки.

Нейронная сеть состоит из множества слоев, каждый из которых играет роль в понимании различных частей изображения. Один слой может работать для классификации краев, другой - для классификации толщины меха.

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

  1. Предскажите, была ли на изображении кошка или собака.
  2. Рассчитайте ошибку прогноза
  3. Обучите себя лучше предсказывать

И мы просто повторяем это много-много раз.

Во-первых, модель предскажет, является ли вводимое изображение кошкой или собакой.

Затем он проверит, насколько это было неправильно, прочитав этикетку, что приведет к корректировке весов в системе.

Когда модель регулирует веса, она принимает больше изображений, прогнозируя их метку. На основании ошибки модель будет корректировать веса «сама» и т. Д.

Материал, который я импортировал для Модели

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

Затем я импортировал все необходимые пакеты.

(Если вам интересно) Я использовал следующие пакеты:

  • cv2 (чтобы помочь изменить размер изображений)
  • numpy (для работы с массивами)
  • os (для работы с каталогами)
  • Перемешать из случайного (для перемешивания изображений во время обучения)
  • tqdm (красивая, симпатичная, процентная полоса для использования во время таких задач, как обучение)
  • tflearn (библиотека глубокого обучения *, построенная на тензорном потоке)

* глубокое обучение = нейронная сеть со многими уровнями

Может эта картинка поможет?

Я создал глубокую CNN → сеть со многими уровнями, чтобы повысить точность моей модели.

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

Пакет - это своего рода подарок с кучей действительно полезных функций, которые может использовать программа. Когда мы импортируем эти пакеты, это все равно что преподнести программе подарки. Программа может использовать содержимое представленных «пакетов», чтобы делать то, что программа обычно не может делать.

→ Все, что вам нужно знать, это то, что все, что мы импортируем, помогает моему компьютеру диагностировать виды Саммер.

Готовим модель

Я начал с загрузки ПУЧИ картинок кошек и собак. Я говорю о тысячах. 25000.

С этими (чертовски милыми) картинками мы можем обучить мой компьютер, чтобы он стал профессионалом в классификации кошек и собак.

Я сделал несколько своих фотографий кошек и собак (25 000) и пометил их (например, cat.1.jpg, cat.2.jpg, dog.1.jpg, dog.2.jpg ... и т. Д., Я знаю, что это отнимает много времени. ) Это то, что я считал своим обучающим набором.

Затем я сделал несколько снимков кошек и собак (12500) и отложил их для тестирования. У них нет ярлыков (1.jpg, 2.jpg, 3.jpg). Угадайте, как я это назвал? Это мой набор для тестирования.

Мы до сих пор понимаем ??

Вот как это работает:

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

Я имею в виду, что именно так люди изучают IRL. Мы учимся на собственном опыте и корректируем нашу тактику на основе опыта.

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

Мы, люди, учимся на опыте ситуаций и лучше справляемся с ними, как и машины, такие как мой компьютер. Отсюда и название «машинное обучение».

Одна из наших самых больших проблем в западном мире - отстранить этих чертовых 15, 16 и 17-летних от Snapchat и заставить их делать то, что имеет значение. Можно подумать, раз это такая повторяющаяся проблема, мы узнаем и найдем решение… ха-ха, нет.

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

Мой компьютер в основном тренируется сам по себе (после того, как я написал базовый код), поэтому, пока он сам тренируется, чтобы стать классификатором про котов и собак, я и Саммер прижались друг к другу и занялись забавными вещами.

Хорошо, хватит фотографий моей кошки-собаки.

Модель:

Вот что я сделал:

  • импортировал все необходимые пакеты
  • подключил мой компьютер к моему набору данных (обучение и тестирование)
  • Написал код, чтобы научить мой компьютер читать этикетки
  • Написал код, чтобы научить мой компьютер, как перебирать мои данные обучения / тестирования.
  • Написал код для сверточной нейронной сети.

Код CNN выглядит так (к тому же, не волнуйтесь, скоро у меня будет видео с объяснением кода !!)

Затем я взял все фотографии дрессировки кошек и собак и загрузил их.

Тогда пришло время волшебства.

Тренировочное время.

Я обучил свою модель на моем обучающем наборе изображений.

Потом…

Время тестирования

Угадай, что я сделал? Проверял точность моей модели.

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

Реальное время сделки. Приготовьте закуски. Барабанная дробь, пожалуйста.

И вердикт ...

Согласно удобной модели CNN, с точностью 93% машина предсказала, что лето на самом деле было…

Собака.

Немного удивительно, но я полагаю, что у меня просто действительно странная собака.

S / O для AI для решения этой грандиозной тайны.

Дело закрыто.

Подключитесь к LinkedIn и Twitter

Дайте этой статье несколько аплодисментов + поделитесь со своей сетью :)