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

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

2019 год - это год, когда вы сможете использовать растущие системы автоматизации и улучшить свой бизнес, компанию, в которой вы работаете, и / или опыт ваших клиентов. В эту новую эру люди трансформируют повторяющиеся рабочие места, автоматизируя их с помощью «интеллектуальных роботов» или виртуальных помощников.

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

PlantMD

Шаза Мехди и Нил Равенелл старшеклассники разработали PlantMD, приложение, которое позволяет обнаруживать болезни растений с помощью TensorFlow. Не только эти молодые исследователи стремятся помочь фермерам. Модель машинного обучения PlantMD была вдохновлена ​​набором данных от PlantVillage, подразделения исследований и разработок Университета Пенсильвании. Компания PlantVillage создала приложение под названием Нуру, что на языке суахили означает свет, чтобы помочь фермерам выращивать более качественную маниоку - африканскую культуру, которая ежедневно обеспечивает пищей более полумиллиарда человек.

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

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

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

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

Как они это делают?

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

Для более глубокого и подробного понимания, пожалуйста, ознакомьтесь с моей предыдущей статьей:



Разобравшись с этим, давайте создадим простую CNN с нуля.

Сверточная нейронная сеть

Для этой работы мы будем использовать Keras, который является высокоуровневым NN API, он был построен с учетом быстрых экспериментов, которые в конечном итоге сделают его удобным для новичков и простым для понимания.

Как видно из приведенного выше кода, построить простую CNN так же просто, как сложить слои Conv2D (CNN) и MaxPooling2D. Мы еще не закончили, мы еще собираем систему, через минуту вы увидите окончательный результат.

Вам может быть интересно узнать, что там делает input_shape, input_shape (высота, ширина, каналы) указывает размер изображений, которые мы собираемся загружать в модель, а также то, окрашено ли изображение или нет. Я предполагаю, что вы потратили 5 минут, чтобы прочитать статью, которую я советовал выше, следуя этой инструкции, вы можете ясно видеть, что остальное - просто кусок пирога.

Мы также можем распечатать архитектуру нашей CNN, добавив эту строку кода:

model.summary()

Результат должен выглядеть так:

Как вы можете видеть, входное изображение имеет размер (28, 28,1), но после прохождения через первый слой CNN оно уменьшается в размере, то есть по мере того, как мы углубляемся, размер изображения уменьшается, но каналы (фильтры) увеличиваются, каналы представления функций, которые изучал каждый уровень, и по мере того, как мы углубляемся, представления становятся более абстрактными до точки, которую люди не могут интерпретировать или понять, но для машины эти абстрактные представления помогают машине различать объекты, которые она показывает.

После этого следующий шаг - взять последний слой, также называемый тензором размера (3, 3, 64), и передать его в нейронную сеть (NN) или иногда называемую полностью подключенной NN, которая выполняет классификацию.

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

На последнем уровне мы сделаем 10-позиционную классификацию, чтобы классифицировать 10 рукописных цифр в диапазоне от 0 до 9, используя последний слой с 10 выходами и активацией softmax.

Теперь, если вы посмотрите на model.summary (), результат должен выглядеть так:

Теперь давайте обучим нашу ConvNet, используя рукописные цифры MNIST.

Тренировка и тестирование

Набор данных MNIST состоит из 70000 изображений рукописных цифр, из которых 60000 используются для обучения и 10000 для тестирования.

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

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

Например. Число 8 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0] или Число 2 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

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

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

«Наша цель - всегда побеждать. Каждый день, каждую игру и каждое соревнование ». - Неймар

Вы можете найти весь код в этой записной книжке, которую я для вас собрал:



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

«Если вы потерпите неудачу, не расстраивайтесь». - Генри Сай

Спасибо за чтение. Если у вас есть мысли, комментарии или критика, пожалуйста, оставьте комментарий ниже.

Следите за мной в твиттере на странице Prince Canuma, чтобы всегда быть в курсе событий в поле AI .

Если вам это нравится и вы относитесь к нему, пожалуйста, поделитесь им со своими друзьями, семьей или родственниками.