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

Многие мои друзья-технари спрашивали меня: «Как представить себя в области искусственного интеллекта

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

Я не нашел такого введения, и поэтому я напишу его здесь, имея в виду три цели:

  • Урок истории для контекста
  • Крутые приложения сегодня
  • Видеть, как легко написать свой первый алгоритм ИИ

Надеюсь, вам и вашим друзьям это пригодится.

Как это началось

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

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

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

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

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

Первый значительный прорыв в глубоком обучении зрения произошел в 2012 году, когда группа исследователей под руководством Джеффри Хинтона использовала глубокие сверточные нейронные сети (CNN) для победы в конкурсе ImageNet Large Scale Visual Recognition Challenge. Задача заключалась в идентификации объектов в наборе данных из более чем миллиона изображений из 1000 различных категорий.

Команда Хинтона достигла коэффициента ошибок всего 16,4%, что является значительным улучшением по сравнению с прошлогодним коэффициентом ошибок алгоритма-победителя, составлявшим 25,8%. Этот прорыв проложил путь к широкому внедрению глубокого обучения для приложений компьютерного зрения.

Крутые приложения глубокого обучения в компьютерном зрении

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

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

Вышеуказанные возможности интегрированы в различные системы:

  1. Автономное вождение. Глубокое обучение позволяет обнаруживать, распознавать и отслеживать объекты в режиме реального времени. Анализируя данные датчиков с камер, лидаров и радаров, алгоритмы глубокого обучения могут идентифицировать и находить пешеходов, транспортные средства, дорожные знаки и другие объекты на дороге.
  2. Промышленный контроль качества: модели глубокого обучения можно научить выявлять дефекты и аномалии в производственных процессах, обеспечивая контроль качества продукции. Это находит применение в таких отраслях, как автомобилестроение, электроника и фармацевтика.
  3. Визуальное понимание в здравоохранении.Глубокое обучение может помочь в анализе медицинских изображений, таких как рентгеновские снимки, компьютерная томография и МРТ, что позволяет медицинским работникам принимать более точные и своевременные решения.

Генеративный ИИ в компьютерном зрении

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

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

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

В настоящее время основными игроками в этой области являются DALL-E 2 от OpenAI, Midjourney, Stable Diffusion и другие. Их продукты создают высококачественные изображения, которые могут произвести революцию в творческих областях, таких как создание контента, дизайн продукта и реклама. Я призываю вас прочитать больше об этих продуктах и ​​попробовать их самостоятельно.

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

Программирование вашего первого алгоритма ИИ

«Привет, мир!» Программа ИИ представляет собой задачу классификации рукописных цифр MNIST. Давайте реализуем это ниже.

Полный код доступен в Google Colab, бесплатной облачной среде для запуска кода Python. Вы можете взаимодействовать с кодом по ссылке ниже.



Начнем с некоторых основных импортов.

Затем мы загружаем наши данные и визуализируем их.

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

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

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

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

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

Что дальше?

Для глубокого погружения я настоятельно рекомендую курс «Глубокое обучение компьютерному зрению» Мичиганского университета. Курс датирован 2019 годом, но актуален и сегодня. Он основан на классическом стэнфордском CS231n, новейшие видеолекции которого относятся к 2017 году и немного устарели.

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

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

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





Заключение

Область искусственного интеллекта обширна и постоянно развивается. Тем не менее, каждый должен с чего-то начинать, и компьютерное зрение — отличная область для начала. Он предлагает безграничное количество приложений, и кодирование в этой области может быть весьма удовлетворительным. Как только вы приобретете достаточный опыт в области компьютерного зрения, вам будет легко исследовать другие области ИИ. Продолжайте исследовать и удачи!

Спасибо за прочтение! Буду рад услышать ваши мысли и комментарии 😃