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

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

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

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

С появлением мощных компьютеров, таких как NVIDIA GPU и новейших алгоритмов Deep Learning для распознавания изображений, таких как AlexNet в 2012 году Алекс Крижевский и др., ResNet в 2015 году Кэминг Хе и др., SqueezeNet в 2016 году Форрест Ландола и др., DenseNet в 2016 году Гао Хуанг и др., если упомянуть некоторых, можно собрать несколько изображений (больше похожих на книги с изображениями для компьютеров) и определить модель искусственного интеллекта, чтобы самостоятельно изучать особенности сцен и объектов на этих изображениях и использовать знания, полученные в процессе обучения, чтобы распознать все остальные экземпляры того типа сцены или объектов, с которыми он столкнется после.

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

Наша команда в AI Commons разработала библиотеку Python, которая может позволить вам обучить модель искусственного интеллекта, которая может распознавать любой объект, который вы хотите распознать на изображениях, используя всего 5 простых строк Python. код. Библиотека python - это ImageAI, библиотека, созданная, чтобы позволить студентам, разработчикам и исследователям с любым уровнем подготовки создавать системы и приложения с использованием самого современного возможности компьютерного зрения с использованием от 5 до 15 простых строк кода. Теперь позвольте нам провести вас через создание вашей первой модели искусственного интеллекта, которая может распознавать все, что вы хотите.

Для обучения модели искусственного интеллекта вам понадобится набор изображений, который называется набором данных. Набор данных содержит от сотен до тысяч образцов изображений объектов, которые должна распознавать модель искусственного интеллекта. Но не беспокойтесь! Мы не просим вас прямо сейчас пойти и загрузить тысячи изображений только для того, чтобы обучить вашу модель искусственного интеллекта. Для этого руководства мы предоставили набор данных под названием IdenProf. IdenProf (идентифицируемые профессионалы) - это набор данных, который содержит 11 000 фотографий 10 различных специалистов, которые люди могут видеть и узнавать их работу по их стилю одежды. Ниже представлены классы профессионалов, фотографии которых представлены в этом наборе данных:

· Шеф-повар

· Врач

· Инженер

· Фермер

· Пожарный

· Судья

· Механик

· Пилот

· Полиция

· Официант

Этот набор данных разделен на 9000 (900 изображений для каждой профессии), изображения для обучения модели искусственного интеллекта и 2000 (200 изображений для каждой профессии). изображения для проверки производительности модели искусственного интеллекта во время ее обучения. IdenProf был должным образом организован и подготовлен для обучения вашей модели искусственного интеллекта распознаванию профессионалов по их стилю одежды. В справочных целях, если вы используете свой собственный набор данных изображений, вы должны собрать не менее 500 изображений для каждого объекта или сцены, которые вы хотите, чтобы ваша модель искусственного интеллекта распознавала. Чтобы обучить любой набор данных изображений, который вы собираете самостоятельно с помощью ImageAI, вы должны расположить изображения по папкам, как показано в примере ниже:

idenprof//train//chef// 900 images of chefs
idenprof//train//doctor// 900 images of doctors
idenprof//train//engineer// 900 images of engineer
idenprof//train//farmer// 900 images of farmers
idenprof//train//firefighter// 900 images of firefighters
idenprof//train//judge// 900 images of judges
idenprof//train//mechanic// 900 images of mechanics
idenprof//train//pilot// 900 images of pilots
idenprof//train//chef// 900 images of chef
idenprof//train//police// 900 images of police
idenprof//train//waiter// 900 images of waiters
idenprof//test//chef// 200 images of chefs
idenprof//test//doctor// 200 images of doctors
idenprof//test//engineer// 200 images of engineer
idenprof//test//farmer// 200 images of farmers
idenprof//test//firefighter// 200 images of firefighters
idenprof//test//judge// 200 images of judges
idenprof//test//mechanic// 200 images of mechanics
idenprof//test//pilot// 200 images of pilots
idenprof//test//chef// 200 images of chef
idenprof//test//police// 200 images of police
idenprof//test//waiter// 200 images of waiters

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

· Сначала вы должны загрузить zip-архив с набором данных IdenProf по этой ссылке. Также вы можете просмотреть все детали и образцы результатов моделей искусственного интеллекта, обученных распознавать профессии, в репозитории IdenProf GitHub, ссылка на который находится ниже.

Https://github.com/OlafenwaMoses/IdenProf

· Поскольку для обучения моделей искусственного интеллекта требуются высокопроизводительные компьютерные системы, я настоятельно рекомендую вам убедиться, что ваш компьютер / ноутбук, который вы хотите использовать для этого обучения, имеет NVIDIA GPU. Кроме того, вы можете использовать Google Colab для этого эксперимента, поскольку он предлагает бесплатный NVIDIA K80 GPU для экспериментов.

· Затем вам необходимо установить ImageAI и его зависимости.

Установите Python 3.7.6 и pip

(Пропустите этот раздел, если у вас уже есть Python 3.7.6)



Установите ImageAI и зависимости

(Пропустите любую инструкцию по установке в этом разделе, если у вас уже установлена ​​библиотека)

- Tensorflow

pip install tensorflow==2.4.0

- Другое

pip install keras==2.4.3 numpy==1.19.3 pillow==7.0.0 scipy==1.4.1 h5py==2.10.0 matplotlib==3.3.2 opencv-python keras-resnet==0.2.0

Установите библиотеку ImageAI

pip install imageai --upgrade

· Создайте файл Python с любым именем, которое вы хотите дать, например «FirstTraining.py».

· Скопируйте zip-архив с набором данных IdenProf в папку, где находится ваш файл Python. Затем разархивируйте его в ту же папку.

· Затем скопируйте приведенный ниже код в файл Python (например, FirstTraining.py).

Вот и все! Это весь код, необходимый для обучения вашей модели искусственного интеллекта. Прежде чем запускать код, чтобы начать обучение, позвольте нам объяснить код.

В первой строке мы импортировали учебный класс модели ImageAI. Во второй строке мы создали экземпляр класса обучения модели. В третьей строке мы устанавливаем тип модели на ResNet50 (доступно четыре типа моделей: MobileNetv2, ResNet50, InceptionV3 и DenseNet121). В четвертой строке мы устанавливаем каталог данных (каталог набора данных) как папку zip-файла набора данных, который вы распаковали. Затем в пятой строке мы вызываем функцию trainModel и указываем следующие значения:
number_objects: это относится к количеству различных типов профессионалов в Набор данных IdenProf.
num_experiments: это количество раз, когда обучающий модели будет изучать все изображения в наборе данных identifyProf для достижения максимальной точности.
Enhance_data (необязательно): инструктор модели должен создать модифицированные копии изображений в наборе данных IdenProf для обеспечения максимальной точности.
batch_size: Это относится к к количеству изображений в наборе, которое обучающий модели будет изучать одновременно, пока не изучит все изображения в наборе данных IdenProf.
Show_network_summary (необязательно): это показывает структура типа модели, которую вы используете для обучения модели искусственного интеллекта.

Теперь вы можете запустить файл Python и начать обучение. Когда начнется обучение, вы увидите результаты, подобные приведенному ниже:

=====================================

Total params: 23,608,202

Trainable params: 23,555,082

Non-trainable params: 53,120

______________________________________

Using Enhanced Data Generation

Found 4000 images belonging to 4 classes.

Found 800 images belonging to 4 classes.

JSON Mapping for the model classes saved to  C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json

Number of experiments (Epochs) :  200
Epoch 1/100

 1/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500
2/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500
3/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500
..............................,
..............................,
..............................,
279/280 [===========================>..] - ETA: 1s - loss: 2.3097 - acc: 0.0625Epoch 00000: saving model to C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5


280/280 [==============================] - 51s - loss: 2.3095 - acc: 0.0600 - val_loss: 2.3026 - val_acc: 0.1000

Поясним детали, показанные выше:

1. Утверждение «Сопоставление JSON для классов модели, сохраненных в C: \ Users \ User \ PycharmProjects \ FirstTraining \ identifyprof \ json \ model_class.json» означает, что обучающий модели сохранил файл JSON для набора данных Identifier, который можно использовать для распознавания других изображений с помощью настраиваемого класса прогнозирования изображений (объяснение доступно по мере прочтения).

2. Строка Эпоха 1/200 означает, что сеть выполняет первое обучение целевых 200
3. Строка 1/280 [›………………… …… ..] - ETA: 52s - loss: 2.3026 - acc: 0.2500 представляет количество пакетов, которые были обучены в текущем эксперименте
4. Строка Эпоха 00000: сохранение модели в C: \ Users \ User \ PycharmProjects \ FirstTraining \ identifyprof \ models \ model_ex-000_acc-0.100000.h5 относится к модели, сохраненной после текущего обучения. ex_000 представляет эксперимент на данном этапе, в то время как acc 0,100000 и val acc: 0,1000 представляет точность модель на тестовых изображениях после настоящего эксперимента (максимальное значение точности 1.0). Этот результат помогает определить наиболее эффективную модель, которую вы можете использовать для пользовательского прогнозирования изображения.

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

На тот случай, если вы не смогли самостоятельно обучить модель искусственного интеллекта из-за отсутствия доступа к графическому процессору NVIDIA, для целей этого руководства мы предоставили модель искусственного интеллекта, которую мы обучили на Набор данных IdenProf, который вы можете использовать прямо сейчас для прогнозирования новых изображений любого из 10 профессионалов, включенных в набор данных. Эта модель достигла точности более 79% после 61 обучающего эксперимента. Щелкните эту ссылку, чтобы скачать модель. Также, если вы не проводили обучение самостоятельно, также загрузите файл JSON модели идентификатора по этой ссылке. Затем вы готовы приступить к распознаванию профессионалов с помощью обученной модели искусственного интеллекта. Просто следуйте инструкциям ниже.

Затем создайте еще один файл Python и дайте ему имя, например FirstCustomImageRecognition.py. Скопируйте модель искусственного интеллекта, которую вы скачали выше, или ту, которую вы обучили и которая достигла максимальной точности, и вставьте ее в папку, где находится ваш новый файл python (например, FirstCustomImageRecognition.py). Также скопируйте файл JSON, который вы скачали или сгенерировали во время обучения, и вставьте его в ту же папку, что и ваш новый файл python. Скопируйте образцы изображений любого профессионала, попадающего в категории набора данных IdenProf, в ту же папку, что и ваш новый файл python.

Затем скопируйте приведенный ниже код и поместите его в новый файл Python.

Посмотрите образец изображения и результат ниже.

waiter  :  99.99997615814209
chef  :  1.568847380895022e-05
judge  :  1.0255866556008186e-05

Это было просто! Теперь давайте объясним приведенный выше код, который привел к этому результату прогноза.

Первая и вторая строки кода выше импортируют класс CustomImageClassification ImageAI для прогнозирования и распознавания изображений с помощью обученных моделей и класса os python. Третья строка кода создает переменную, которая содержит ссылку на путь, содержащий ваш файл python (в этом примере ваш FirstCustomImageRecognition.py) и файл модели ResNet50, который вы скачал или обучил самостоятельно. В приведенном выше коде мы создали экземпляр класса CustomImageClassification () в четвертой строке, а затем установили тип модели объекта прогноза ResNet50, вызвав метод. setModelTypeAsResNet50 () в пятой строке, а затем мы устанавливаем путь модели объекта прогнозирования к пути файла модели искусственного интеллекта (identifyprof_061–0.7933.h5), который мы скопировали. в папку папки проекта в шестой строке. В седьмой строке мы устанавливаем путь к файлу JSON, который мы скопировали в папку в седьмой строке, и загружаем модель в восьмидесятую строку. Наконец, мы выполнили прогноз для изображения, которое скопировали в папку, и распечатали результат в интерфейсе командной строки.

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

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



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



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

У вас есть вопросы, предложения или вы хотите связаться со мной? Отправьте мне письмо на [email protected]. Я также доступен в Twitter по адресу @OlafenwaMoses и в Facebook по адресу https://www.facebook.com/moses.olafenwa.