Машинное обучение и нейронные сети - страница 40

 

Отслеживание объектов с помощью Opencv и Python



Отслеживание объектов с помощью Opencv и Python

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

  • 00:00:00 В этом разделе спикер рассказывает о разнице между обнаружением объекта и отслеживанием объекта. Первый обнаруживает объекты кадр за кадром, а второй отслеживает объекты на протяжении всего кадра, чтобы проследить их историю. Отслеживание объектов имеет решающее значение в различных приложениях, таких как подсчет людей, отслеживание траекторий объектов и подсчет автомобилей, проезжающих по шоссе. Затем спикер представляет необходимые файлы для запуска проекта, включая видео и файл отслеживания объектов. Далее спикер начинает кодировать файл main.py, начиная с импорта библиотеки OpenCV и создания объекта захвата для чтения кадров из видео. Наконец, спикер показывает, как отображать видео в реальном времени и создавать ключевое событие для закрытия видео.

  • 00:05:00 В этом разделе спикер обсуждает отслеживание объектов с помощью OpenCV и Python. Они объясняют, что для этого конкретного метода требуется стабильная камера, а это означает, что фон не меняется со временем, а меняются только объекты в движении. Используя детектор объектов, движущиеся объекты могут быть извлечены из стабильной камеры. Детектор создает маску, и цель маски — сделать все, что не нужно, черным, а автомобили, которые нужно обнаружить, — белыми. Затем извлекаются координаты белых элементов, а те, которые слишком малы, удаляются. Затем, используя функцию поиска контуров OpenCV, границы белых объектов находятся и рисуются на кадре зеленым цветом.

  • 00:10:00 В этом разделе видеоурока объясняется, как удалить мелкие элементы из маски, вычислив площадь контура и удалив любой контур площадью менее 100 пикселей. Затем в учебном пособии обсуждается, как определить область интереса (ROI), чтобы извлечь часть изображения, чтобы сфокусироваться только на транспортных средствах на этом конкретном участке дороги, что значительно упрощает процесс обнаружения. В учебном пособии описывается, как определить ROI, указав положение, высоту и ширину секции, содержащей транспортные средства, которые мы хотим отслеживать. Учебное пособие завершается объяснением того, как применить маску к области интереса, чтобы выполнить отслеживание объекта только в этой конкретной области.

  • 00:15:00 В этом разделе видео спикер применяет алгоритм обнаружения объектов не ко всему кадру, а к ROI и показывает, насколько улучшилось обнаружение. Однако по-прежнему существуют проблемы с ложными срабатываниями и алгоритмом обнаружения. Для улучшения обнаружения объектов динамик регулирует размер истории и порог var, что влияет на количество ложных срабатываний. Затем динамик выделяет прямоугольник, окружающий каждый обнаруженный объект, и рисует его зеленым цветом в области интереса. Наконец, динамик удаляет тени с изображения, сохраняя только белые элементы изображения с помощью порогового оператора, что приводит к более точному обнаружению объекта.

  • 00:20:00 В этом разделе видео объясняет процесс отслеживания объектов с помощью OpenCV и Python. Необходимо импортировать файл «tracker.py» и создать объект «трекер» для эффективного отслеживания. «Трекер» собирает ограничивающие рамки объектов и сохраняет их в массиве с именем «обнаружения». Каждая ограничивающая рамка имеет свой собственный набор значений положения x, y, ширины и высоты. Эти поля должны иметь минимальное значение 100, поэтому трекер отбрасывает нерелевантные объекты. Серия обнаруженных объектов отображается кадр за кадром, а массив обнаружений передается объекту трекера. Затем трекер возвращает историю и уникальные идентификаторы каждого отслеживаемого объекта. Начальным шагом для отслеживания объекта является обнаружение объекта, и это возможно только в том случае, если объект обнаружен в первом кадре.

  • 00:25:00 В этом разделе видео обсуждается добавление уникальных идентификаторов к функции отслеживания объектов в OpenCV и Python. Каждый объект теперь имеет свой идентификатор, что предотвращает ошибки при подсчете объектов. Используя идентификаторы, можно правильно подсчитать объекты и провести линию, чтобы определить, когда объекты пересекают ее. Видео заканчивается объяснением того, что показанный метод прост, не идеален, но является хорошим введением в отслеживание объектов. Для получения более глубоких знаний об обнаружении и отслеживании объектов создатель рекомендует просмотреть их видеокурс по OpenCV и глубокому обучению.
Object Tracking with Opencv and Python - Pysource
Object Tracking with Opencv and Python - Pysource
  • Sergio Canu Hi there, I’m the founder of Pysource. I’m a Computer Vision Consultant, developer and Course instructor. I help Companies and Freelancers to easily and efficiently build Computer Vision Software .
  • pysource.com
In this tutorial we will learn how to use Object Tracking with Opencv and Python. First of all it must be clear that what is the difference between object detection and object tracking: Object detection is the detection on every single frame and frame after frame. Object tracking does frame-by-frame tracking but keeps the history of where the...
 

Дорожная карта компьютерного зрения | Как стать инженером по компьютерному зрению



Дорожная карта компьютерного зрения | Как стать инженером по компьютерному зрению

В этом видео представлена дорожная карта для того, чтобы стать инженером по компьютерному зрению, разделяя процесс обучения на четыре модуля: Python и OpenCV, робототехника и низкоуровневое программирование, искусственный интеллект и дополнительные темы. Подчеркивается важность практических проектов, связанных с физическими устройствами, такими как робототехника и Arduino, наряду с необходимостью иметь базовое понимание математики. Спикер также рассказывает о конкурсах и проектах, которые могут помочь начинающим инженерам по компьютерному зрению отточить свои навыки. Кроме того, подчеркивается важность навыков межличностного общения, таких как документация и знание программных инструментов, таких как Git и Docker. Наконец, рекомендуется получить степень в области математики, науки о данных, информатики или инженерии, хотя возможно и самостоятельное обучение в рамках проектов и курсов.

  • 00:00:00 В этом разделе видео спикер представляет дорожную карту компьютерного зрения, которая охватывает все, что нужно человеку, чтобы научиться, чтобы стать разработчиком компьютерного зрения. Дорожная карта отвечает на три основных вопроса: какие навыки требуются, над какими проектами вы можете работать, чтобы приобрести эти навыки, и какие степени колледжа доступны для изучения этих навыков. Дорожная карта разделена на четыре модели, первая из которых охватывает Python и OpenCV, необходимые для решения 70% проблем компьютерного зрения. Вторая модель связана с робототехникой и низкоуровневым программированием, которое включает в себя работу с C++ и электроникой. Третья и четвертая модели охватывают искусственный интеллект и расширенные темы соответственно. Спикер предлагает начинающим проекты для каждой модели, например, работу над роботом, следящим за линией, или считывателем QR-кода, чтобы получить знания и навыки.

  • 00:05:00 В этом разделе видео спикер обсуждает важность работы над проектами, в которых задействованы физические устройства, такие как робототехника и Arduino. Спикер объясняет, что программирование для таких устройств требует другого подхода, потому что один и тот же код может давать разные результаты из-за таких факторов, как шум датчика и изменение освещения. Третий модуль, о котором упоминает спикер, посвящен искусственному интеллекту и машинному обучению с использованием популярной библиотеки Python Scikit-learn, которую можно использовать для таких задач, как классификация изображений и обнаружение объектов. Наконец, спикер также подчеркивает важность базового понимания математики и того, как она связана с компьютерным зрением.

  • 00:10:00 В этом разделе спикер объясняет важность разделения среды на разные области и то, как это можно использовать для обнаружения таких ситуаций, как пересечение полос движения, при этом демонстрируя простое изображение с различными областями, разделенными базовой геометрией. Он подчеркивает, что инженерам по компьютерному зрению необходимо свободно владеть математикой, и рекомендует изучить основы классификации изображений и обнаружения объектов, секретного обучения и геометрии, прежде чем переходить к более продвинутым навыкам машинного обучения, математики и электроники. Он предлагает такие проекты, как генеративно-состязательные сети и внедрение передовых работ в области компьютерного зрения для изучения продвинутого машинного обучения, одновременно занимаясь продвинутыми проектами Arduino или участвуя в соревнованиях по робототехнике для улучшения знаний в области электроники.

  • 00:15:00 В этом разделе спикер рассказывает о различных конкурсах и проектах, которые могут помочь начинающим инженерам по компьютерному зрению отточить свои навыки. Эти соревнования включают создание роботов и агентов, которые могут выполнять сложные задачи и соревноваться с другими командами. Спикер подчеркивает важность изучения основ компьютерного зрения, в том числе Python и OpenCV, которые могут помочь решить 70% имеющихся задач. Четыре упомянутых модуля: основы, робототехника, искусственные намерения и продвинутые модули. Хотя расширенный модуль важен, спикер предлагает сначала сосредоточиться на других модулях, поскольку они охватывают основные навыки, необходимые для того, чтобы стать успешным инженером по компьютерному зрению.

  • 00:20:00 В этом разделе спикер обсуждает различные навыки, связанные с программным обеспечением, которыми должен обладать разработчик компьютерного зрения, помимо знаний в области компьютерного зрения, машинного обучения и Python. Эти навыки включают в себя знание основ таких инструментов, как Git и Docker, а также облачных провайдеров, таких как AWS или Google Cloud. Дополнительные навыки, которые считаются ценными, включают веб-разработку или мобильную разработку, знание JavaScript и умение писать надлежащую документацию, такую как файл readme для репозитория GitHub, или документирование всего процесса. Хотя не все эти навыки являются обязательными, они могут быть полезны для демонстрации работы разработчика и решения различных проблем.

  • 00:25:00 В этом разделе спикер подчеркивает важность документации для разработчиков компьютерного зрения, поскольку она упрощает работу для всех. Они также предполагают, что каждый разработчик, а не только разработчики компьютерного зрения, должен освоить документацию, поскольку это важный навык. Затем докладчик подчеркивает важность знакомства с различными программными инструментами и призывает начинающих инженеров по компьютерному зрению учиться как можно больше. Тем, кто заинтересован в получении высшего образования, спикер рекомендует степени в области математики, науки о данных, компьютерных наук, электротехники или любую другую инженерную степень, поскольку они обеспечивают основу для подхода к проблемам и поиска решений. Однако спикер отмечает, что вполне можно научиться всему самостоятельно, проходя проекты и курсы.
Computer vision roadmap | How to become a computer vision engineer
Computer vision roadmap | How to become a computer vision engineer
  • 2022.11.03
  • www.youtube.com
0:00 - Start0:20 - Who am I?0:46 - Video roadmap01:28 - Skills: 4 modules2:04 - Fundamentals3:46 - Robotics / low level programming7:38 - Artificial Intellig...
 

КЛАССИФИКАЦИЯ ИЗОБРАЖЕНИЙ с пользовательским набором данных Yolov8 | Учебник по компьютерному зрению

Код: https://github.com/computervisioneng/image-classification-yolov8



КЛАССИФИКАЦИЯ ИЗОБРАЖЕНИЙ с пользовательским набором данных Yolov8 | Учебник по компьютерному зрению

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

  • 00:00:00 В этом разделе ютубер демонстрирует, как создать классификатор изображений с помощью YOLOv8 для пользовательского набора данных. Он начинает с показа набора данных, который включает в себя изображения облаков, дождя, солнечного света и восходов солнца. Он также объясняет файловую структуру, которую YOLOv8 ожидает для ввода данных. Затем Фелипе объясняет три разных способа обучения классификатора изображений с помощью YOLOv8: первый — с использованием скрипта Python, второй — с использованием блокнота Google Colab, а третий — с использованием даркнета, который является базовой структурой для YOLOv8.

  • 00:05:00 В этом разделе руководства рассматриваются зависимости, необходимые для обучения модели классификации изображений с помощью Yolov8, и способы их установки с помощью интерпретатора Python в PyCharm. Два основных необходимых пакета — это Ultralytics и NumPy, причем Ultralytics имеет решающее значение для импорта необходимых данных для обучения модели. Затем в учебнике рассматривается код, необходимый для обучения модели, и требуется указать абсолютный путь к данным в правильном формате. Тестовый запуск также выполняется только для одной эпохи, чтобы убедиться, что все работает правильно, прежде чем продолжить дальнейшее обучение.

  • 00:10:00 В этом разделе спикер показывает, где находятся результаты тренировочного процесса, и объясняет структуру папок внутри папки забегов. Затем он демонстрирует, как обучить классификатор изображений с помощью Yolov8 через командную строку, используя специальную утилиту и необходимые аргументы. Он продолжает демонстрировать простоту этого подхода, обучая модель только для одной эпохи, а затем показывает, где сохраняются результаты в новом каталоге с пометкой «обученные 13». Наконец, спикер обсуждает другой способ обучения модели с помощью Google Collab и дает краткое объяснение процесса его настройки.

  • 00:15:00 В этом разделе ведущий показывает уже созданный блокнот для обучения моделей Yolov8 под названием «train.ipymb». Загрузка наборов данных на Google Диск является важным шагом для пользователей, чтобы получить доступ к своим данным из Google Collab, поскольку этот процесс требует от пользователей выполнения ячейки, которая соединяет Google Collab с Google Диском. Знание пути к пользовательскому набору данных на Google Диске имеет решающее значение, поскольку пользователям необходимо ввести этот путь в свои записные книжки, чтобы правильно использовать свои наборы данных. Наконец, ведущий предоставляет простые команды, которые пользователи могут выполнять для установки необходимых библиотек, необходимых для обучения моделей Yolov8.

  • 00:20:00 В этом разделе видео инструктор демонстрирует, как обучить классификатор изображений с помощью YOLOv8 и пользовательского набора данных, а также как скопировать результаты, полученные в среде Google Colab, на Google Диск. Они запускают процесс обучения для одной эпохи, копируют результаты на Google Диск, а затем запускают процесс обучения для 20 эпох. Наконец, они показывают, как проанализировать, привел ли процесс обучения к созданию хорошего классификатора изображений. Преподаватель подчеркивает важность правильной настройки переменной каталога данных и предлагает скопировать результаты на Google Диск, чтобы упростить их загрузку и анализ.

  • 00:25:00 В этом разделе анализируются результаты процесса обучения пользовательского набора данных с использованием YOLOv8. Исследуются файлы, сохраненные на локальном компьютере, включая файл конфигурации, в котором перечислены все параметры EPA, используемые в процессе обучения, и файл результатов, который включает в себя потери при обучении и проверке, а также точность. Файл Python, отображающий потери и точность в разные эпохи, использовался для определения того, снижаются ли потери и повышается ли точность в процессе обучения. Делается вывод, что простой, но мощный подход состоит в том, чтобы проверить, снижаются ли потери при обучении и при проверке при повышении точности.

  • 00:30:00 В этом разделе спикер объясняет, как выглядит точность оценки, когда мы увеличиваем количество эпох, показывая, что точность увеличивается, а затем выходит на плато. Для улучшения процесса и получения лучшей модели можно использовать различные параметры и более индивидуальное обучение. Также поясняется каталог "weights", в котором сохраняются два разных файла: "last.pt" и "best.pt". Файл «last.pt» — это модель, созданная в конце последней эпохи обучения, а файл «best.pt» — это модель, созданная в конце наилучшей эпохи обучения. На практике последняя модель будет использоваться для получения окончательных результатов.

  • 00:35:00 В этом разделе спикер обсуждает, как выбрать лучшую модель для проекта и делает предложения между выбором последней модели, полученной в процессе обучения, или выбором модели с максимальной точностью. Решение зависит от различных факторов, включая данные, проблему, вариант использования и процесс обучения. Спикер также объясняет, как сделать все выводы и предсказать новые выборки, импортировав YOLO и указав абсолютный путь к модели, используя изображение с локального компьютера и показав результаты. Результаты предоставляют много информации, включая вероятности и названия категорий, на которых обучался классификатор изображений.

  • 00:40:00 В этом разделе видео ведущий объясняет, как использовать словарь для определения классификаций изображения с помощью YOLOv8. Результатом классификатора изображений являются целые числа, соответствующие разным категориям, и для определения категории, которую представляет каждое целое число, используется словарь. Кроме того, получается вектор вероятности всех различных классов для данного изображения, и ведущий демонстрирует, как определить максимальную вероятность и соответствующую ей категорию с помощью numpy. В заключение ведущий показывает, как классифицировать изображение с помощью модели YOLOv8, и предлагает подписаться на их канал, чтобы узнать больше о проектах в области компьютерного зрения.
IMAGE CLASSIFICATION with Yolov8 custom dataset | Computer vision tutorial
IMAGE CLASSIFICATION with Yolov8 custom dataset | Computer vision tutorial
  • 2023.04.05
  • www.youtube.com
Code: https://github.com/computervisioneng/image-classification-yolov80:00 Intro0:41 Dataset1:54 Data structure4:50 Train method 1: Python in local environme...
 

Обучение обнаружению объектов Yolov8 на пользовательском наборе данных | Пошаговое руководство | Учебник по компьютерному зрению

Код: https://github.com/computervisioneng/train-yolov8-custom-dataset-step-by-step-guide



Обучение обнаружению объектов Yolov8 на пользовательском наборе данных | Пошаговое руководство | Учебник по компьютерному зрению

В этом видеоруководстве представлено пошаговое руководство по обучению детектора объектов с помощью YOLOv8 на пользовательском наборе данных для приложений компьютерного зрения. Учебное пособие охватывает такие важные аспекты, как сбор данных, аннотации, форматирование и обучение, а также значение анализа графиков функции потерь и реальных примеров для оценки производительности модели. В руководстве особое внимание уделяется использованию инструмента CVAT для аннотаций, соблюдению требуемого формата данных YOLOv8 и созданию файла конфигурации YAML. В учебнике также демонстрируется использование Google Colab и PyCharm для обучения и тестирования детектора объектов.

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

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

  • 00:05:00 В этом разделе видео рассказчик обсуждает процесс аннотирования данных с помощью инструмента CVAT, который представляет собой инструмент маркировки, который можно использовать для обнаружения объектов и задач аннотирования, связанных с компьютерным зрением. Рассказчик демонстрирует, как использовать инструмент CVAT для аннотирования набора изображений для пользовательского набора данных, объясняя, как создать новый проект и задачу, загрузить изображения и добавить метки для обнаруживаемых объектов. Хотя у рассказчика уже есть аннотации к используемым изображениям, они предоставляют пошаговое руководство для тех, кому необходимо аннотировать свои данные. В видео также подчеркиваются преимущества и недостатки различных инструментов аннотирования, а также подчеркиваются преимущества использования CVAT.

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

  • 00:15:00 В этом разделе обсуждается важность критериев для аннотирования изображений на примере набора данных альпаки. Также показаны различные способы определения ограничивающих рамок для объектов, в том числе плотное прилегание рамки к объекту или использование менее жесткой ограничивающей рамки. Инструмент аннотирования cb80 выделяется как полезное и простое в использовании веб-приложение для форматирования и аннотирования данных, подчеркивая важность аннотирования данных при обучении алгоритмов обнаружения объектов.

  • 00:20:00 В этом разделе видео ведущий объясняет конкретный формат данных, необходимый для YOLOv8 для обучения детектора объектов. У каждого алгоритма машинного обучения есть свои требования к вводу данных, и YOLO нужны данные в очень специфическом формате. Докладчик демонстрирует, как экспортировать аннотированные данные из CV80 и преобразовать их в формат YOLO. Формат YOLO требует, чтобы аннотации и соответствующие изображения имели одинаковое имя и разные расширения файлов, при этом каждая аннотация ограничительной рамки содержала номер класса и четыре числа с плавающей запятой, которые определяют центральное положение, ширину и высоту ограничительной рамки. Подчеркивается, что наличие данных в правильном формате имеет решающее значение для обучения детектора объектов.

  • 00:25:00 В этом разделе спикер объясняет, как структурировать данные для обучения обнаружению объектов с помощью YOLOv8 в пользовательском наборе данных. Первым шагом является создание двух каталогов: одного для изображений и одного для этикеток с конкретными именами каталогов, которые нельзя изменить. В каталоге изображений должны быть расположены все изображения, которые будут использоваться для обучения, и для удобства можно использовать каталог поездов. В каталоге labels должны быть файлы аннотаций для каждого изображения в соответствии со стандартным форматом, где каждая строка указывает идентификатор класса, положение X/Y центра ограничивающей рамки, а также ширину и высоту ограничивающей рамки. Докладчик также объясняет, как использовать дополнительные каталоги для проверки или тестирования данных или для разных версий данных.

  • 00:30:00 В этом разделе в видеоруководстве обсуждается процесс обучения вашего детектора объектов с помощью YOLO V8 с использованием Python или утилиты командной строки. Официальный репозиторий YOLO V8 предлагает возможность обучения с помощью нескольких инструкций Python или запуска команды в терминале. Затем в учебнике представлено пошаговое руководство по обучению детектора объектов с использованием YOLO V8 в проекте PyCharm, включая импорт библиотеки Ultralytics и создание файла конфигурации YAML. В руководстве также подчеркивается, что пользователи могут выбирать между работой в локальной среде или Google Colab.

  • 00:35:00 В этом разделе видео спикер обсуждает конфигурационный файл для обучения детектора объектов с помощью YOLO V8 на пользовательском наборе данных. Они объясняют, как установить имена различных обнаруживаемых классов, абсолютный путь к каталогу, содержащему изображения и аннотации, и относительный путь к расположению изображений. Докладчик также упоминает два ключевых слова, «train» и «val», которые относятся к данным обучения и проверки соответственно. Они подчеркивают важность использования абсолютного пути вместо относительного, чтобы избежать каких-либо проблем. Затем спикер демонстрирует, как выполнить файл, и начинает процесс обучения для одной эпохи, подчеркивая необходимость дождаться завершения процесса. Наконец, они показывают выходные файлы, созданные после завершения процесса обучения.

  • 00:40:00 В этом разделе видеоурока спикер показывает пакеты изображений, используемые для обучения алгоритма обнаружения объектов YOLOv8, а также аналогичные изображения для проверки. Спикер поясняет, что они проводят поверхностную и фиктивную тренировку, и показывают используемые для этого файлы. Затем спикер показывает, как обучить алгоритм из командной строки с помощью терминала, а также из блокнота Google Collab. Блокнот состоит всего из пяти ячеек, и спикер демонстрирует, как просто загружать данные, монтировать Google Drive и обучать алгоритм, просто указав относительный путь к местоположению данных.

  • 00:45:00 В этом разделе видеоруководство показывает, как использовать Google Colab для обучения детектора объектов YOLOv8 на пользовательском наборе данных. Процесс включает в себя сохранение определенной переменной и выполнение команды «pip install ultralytics» в среде Google Colab с помощью команды с восклицательным знаком. В этом руководстве показано, как ввести те же строки кода, что и в локальной среде, и как указать абсолютный путь к каталогу Google Диска. После загрузки файлов и выполнения команд процесс обучения аналогичен процессу в локальной среде. В руководстве пользователям предлагается дождаться завершения выполнения и не забыть выполнить команду, которая копирует каталог результатов в выбранный каталог в Google Colab.

  • 00:50:00 В этом разделе видеоруководство посвящено тестированию производительности детектора объектов Yolov8, обученного на пользовательском наборе данных. Первым шагом в тестировании модели является переход в каталог, где была сохранена вся информация о процессе обучения. Затем видео демонстрирует различные выходные данные и графики, которые можно использовать для анализа производительности модели, включая матрицы путаницы, кривые достоверности F1 и графики функции потерь. В видео рекомендуется сосредоточиться на графиках потерь, убедившись, что все потери снижаются, поскольку это простой, но мощный способ анализа производительности модели. Также обсуждаются различные ситуации на графиках функции потерь, например, плоская функция потерь, которая может указывать на то, что модель изучила все, что ей нужно было изучить.

  • 00:55:00 В этом разделе видео ведущий обсуждает анализ функции потерь, чтобы получить представление о процессе обучения модели обнаружения объектов. Если функция потерь падает, все идет хорошо, а если растет, то есть проблема с обучением. Просмотр графиков и анализ этой информации — это скорее исследование, но докладчик предлагает более наглядный способ оценки производительности модели, который заключается в просмотре реальных примеров и просмотре того, как модель работает на реальных данных. Ведущий показывает примеры модели, обнаруживающей реальных альпак в видеороликах, которые являются полностью невидимыми данными для проверки производительности модели. Хотя результаты не идеальны, производительность хорошая, и докладчик утверждает, что эта визуальная оценка более актуальна для фрилансера, работающего над проектом клиента, поскольку клиент может не заботиться о графиках и метриках, а скорее хочет видеть, как модель работает на реальных данных.
  • 01:00:00 В этом разделе спикер демонстрирует производительность модели обнаружения объектов YOLOv8, обученной на наборе данных альпака на невидимых данных с помощью скрипта Python, который загружает видео и выполняет прогнозы. Обнаружения, кажется, работают хорошо, с почти идеальным обнаружением в некоторых случаях и стабильным обнаружением в других, за исключением некоторых пропущенных обнаружений в одном видео. Спикер советует проанализировать функции потерь при обучении и валидации, проверить их тенденцию к снижению и наличие возможностей для улучшения, чтобы решить, обучать ли модель снова, что делает спикер, чтобы получить более мощную и более производительную модель.
Train Yolov8 object detection on a custom dataset | Step by step guide | Computer vision tutorial
Train Yolov8 object detection on a custom dataset | Step by step guide | Computer vision tutorial
  • 2023.01.30
  • www.youtube.com
In this video I show you a super comprehensive step by step tutorial on how to use yolov8 to train an object detector on your own custom dataset!Code: https:...
 

Обнаружение объектов Yolov8 + отслеживание объектов глубокой сортировки | Учебник по компьютерному зрению

Код: https://github.com/computervisioneng/object-tracking-yolov8-deep-sort



Обнаружение объектов Yolov8 + отслеживание объектов глубокой сортировки | Учебник по компьютерному зрению

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

  • 00:00:00 В этом разделе видео ведущий знакомит с проектом работы с обнаружением объектов с помощью YOLOv8 и отслеживанием объектов с помощью глубокой сортировки. Цель состоит в том, чтобы создать алгоритм отслеживания, который может отслеживать движение людей в видео и использовать ограничивающие рамки разных цветов для обозначения отслеживаемых объектов. Хост показывает репозитории YOLOv8 и глубокой сортировки, которые будут использоваться, а также видеоданные, которые будут протестированы. Наконец, хост вводит файл с именем «tracker.py», который представляет собой оболочку для глубокой сортировки, упрощающую процесс отслеживания объектов за счет использования высокоуровневых функций.

  • 00:05:00 В этом разделе видео ведущий объясняет, как настроить среду для туториала, клонировав нужный репозиторий, скачав нужные файлы и импортировав нужные библиотеки. Они объясняют важность создания правильной файловой структуры и установки правильных зависимостей для обеспечения совместимости с кодом. Затем докладчик демонстрирует, как загружать видео и считывать из него кадры с помощью OpenCV, а также как отображать кадры в окне.

  • 00:10:00 В этом разделе докладчик демонстрирует, как использовать предварительно обученную модель YOLOv8 для обнаружения видео. С помощью Ultralytics импортируется предварительно обученная модель, и функция вызывается на кадре видео. Результаты обнаружения вывода выводятся на печать, но, поскольку результаты относятся к пользовательскому типу объекта, их необходимо развернуть и преобразовать в список с помощью цикла for. Окончательные выходные данные сохраняются в новый объект. После успешного выполнения кода результаты можно использовать в качестве входных данных для алгоритмов отслеживания объектов.

  • 00:15:00 В этом разделе видеоруководства спикер демонстрирует, как извлечь всю важную информацию об обнаружении из детектора объектов YOLOv8 и отслеживать обнаруженные объекты с помощью отслеживания объектов Deep Sort. Они показывают, как извлекать информацию, такую как идентификатор класса, значение достоверности и координаты для каждого обнаружения, чтобы передать ее алгоритму отслеживания. Спикер также показывает, как инициализировать и вызывать трекер Deep Sort с детектами и кадрами, чтобы отслеживать обнаруженные объекты во времени.

  • 00:20:00 В этом разделе ведущий объясняет процесс отслеживания объектов глубокой сортировки, который включает в себя вычисление признаков поверх кадра и обнаруженных объектов. Алгоритм обрезает кадр и извлекает функции, а для повторения всех дорожек ведущий использует цикл для доступа к ограничивающей рамке и идентификатору дорожки. Каждому человеку или объекту, обнаруженному на видео, назначается идентификатор, который остается неизменным на всех кадрах. Для каждого обнаруженного нового идентификатора ведущий отображает его другим цветом, используя список случайных цветов в визуализации.

  • 00:25:00 В этом разделе видео спикер решает проблему сохранения видео со всеми разными кадрами и детектами обратно на локальный компьютер. Новый объект, видеозапись CV2, создается для сохранения видео с указанным именем и местоположением. Видео сохраняется с использованием кодека MP4 и той же частоты кадров, что и исходное видео. Спикер подчеркивает, что все работает правильно, хотя определение в реальном времени не достигается из-за большого количества загружаемых объектов и выполнения на процессоре. В целом проблема обнаружения объектов с помощью YOLOv8 и отслеживания объектов с помощью Deep SORT успешно решена.

  • 00:30:00 В этом разделе спикер завершает урок, рассказывая о последних шагах, необходимых для реализации успешной системы обнаружения и отслеживания объектов с использованием YOLOv8 и глубокой сортировки. Они демонстрируют, как сохранить выходные кадры в файл out.mp4 и показывают его успешное завершение. Кроме того, спикер упоминает возможные ошибки обнаружения и призывает зрителей изменить порог обнаружения, чтобы повысить точность системы обнаружения таких объектов, как птицы. В целом, это руководство служит полезным руководством для всех, кто хочет внедрить систему обнаружения и отслеживания объектов с использованием методов компьютерного зрения.
Yolov8 object detection + deep sort object tracking | Computer vision tutorial
Yolov8 object detection + deep sort object tracking | Computer vision tutorial
  • 2023.02.13
  • www.youtube.com
Code: https://github.com/computervisioneng/object-tracking-yolov8-deep-sortYolov8: https://github.com/ultralytics/ultralyticsDeep sort: https://github.com/nw...
 

Сегментация изображений с пользовательским набором данных Yolov8 | Учебник по компьютерному зрению

Код: https://github.com/computervisioneng/image-segmentation-yolov8

Данные: https://drive.google.com/drive/folders/1JvA2IvHBy2QOnAtPtoy4JbEEmtbz5dnK .



Сегментация изображений с пользовательским набором данных Yolov8 | Учебник по компьютерному зрению

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

  • 00:00:00 В этом разделе видео инструктор показывает набор данных, который будет использоваться для семантической сегментации: набор изображений уток с соответствующими бинарными масками. Двоичная маска имеет все белые пиксели для объекта на изображении и все черные пиксели для всего остального. Преподаватель загружает этот набор данных из ресурса открытых изображений версии 7 и показывает веб-сайт cvat.ai на случай, если кому-то понадобится аннотировать свои собственные данные изображения. Затем инструктор демонстрирует, как использовать этот инструмент для создания бинарной маски для изображения всего в одной аннотации к изображению.

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

  • 00:10:00 В этом разделе спикер объясняет, как форматировать и структурировать набор данных для обучения модели семантической сегментации с помощью YoloV8. Первым шагом является загрузка необходимых данных с помощью параметра «Экспорт набора данных задачи» и выбора маски сегментации. После загрузки данных их необходимо организовать в структуру каталогов, содержащую изображения, маски и метки. Маски, сгенерированные из изображений, необходимо преобразовать в файл другого формата с помощью скрипта Python, предоставленного докладчиком. Этот формат файла требуется YoloV8 и содержит ту же информацию, что и двоичные маски. Спикер также подчеркивает важность структурирования файловой системы определенным образом, чтобы YoloV8 мог находить и использовать данные.

  • 00:15:00 В этом разделе докладчик объясняет необходимую структуру каталогов, необходимую для сегментации изображений с помощью пользовательского набора данных Yolov8. Пользователям необходимо иметь два каталога: один под названием «поезд», содержащий все обучающие данные для модели семантической сегментации, а другой под названием «мяч» содержит изображения, которые будут использоваться для проверки модели. В этих каталогах есть два других каталога — «images» и «labels», которые имеют два подкаталога, называемых «train» и «ball». Первый содержит все аннотации, сгенерированные из тренировочных масок. Докладчик настраивает структуру в pycharm и продолжает объяснять, как обучать модель, используя предварительно обученную модель Yolov8 от Ultralytics, включая реализацию кода и редактирование файла конфигурации.

  • 00:20:00 В этом разделе спикер объясняет, что модель семантической сегментации обучается в Google Collab благодаря доступу к бесплатному графическому процессору, что значительно ускоряет процесс. Спикер рекомендует загружать данные, включая каталоги и изображения, а также файл config.yaml до начала процесса. Кроме того, спикер показывает и объясняет, как выполнить каждую ячейку в блокноте Jupiter, и делится расположением своих данных на Google Диске, побуждая пользователя делать то же самое при загрузке своих данных. Наконец, спикер упоминает об установке Ultralytics, чтобы они могли использовать YOLOv8 в ноутбуке, и подчеркивает необходимость использования Google Collab с графическим процессором при проверке типа среды выполнения.

  • 00:25:00 В этом разделе руководства спикер обучает модель в течение 10 эпох и сохраняет результаты в папке сегмента обучения 2. Следующим шагом является анализ результатов обучения, чтобы убедиться, что все работает нормально. Самый простой способ сделать это — скопировать весь контент из каталога, в котором сохраняются результаты, на Google Диск. После загрузки результатов на локальный компьютер докладчик рекомендует сосредоточиться на анализе графиков функции потерь, потерь при сегментации, потерь при обучении и проверочных потерь, чтобы убедиться, что функция потерь снижается. Это хороший признак того, что дела идут хорошо, а возрастающая функция потерь указывает на серьезную проблему.

  • 00:30:00 В этом разделе спикер рассказывает об анализе функции потерь и метрик проверки для обучения хорошей модели для пользовательского набора данных Yolov8. Если потери при обучении и проверке снижаются, это хороший знак, что указывает на тенденцию к улучшению качества прогнозов. Однако докладчик предупреждает, что отсутствующие аннотации и другие недостатки в обучающих данных могут повлиять на качество прогноза, что приведет к неожиданным тенденциям на графике функции потерь. Поэтому спикер советует не сходить с ума, анализируя эти графики, и включить анализ прогнозов для оценки общей производительности модели.

  • 00:35:00 В этом разделе спикер обсуждает важность анализа результатов проверки и оценки модели, обученной на наборе данных, который не идеален и имеет ошибки. Эти ошибки можно устранить, используя прогнозы текущей модели для обучения новой и улучшенной модели. Докладчик показывает каталог, в котором сохраняются веса модели, объясняя, что last.pt и best.pt представляют последнюю и лучшую модели во время обучения соответственно. Наконец, спикер рекомендует использовать less.pt, так как он учитывает гораздо больше информации, чем модель best.pt.

  • 00:40:00 В этом разделе видеоруководства по сегментации изображений с помощью пользовательского набора данных YOLOv8 ведущий демонстрирует, как делать прогнозы с помощью скрипта Python. Он начинает с импорта пакета YOLO из Ultralytics и определяет модель, используя less.pt из каталога результатов. Затем он указывает путь к изображению и импортирует CV2, чтобы открыть и прочитать это изображение. Ведущий получает результаты модели, вызывая модель на изображении и перебирая результаты, чтобы получить предсказанную маску. Он изменяет размер маски до размера исходного изображения и сохраняет ее как output.png. Ведущий также показывает, как наложить маску на исходное изображение, чтобы обеспечить хороший прогноз.

  • 00:45:00 В этом разделе ведущий демонстрирует результат модели семантической сегментации, которую они обучили с помощью YOLOv8. Используя наложенное изображение и прозрачность, они показывают, что, хотя маска не идеальна на 100%, это очень хороший результат, учитывая ошибки в данных. Затем докладчик резюмирует весь процесс от аннотирования данных, обучения модели, ее проверки до прогнозирования. Наконец, они призывают зрителей подписаться на их канал и посмотреть другие видео, которые они опубликовали.
Image segmentation with Yolov8 custom dataset | Computer vision tutorial
Image segmentation with Yolov8 custom dataset | Computer vision tutorial
  • 2023.04.10
  • www.youtube.com
Code: https://github.com/computervisioneng/image-segmentation-yolov8Data: https://drive.google.com/drive/folders/1JvA2IvHBy2QOnAtPtoy4JbEEmtbz5dnK?usp=sharin...
 

Обнаружение объектов Tensorflow за 5 часов с помощью Python | Полный курс с 3 проектами

Получить код Tensorflow Object Detection Python Code Course Code: https://github.com/nicknochnack/TFODCourse

Приложение React для обнаружения объектов Tensorflow: https://github.com/nicknochnack/TFODApp

Обнаружение объектов Tensorflow для Raspberry Pi: https://github.com/nicknochnack/TFODRPi



Обнаружение объектов Tensorflow за 5 часов с помощью Python | Полный курс с 3 проектами

Часть 1

  • 00:00:00 В этом разделе инструктор знакомит с курсом по обнаружению объектов, который предназначен для того, чтобы новички в обнаружении объектов достигли профессионального уровня в качестве практиков. Курс является всеобъемлющим и охватывает установку и настройку API обнаружения объектов TensorFlow, сбор и маркировку изображений, обучение модели, экспорт модели обнаружения в различные форматы и тестирование моделей в различных случаях использования. Весь курс выполняется с использованием инструментов с открытым исходным кодом, в основном обнаружения объектов Python и TensorFlow, что упрощает перепрофилирование кода для обнаружения различных объектов. Преподаватель также объясняет преимущества использования API обнаружения объектов TensorFlow, который ускоряет процесс построения моделей обнаружения объектов благодаря различным дополнительным возможностям, которые он предоставляет.

  • 00:05:00 В этом разделе инструктор объясняет разницу между традиционным программированием и машинным обучением, когда вместо определения явных правил для обнаружения объектов машинное обучение использует данные и ответы для обучения модели обнаружения объектов изучению правил. Модель может обнаруживать объекты в статических изображениях и видеопотоках в реальном времени, а также может быть экспортирована и преобразована в различные форматы, такие как tensorflow.js и tf lite, с использованием замораживания и преобразования. Настройка производительности имеет решающее значение для повышения точности модели, и инструктор раскрывает эту тему на шестом шаге. Наконец, инструктор демонстрирует три проекта, в том числе использование USB-микроскопа для обнаружения дефектов в мелких деталях, обнаружение объектов в видеоигре и подсчет количества объектов, проходящих через веб-камеру.

  • 00:10:00 В этом разделе инструктор представляет три проекта, которые будут рассмотрены в учебном пособии, которые включают в себя обучение модели обнаружения объектов для выявления дефектов в печатных платах, обнаружение жестов рук и интеграцию модели в веб-приложение, и проведение обнаружения объектов в реальном времени с использованием Raspberry Pi. Инструктор предоставляет три набора кода на Github для каждого из проектов, которые будут использоваться для пошагового построения моделей. Первый шаг — клонировать код и создать виртуальную среду, которая выглядит как отдельная комната в доме. Этот раздел также содержит полезные советы по выполнению руководства, такие как просмотр каждого шага перед тем, как двигаться дальше, делать заметки и при необходимости обращаться за помощью через предоставленный сервер Discord.

  • 00:15:00 В этом разделе видео инструктор объясняет важность использования виртуальной среды при работе с моделями обнаружения объектов TensorFlow. Он описывает это как создание новой комнаты в доме, где установлены все зависимости обнаружения объектов, чтобы гарантировать, что они не конфликтуют с ранее установленными библиотеками. Затем инструктор рассказывает о зависимостях, необходимых для работы с TensorFlow, включая инструменты сборки Visual C++, а также CUDA и CUDNN для ускорения на основе графического процессора. Он объясняет, что эти библиотеки необходимы для более быстрого обучения моделей обнаружения объектов, и показывает, как их загрузить и установить. В целом, этот раздел обеспечивает необходимую основу, необходимую для настройки среды разработки для создания моделей обнаружения объектов TensorFlow.

  • 00:20:00 В этом разделе видеоурока инструктор обсуждает необходимые требования для установки TensorFlow Object Detection, в том числе необходимые версии Python, компилятора GCC, Bazel, CUDA и cuDNN. Инструктор подчеркивает, что соответствие версий TensorFlow, CUDA и cuDNN необходимо для использования графических процессоров во время обучения. Они предоставляют ссылки на руководства по установке для Windows и Linux/macOS и советуют зрителям проверить свою версию TensorFlow и получить соответствующие версии CUDA и cuDNN. Кроме того, инструктор упоминает, что они создали руководство по ошибкам для распространенных проблем, возникающих во время установки или при запуске блокнота обнаружения объектов. Руководство включает решения для различных ошибок, и его можно найти по предоставленной ссылке на репозиторий GitHub.

  • 00:25:00 В этом разделе инструктор показывает, как настроить виртуальную среду для обнаружения объектов TensorFlow с помощью Python. Он указывает шаги, которые необходимо выполнить для создания среды, включая клонирование репозитория с необходимым кодом и зависимостями, создание виртуальной среды с использованием пакета Python venv и активацию среды. Создание виртуальной среды похоже на создание новой комнаты в доме, где можно изолировать библиотеки и зависимости для работы над проектами обнаружения объектов TensorFlow в изолированной среде.

  • 00:30:00 В этом разделе создатель видео обсуждает процесс создания виртуальной среды для обнаружения объектов TensorFlow (TFOD), чтобы разделить обучение, приложение и код Raspberry Pi. Создатель видео выполняет шаги по активации виртуальной среды, включая запуск команды на компьютере с Windows для активации среды. Есть демонстрация обновления установщика pip и последующей установки TensorFlow. Преимущество этих обновлений заключается в возможности видеть установки в реальном времени внутри папки пакетов сайта. Отмечается, что иногда для установки TensorFlow требуется несколько попыток, а у создателя видео есть скрипт проверки, чтобы убедиться, что все установлено правильно.

  • 00:35:00 В этом разделе спикер объясняет, как установить необходимые пакеты и настроить виртуальную среду с Jupyter Notebook с помощью iPy Kernel. Они также содержат инструкции по установке Anaconda Python и Jupyter Notebook для новичков. Затем они объясняют, как установить iPy Kernel и связать его с Jupyter Notebook, чтобы обеспечить более эффективную рабочую нагрузку по обработке данных. Наконец, спикер показывает, как проверить виртуальную среду и начать собирать и маркировать изображения в рамках следующего шага к построению модели обнаружения объектов TensorFlow.

  • 00:40:00 В этом разделе инструктор подчеркивает важность сбора и маркировки хороших изображений при обучении моделей обнаружения объектов. Чтобы продемонстрировать это, он использует блокнот Jupyter для сбора изображений с веб-камеры и библиотеку LabelImg для маркировки изображений. Преподаватель делится рекомендациями, которые следует учитывать при маркировке, например, как можно плотнее наклеивайте этикетки и добавляйте изображения объектов под разными углами и в разных условиях освещения. Еще одна важная рекомендация — начинать с 10–20 изображений каждого класса, но инструктор начинает с меньшего количества и показывает, как добавить дополнительные изображения для переобучения модели, если производительность неоптимальна. Наконец, инструктор объясняет, что предоставление модели различных изображений без зеленого экрана позади объекта сделает ее более обобщенной и способной лучше обнаруживать объекты.

  • 00:45:00 В этом разделе инструктор проводит зрителей через компонент коллекции изображений в учебном пособии по обнаружению объектов TensorFlow. Учебное пособие начинается с установки OpenCV, популярной библиотеки компьютерного зрения, используемой для доступа к веб-камере и сбора изображений. Преподаватель подчеркивает важность установки зависимостей в виртуальной среде для сохранения контроля и обеспечения бесперебойной работы. Затем код импортирует необходимые зависимости, включая UUID, ОС и время, которые будут использоваться для обеспечения соответствия различным путям к файлам и захвата изображений под разными углами. Затем в учебнике определяются различные метки для сбора и объясняется, что метки можно изменить в зависимости от желаемых объектов для обнаружения. Метки хранятся в списке, и инструктор объясняет, что количество изображений, собранных для каждой метки, определяется переменной «количество изображений».

  • 00:50:00 В этом разделе инструктор обсуждает настройку структуры папок для обнаружения объектов, важность наличия большого количества изображений при начале работы и способы захвата изображений с помощью веб-камеры или другого устройства захвата. Структура папок создается с использованием определенного пути к файлу, которому следует следовать на протяжении всего руководства. Код перебирает все этикетки, подключается к веб-камере и захватывает изображения для каждой этикетки. Инструктор подчеркивает важность правильного указания номера устройства видеозахвата для веб-камеры, так как при неправильном указании могут возникнуть ошибки.

  • 00:55:00 В этом разделе инструктор объясняет код для сбора изображений для обнаружения объектов. Код перебирает метки и захватывает кадры с помощью веб-камеры. Он создает новое изображение и помещает его в соответствующую папку с этикеткой с уникальным именем-идентификатором. Команда cv2.iamwrite используется для записи изображения в файл и отображения его на экране. Код также позволяет пользователю нажать клавишу q, чтобы выйти в любой момент, и закрывает все, когда закончит. Преподаватель подчеркивает, что важно делать снимки в разных положениях для построения обобщенной модели.

Часть 2

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

  • 01:05:00 В этом разделе инструктор представляет пакет Label Image, который будет использоваться для маркировки изображений. Пользователи могут перейти в репозиторий Github, чтобы проверить пакет. После этого инструктор показывает, как установить необходимые зависимости, pi qt5 и lxml, а также создать новую папку с именем tensorflow и пометить изображение для сохранения пакета. Затем инструктор демонстрирует, как клонировать репозиторий Github и установить пакет образа этикетки, выполнив определенные команды. Наконец, инструктор открывает приложение для маркировки изображений и готовится к маркировке изображений.

  • 01:10:00 В этом разделе инструктор демонстрирует процесс маркировки изображений для обнаружения объектов с помощью программного обеспечения OpenCV Labeling. Процесс включает в себя открытие определенного каталога в программном обеспечении и выбор изображений для маркировки. Инструктор советует быть как можно точнее с метками обнаружения и следить за тем, чтобы имена меток соответствовали именам в аннотациях и на этапе обучения. Кроме того, инструктор предлагает зрителям подумать о различных приложениях обнаружения объектов и опробовать их, используя один и тот же процесс определения меток, сбора изображений и их маркировки. Также подчеркивается важность обеспечения наличия соответствующих аннотаций для каждого изображения.

  • 01:15:00 В этом разделе инструктор объясняет, как пометить изображение, создав файл аннотации. Файл аннотаций представляет собой XML-файл, описывающий расположение объекта на изображении. Инструктор покажет, как пометить изображение несколькими объектами, и объяснит, как правильно сохранить аннотации. Процесс маркировки изображений можно масштабировать за счет аутсорсинга или использования новых инструментов, которые автоматизируют процесс маркировки с использованием облегченных моделей обнаружения объектов.

  • 01:20:00 В этом разделе видеоинструктор показывает, как маркировать изображения с помощью метки изображения и как создать прототип, чтобы убедиться, что вы используете правильный метод, прежде чем создавать огромную модель обнаружения объектов с тысячами изображений. Он рекомендует начать с маркировки 10-25 изображений, чтобы сделать их очень быстрыми, и использовать правильные датчики для получения правильных уровней данных. Инструктор также объясняет важность разделения изображений на разделы для обучения и тестирования, чтобы обучить модель на сегменте изображений и протестировать ее на наборе изображений, которые она никогда раньше не видела. Он создает две новые папки с именами train и test внутри папки с изображениями для хранения обучающих и тестовых изображений и аннотаций.

  • 01:25:00 В этом разделе мы узнаем, как подготовить данные изображения, которые мы собрали и пометили, для обучения нашей модели обнаружения объектов. Мы создаем две папки, training и testing, для хранения наших изображений и аннотаций, обязательно захватывая файлы изображений и аннотаций для каждого класса. Затем мы объясним, как преобразовать их в записи TensorFlow, которые будут использоваться для обучения. Мы также рассмотрим некоторые рекомендации по именованию и организации наших данных. Наконец, мы представляем зависимости, необходимые для обучения модели обнаружения объектов TensorFlow, и способы оценки нашей модели с использованием метрик оценки.

  • 01:30:00 В этом разделе спикер обсуждает метрики оценки, которые вы получаете после обучения вашей модели обнаружения объектов. Эти показатели включают в себя точность и среднюю точность (MAP), которая вычисляет долю правильных обнаружений. Они рассчитываются на основе количества истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных результатов. Спикер объясняет, что точность и полнота очень важны при оценке производительности модели. Кроме того, спикер упоминает, что выбор зоопарка моделей TensorFlow влияет на точность и скорость работы модели. Разные модели имеют разную архитектуру, что приводит к разным уровням точности и скорости, и практикующим специалистам необходимо выбрать подходящую модель для своего варианта использования.

  • 01:35:00 В этом разделе стенограммы обсуждаются компромиссы между скоростью и точностью модели при выборе архитектуры модели для обнаружения объектов TensorFlow. В видео представлены различные варианты моделей и соответствующие им частоты кадров, а также средние показатели точности. Докладчик отмечает, что одни архитектуры могут быть быстрыми и очень точными, а другие могут быть медленнее, но точнее. Также упоминаются преимущества использования API модели TensorFlow Update Detection, такие как использование методов предварительной и последующей обработки и увеличение изображения. Раздел завершается обсуждением того, как при желании обучить модель с использованием облачного экземпляра.

  • 01:40:00 В этом разделе инструктор объясняет настройку модели обнаружения объектов TensorFlow, которая включает настройку имени и URL-адреса предварительно обученной модели, а также таких переменных, как сценарий создания записи tf и имя карты меток. Также показана структура папок для модели с рабочей областью, содержащей папки для аннотаций, изображений, моделей и контрольных точек. Следующим шагом является загрузка моделей TensorFlow из зоопарка моделей TensorFlow и установка пакета TensorFlow Object Detection, который инструктор выполняет шаг за шагом, чтобы обеспечить успешную установку. Процесс включает в себя клонирование репозитория TensorFlow Object Detection и установку необходимых зависимостей.

  • 01:45:00 В этом разделе ведущий объясняет, как клонировать и установить API модели обнаружения объектов TensorFlow. API модели можно загрузить из сада моделей TensorFlow, в котором есть много документации и руководств с открытым исходным кодом. Затем докладчик демонстрирует, как перейти к папке исследования, которая содержит все необходимые файлы для использования API модели обнаружения объектов TensorFlow. После клонирования папки исследования докладчик объясняет, как установить протокол и другие необходимые компоненты, необходимые для успешной установки API модели обнаружения объектов TensorFlow. Наконец, докладчик показывает, как проверить установку, запустив сценарий проверки, чтобы проверить, успешно ли установлен TensorFlow Object Detection API.

  • 01:50:00 В этом разделе инструктор проходит процесс проверки и установки Tensorflow для обнаружения объектов. Он объясняет, что скрипт проверки используется для проверки правильности установки Tensorflow и что его можно запустить для проверки на наличие ошибок. Сценарий представляет собой стандартный сценарий обнаружения объектов Tensorflow, который указывает, установлен ли Tensorflow при запуске. Если Tensorflow установлен неправильно, инструктор предоставит рекомендации по его настройке, включая установку дополнительных пакетов, таких как matplotlib и yaml. Преподаватель уверяет зрителя, что если они столкнутся с ошибками, они смогут их погуглить, так как они часто встречаются и их легко исправить. Наконец, он заявляет, что успешное достижение знака «хорошо» в нижней части скрипта проверки означает, что Tensorflow был установлен правильно.

  • 01:55:00 В этом разделе видео рассказывается о процессе установки TensorFlow и необходимых пакетах для обнаружения объектов. Инструктор покажет, как установить TensorFlow, Matplotlib, Protobuf, Pillow и Pymel. Преподаватель рекомендует проверить процесс установки, так как он может отличаться в зависимости от вашей среды. В видео также показаны шаги по установке CUDA и CuDNN, которые необходимы, если вы хотите использовать GPU для обучения. Инструктор объясняет, как найти правильную версию CUDA и CuDNN, и проводит процесс установки. Наконец, инструктор демонстрирует, как успешно импортировать API обнаружения объектов в блокнот, перезапустив ядро.

Часть 3

  • 02:00:00 В этом разделе инструктор описывает процесс загрузки и установки Nvidia cuDNN, который требуется, если вы тренируетесь на GPU. Сначала вам нужно зарегистрировать бесплатную учетную запись разработчика Nvidia, затем выбрать загрузку cuDNN и войти в систему. Доступны две версии, и вам нужно загрузить версию, совместимую с вашей версией TensorFlow. Инструктор объясняет, как извлечь заархивированный файл и скопировать файлы cuDNN в соответствующие папки внутри места установки CUDA. После копирования файлов последний шаг — убедиться, что папка CUDA добавлена к вашему пути на компьютере с Windows.

  • 02:05:00 В этом разделе видео инструктор объясняет процесс установки TensorFlow и как проверить, правильно ли он работает. Затем видео переходит к процессу загрузки предварительно обученной модели обнаружения объектов из зоопарка моделей TensorFlow, которая будет использоваться для передачи обучения для обнаружения пользовательских объектов. Инструктор демонстрирует, как загрузить модель, и объясняет различные компоненты загруженных файлов. Наконец, создается карта меток для представления различных меток для обнаружения пользовательских объектов.

  • 02:10:00 В этом разделе инструктор объясняет создание карты меток и создание записей tf. Он подчеркивает важность правильной маркировки, поскольку файл карты меток будет использоваться впоследствии на протяжении всего процесса обучения. В видео рассказывается о создании поезда и тестовой записи, а также о том, как обновлять компоненты пути для модели, в частности контрольную точку точной настройки, путь карты меток и входной путь. Наконец, он подчеркивает актуальность файла конфигурации конвейера, который определяет архитектуру модели и должен быть настроен для конкретных моделей.

  • 02:15:00 В этом разделе видео инструктор объясняет, как настроить файл конфигурации для обучения модели. Файл конвейера копируется из папки предварительно обученных моделей, а затем конфигурация выполняется с помощью кода путем настройки всех различных путей к файлам вместе с количеством классов и настройки контрольной точки точной настройки, пути карты меток, входного пути и т. д. , После завершения настройки модель можно обучить, запустив сценарий обучения модели с необходимыми аргументами, такими как путь к файлу pipe.config, конфигурация конвейера и количество шагов обучения. Предлагается запустить команду в отдельной командной строке вне блокнота, чтобы увидеть ход обучения модели.

  • 02:20:00 В этом разделе инструктор устраняет ошибки, возникающие в процессе обучения обнаружению объектов. Он объясняет, что большинство ошибок устраняются путем установки правильной библиотеки или поиска решений в Интернете. Он также отмечает, что пользователи должны убедиться, что у них установлена правильная версия графического процессора TensorFlow, если они хотят использовать графический процессор. Затем инструктор проводит зрителей через процесс удаления и повторной установки библиотек для устранения конкретных ошибок, подчеркивая, что этот процесс может занять некоторое время, но он необходим для успешного обучения обнаружению объектов. В конечном итоге он показывает зрителям, как проверить, установлены ли правильные библиотеки, и как отслеживать ход тренировочного прогона.

  • 02:25:00 В этом разделе инструктор обсуждает процесс обучения модели и оценку показателей ее производительности. После начала обучения показатели потерь появляются после каждых 100 шагов, что указывает на правильность обучения модели. Генерируются выходные данные обучающей модели для 2000 шагов, указывающие на то, что модель была успешно обучена с итоговой потерей 0,188. Затем инструктор объясняет, как оценить модель с помощью библиотеки обнаружения объектов TensorFlow и запустить сценарий оценки, который генерирует показатели производительности для обученной модели. Затем средние показатели точности и отзыва можно просмотреть с помощью TensorBoard, интерактивного инструмента мониторинга для TensorFlow.

  • 02:30:00 В этом разделе инструктор помогает зрителям использовать Tensorboard для просмотра и отслеживания показателей во время обучения и оценки. Перейдя к папке train, они могут просмотреть показатели потерь с течением времени, а перейдя в папку eval, они могут увидеть показатели оценки, такие как средняя средняя точность, точность и полнота. Зрители также могут видеть производительность модели в реальном времени, просматривая изображения и правильно ли она классифицирует их, и они узнают, как экспортировать график после его замораживания.

  • 02:35:00 В этом разделе обучаемая модель загружается из контрольной точки и выполняется обнаружение объектов на изображении. Последнюю контрольную точку можно найти в папке пользовательской модели, которая содержит конвейер и все контрольные точки. После импорта последней контрольной точки можно выбрать изображение и выполнить обнаружение объекта с помощью функции обнаружения. Функция обнаружения также используется для обнаружения объектов в реальном времени с веб-камеры. Несмотря на обучение всего на 2000 шагов с небольшим количеством изображений, модель хорошо распознает различные жесты рук.

  • 02:40:00 В этом разделе инструктор демонстрирует работу модели обнаружения объектов на различных жестах рук, таких как большой палец вверх, большой палец вниз, длинная жизнь и двойная рука. Производительность модели зависит от жеста руки и расстояния от камеры, но ее можно настроить, добавив больше изображений в тренировочный набор. Затем раздел переходит к замораживанию и преобразованию модели путем создания замороженного графика и его экспорта в TensorFlow.js и TFLite. Преобразованную модель можно использовать для веб-приложения или для проекта Raspberry Pi. Конечный результат пользовательской модели аналогичен предварительно обученным моделям с контрольной точкой, сохраненными активами модели, переменными и конфигурацией конвейера.

  • 02:45:00 В этом разделе спикер обсуждает последнее преобразование, которое необходимо сделать, а именно преобразование в tf light. Это делается в два этапа: сначала график экспортируется в график tf lite, а затем он запускается с использованием конвертера tf lite для вывода точного вывода, необходимого для его использования. Спикер отмечает, что это сквозная модель, и что они заморозили граф, экспортировали его в tfjs и tf lite, таким образом завершив полное прохождение работы с API обнаружения объектов tensorflow. Докладчик также продолжает обсуждение настройки производительности и отмечает три ключевых момента, которые можно сделать для повышения производительности модели: добавление большего количества изображений низкоэффективного класса в набор обучающих данных, более длительное обучение модели и изменение архитектуры модели.

  • 02:50:00 В этом разделе видео ведущий демонстрирует, как улучшить производительность низкопроизводительных классов в модели обнаружения объектов, добавив более релевантные обучающие изображения. Вместо того, чтобы собирать изображения каждого класса в отдельности, ведущий собирает больше изображений поднятых и опущенных больших пальцев, что не очень хорошо работает с разными руками. Докладчик импортирует OpenCV и обновляет карту меток, прежде чем собирать изображения только с поднятыми и опущенными пальцами. Собранные изображения хранятся в рабочей области Tensorflow, где ведущий оценивает их и удаляет некачественные. Наконец, ведущий добавляет еще несколько изображений большого пальца вниз другой рукой, чтобы улучшить производительность модели.

  • 02:55:00 В этом разделе видео инструктор запускает код, чтобы захватить больше изображений для жестов большой палец вверх и большой палец вниз. После захвата изображений инструктор проверяет качество изображений и решает сохранить все изображения с большим пальцем вверх и удалить некоторые изображения с большим пальцем вниз, которые находятся за пределами экрана. Затем инструктор открывает инструмент LabelImg и снова маркирует новые изображения, обращая внимание на чувствительность к регистру в именах меток. Преподаватель упоминает, что этот шаг маркировки изображений является методом проб и ошибок, и можно оценить и увидеть, что делает модель более эффективной. Инструктор предлагает изучить инструменты автоматической маркировки для повышения эффективности, но советует обратить внимание на их производительность, чтобы избежать необходимости ручной настройки.

Часть 4

  • 03:00:00 В этом разделе инструктор демонстрирует, как быстро маркировать изображения, чтобы улучшить обучение модели обнаружения объектов TensorFlow. Он объясняет, что важно скопировать помеченные изображения как в обучающую, так и в тестовую папки, чтобы оценить точность модели. Затем он показывает, как обучить «настроенную» модель, изменив имя пользовательской модели в блокноте обучения и обнаружения, чтобы создать новую папку. Затем он обсуждает, как скопировать предварительно обученную конфигурацию конвейера в новую настроенную модель и внести обновления в конфигурацию конвейера. Наконец, он настраивает все необходимые пути, используя предоставленный код для создания новых файлов записей tf, необходимых для обучения.

  • 03:05:00 В этом разделе инструктор обновляет конфигурацию конвейера, которая определяет все пути карты меток для обучения с использованием стандартной конфигурации. Обновление конвейера — важный шаг, поскольку он открывает путь к запуску сценария обучения. Количество шагов обучения обновляется по сравнению с предыдущей конфигурацией до 3000, и запускается команда для создания обученной модели. После завершения этапов обучения эта модель оценивается и сравнивается с предыдущей моделью путем запуска кода на этапе 7. Метрики оценки показывают, что средняя точность увеличилась с 0,7 до 0,834, а обнаружение стало быстрее и точнее. Добавляя больше изображений, дополнительных меток и различных позиций, инструктор демонстрирует улучшение модели и создание более качественной модели обнаружения объектов. Наконец, загружается новая модель и запускается код для обнаружения в реальном времени, который очень быстро и точно обнаруживает объекты.

  • 03:10:00 В этом разделе инструктор обсуждает способы повышения производительности модели обнаружения объектов Tensorflow путем изменения архитектуры модели. Для этого пользователю необходимо обновить ссылку на предварительно обученную модель, которую он хочет использовать в блокноте обнаружения. Скопировав и вставив новую ссылку и имя, пользователь может затем загрузить новую предварительно обученную модель в папку своих предварительно обученных моделей. Однако инструктор подчеркивает, что более высокая производительность достигается за счет улучшения качества изображения, например, использования разных стилей изображений, изображений под разными углами и более длительных тренировок. Инструктор также показывает, как обучать модель в Google Colab, сжимая изображения и архивируя их перед импортом в блокнот для обучения и обнаружения в Colab.

  • 03:15:00 В этом разделе инструктор проводит зрителей через процесс загрузки изображений для использования в программе обнаружения объектов TensorFlow, а также клонирования репозитория моделей TensorFlow и установки программного обеспечения для обнаружения объектов TensorFlow. Вводится предварительно обученная модель и создается карта меток. Затем инструктор устанавливает пользовательскую конфигурацию в папке models/my_ssd_mobnet перед обучением модели. Зрителя предупреждают, что обнаружение объектов в реальном времени невозможно с помощью веб-камеры с помощью Colab, но можно сделать с помощью изображения. По мере того, как зритель шаг за шагом проходит через процесс, он может оценить свою модель, чтобы увидеть среднюю среднюю точность и среднюю полноту.

  • 03:20:00 В этом разделе видео инструктор демонстрирует, как обнаруживать объекты на изображении с помощью обученной модели. Загружается последняя контрольная точка и указывается имя образа для запуска скрипта обнаружения. Преподаватель подчеркивает, что изображение должно быть действительным и находиться в папке изображений. После запуска ячейки обученная модель обнаружения объектов идентифицирует объект на изображении. Далее инструктор объясняет, как архивировать и экспортировать файлы, и подчеркивает необходимость установки API обнаружения объектов при локальном запуске кода. Раздел завершается предварительным просмотром трех проектов, которые будут рассмотрены далее, включая использование микроскопа для обнаружения объектов, создание веб-приложения TensorFlow.js и определение тональности Raspberry Pi.

  • 03:25:00 В этом разделе инструктор начинает с объяснения первого проекта, в котором используется USB-микроскоп для обнаружения дефектов в небольших светодиодах. Микроскоп обрабатывается как любая другая камера, а видеопоток получается с использованием библиотеки OpenCV. Инструктор демонстрирует, как позиционировать и масштабировать микроскоп с помощью кода Python, и отображает видеопоток. Затем видеопоток используется для сбора обучающих изображений для обнаружения объектов. Цель этого проекта — обучить модель обнаруживать дефекты светодиодов и классифицировать их как изогнутые или не изогнутые.

  • 03:30:00 В этом разделе полного курса TensorFlow Object Detection с тремя проектами инструктор показывает, как использовать OpenCV для захвата изображений с веб-камеры или микроскопа. Он рассказывает о лучших методах освобождения устройства захвата и уничтожения любых окон OpenCV, включая запуск «cap.release» после закрытия любого веб-захвата cv2. Затем он демонстрирует, как настроить положение и фокус микроскопа для захвата изображений светодиодных выводов и как создать две новые папки для хранения изображений дефектных и исправных выводов. Наконец, он проверяет передачу изображения с веб-камеры, чтобы убедиться, что все работает должным образом.

  • 03:35:00 В этом разделе видео инструктор демонстрирует, как собирать изображения неисправного и исправного вывода для обнаружения объектов. Они размещают штифты и регулируют время ожидания между захватами изображений, а затем используют функцию сна для паузы между захватами. Инструктор также объясняет, как маркировать изображения, используя строку маркировки и расположение папки. Они призывают зрителей запрашивать разъяснения или оставлять отзывы в разделе комментариев или на сервере Discord.

  • 03:40:00 В этом разделе видео инструктор рассказывает о процессе маркировки изображений для обучения пользовательской модели обнаружения объектов с использованием TensorFlow. С помощью микроскопа инструктор делает снимки дефектных и исправных контактов и соответствующим образом маркирует их. Затем они копируют изображения в папки для обучения и тестирования перед настройкой конвейера обучения. Преподаватель объясняет, как они создадут новую папку для своей пользовательской модели обнаружения объектов и обновят карту меток, включив в нее новые метки. База кода, используемая в этом разделе, является достаточно универсальной и допускает множество настроек, а инструктор дает советы по настройке производительности.

  • 03:45:00 В этом разделе руководства основное внимание уделяется созданию записей TensorFlow, которые позволяют обучать модель. Обсуждаются необходимые ячейки для загрузки предварительно обученных моделей и создания карт меток, но основное внимание уделяется созданию записей TensorFLow, которые позволят обучать модель. После создания записей TensorFlow модель обновляется новыми классами, а обновленная конфигурация сохраняется. Модель обучается на 2000 шагов, и новая модель тестируется на обнаружение дефектных и исправных контактов. Блокнот очерчен, и пользователь направляется к определенным ячейкам, которые позволяют развивать эту модель.

  • 03:50:00 В этом разделе инструктор обновляет изображение, чтобы обнаружить дефектный и исправный штифт. Система успешно обнаруживает оба контакта с высокой степенью достоверности. Однако инструктор замечает, что система плохо работает с неисправным штифтом в определенном положении, что указывает на компромисс в настройке. Инструктор показывает, что кадр обнаружения имеет параметры, которые можно изменить для определения уровня точности обнаружения. Снижая минимальный порог оценки, система может достаточно хорошо обнаруживать дефектный штифт, но за счет обнаружения многих других вещей как дефектных. Инструктор тестирует систему с помощью булавок разного цвета, включая тот, на котором не обучались, и под углом, демонстрируя надежность системы.

  • 03:55:00 В этом разделе инструктор демонстрирует результаты первого проекта с использованием микроскопа в качестве метода обнаружения объектов. Он указывает на обнаруженные штифты и на то, как они классифицируются как дефектные или исправные, путем изменения углов и положения штифтов. Он резюмирует процесс первого проекта, который включает захват и маркировку изображений, настройку папки микроскопа и обучение модели. Следующий проект посвящен созданию веб-приложения для определения направления объекта. Это включает в себя объединение кода из курса TensorFlow Object Detection с репозиторием приложения TensorFlow Object Detection Github. Цель состоит в том, чтобы обнаружить движение вверх-вниз-влево-вправо, которое в будущем можно развернуть как веб-сайт.

Часть 5

  • 04:00:00 В этом разделе видео инструктор объясняет, как устанавливать и сбрасывать метки для обнаружения объектов Tensorflow. Вместо определения меток, таких как «большой палец вверх» или «вниз», или дефектных и исправных контактов, они демонстрируют, как определять направленные движения, такие как влево, вправо, вверх и вниз. Затем они показывают, как создавать папки для разных направлений и собирать изображения для обучения. Инструктор также объясняет, как маркировать изображения с помощью LabelImg, уделяя внимание случаям изображения, и предлагает настроить производительность в случае тусклых результатов. Наконец, они переходят к демонстрации того, как маркировать изображения в правильном направлении.

  • 04:05:00 В этом разделе видео инструктор демонстрирует, как маркировать изображения для использования в модели обнаружения объектов. Для каждого объекта/класса используется только пять изображений, но пользователь может настроить это число по своему усмотрению. Преподаватель сообщает, что это повторяющийся процесс, и можно экспериментировать с разным количеством изображений. После того, как изображения помечены, они сортируются по папкам для обучения и тестирования с разделением 80/20 для каждого изображения/класса. Когда папки настроены, инструктор меняет имя папки и создает новый путь к файлу под названием «направления». Наконец, инструктор отмечает, что виртуальная среда уже настроена и никаких дополнительных действий выполнять не нужно.

  • 04:10:00 В этом разделе карта меток обновляется новыми метками для «слева», «справа», «вверху» и «внизу», и каждой из них присваиваются уникальные идентификаторы. Затем запускаются аннотации для обновления карты меток и создания необходимых файлов обучения и тестирования tfrecord. Затем модель обучается с помощью команды для создания обучающего сценария, и потери составляют 0,299. Контрольная точка 3 восстанавливается для импорта зависимостей для обнаружения в реальном времени, а минимальный порог оценки устанавливается равным 90. Наконец, веб-камера активируется для создания обнаружений в реальном времени для модели обнаружения объектов.

  • 04:15:00 В этом разделе инструктор показывает, как оценить модель и повысить ее точность, добавив больше изображений конкретных классов, которые не работают хорошо. Он демонстрирует это, указывая
    в разные стороны, используя обе руки и наблюдая за тем, как работает модель. Затем он замораживает график, экспортирует его и конвертирует в tensorflow.js. Он также объясняет, как загрузить модель в IBM Cloud Object Store, и выполняет шаги, доступные в репозитории github. Затем инструктор клонирует репозиторий, открывает новую командную строку и показывает, как перейти к нужным папкам.

  • 04:20:00 В этом разделе видео инструктор дает пошаговое руководство по подготовке среды разработки для использования обнаружения объектов TensorFlow для распознавания изображений. Сначала инструктор покажет, как перейти к нужным папкам и клонировать репозиторий обнаружения объектов TensorFlow. Затем инструктор покажет, как установить Node.js и зависимости для репозитория. Наконец, инструктор демонстрирует, как создать новую корзину облачного хранилища объектов в IBM Cloud и как назвать ее. Этот процесс необходим для использования веб-интерфейса пользователя в последующих разделах видео.

  • 04:25:00 В этом разделе инструктор переходит к пятому шагу руководства, который заключается в создании корзины в IBM Cloud Object Storage и загрузке в нее файлов model.json и .bin. Затем он включает политику общего доступа, разрешающую доступ к модели из любого места, и показывает, как получить URL-адрес файла model.json для последующего использования в приложении. Затем он описывает процесс включения общего доступа к ресурсам между источниками (CORS), запуская команды CLI после установки интерфейса командной строки IBM Cloud Object Storage.

  • 04:30:00 В этом разделе видео демонстрируется, как установить IBM Cloud CLI и CLI IBM Cloud Object Storage через интерфейс командной строки, включив совместное использование ресурсов между источниками (CORS), что позволяет веб-приложению получить доступ к URL-адресу. откуда-то еще. Эта команда также устанавливает IBM Cloud Storage Client и настраивает его с помощью файла конфигурации. В видео показано, как подставить имя корзины пользователя в команду, которая помещает политику причин в корневую папку корзины. Наконец, в видео объясняется, что политика причины содержится в файле конфигурации облака и является частью клонированного репозитория, а это означает, что создание файла не требуется.

  • 04:35:00 В этом разделе инструктор объясняет, как обновить файлы, необходимые для запуска веб-приложения TensorFlow.js. Шаги включают настройку учетных данных Google Cloud Storage, обновление URL-адреса модели в app.js, обновление карты меток в tools.js и запуск приложения с помощью npm start. Преподаватель также объясняет, как отладить приложение, если оно не работает, в том числе изменить показатель достоверности и проверить порядок объектов в массиве результатов обнаружения. В целом, эти шаги позволяют пользователям настраивать веб-приложение в соответствии со своим конкретным вариантом использования и обеспечивать его правильную работу.

  • 04:40:00 В этом разделе видео показывает, как определить, где находятся объекты, и как манипулировать результирующим массивом. Изучив код, пользователь может определить, что результирующий массив содержит пять значений, и каждый массив имеет разные классы, доступные для конкретного приложения. Видео далее направляет пользователя о том, как правильно использовать каждый массив объектов, такой как объект 3, который представляет собой классы блоков без постобработки, представленные очень низкими числами. Затем в видео показано, как изменить показатель достоверности и значения оценок, а также настроить значение поля, что пользователь может быстро сделать, изменив значения массива полей.

  • 04:45:00 В этом разделе видео завершает второй проект и переходит к третьему проекту, который включает запуск моделей обнаружения объектов на Raspberry Pi. Спикер отмечает, что запуск моделей обнаружения объектов на Raspberry Pi отличается от предыдущих двух проектов из-за отсутствия GPU, а потому они специально конвертируют модель в формат Tensorflow lite. Они будут собирать изображения счастливых и грустных лиц и обучать свою модель, используя тот же процесс, что и раньше. Тем не менее, они будут использовать Raspberry Pi для этого проекта и будут использовать удаленный рабочий стол для обнаружения. Видео заканчивается упоминанием возможности запуска нескольких разных моделей на разных устройствах и призывает зрителей поделиться своими идеями по этой теме.

  • 04:50:00 В этом разделе видео инструктор демонстрирует, как собирать и маркировать изображения для детектора настроений, который распознает счастливые и грустные лица. Процесс включает удаление существующих изображений, создание путей для новых изображений, сбор пяти изображений каждой эмоции, маркировку изображений и сохранение каждого объекта. Преподаватель напоминает зрителям, что учет регистра имеет решающее значение при маркировке и что для этого упражнения не нужны зеленые экраны. Кроме того, инструктор отмечает, что пользователи всегда могут вернуться в каталог изображений, чтобы обновить метку изображения.

  • 04:55:00 В этом разделе инструктор показывает, как организовать и переместить собранные изображения и аннотации в папки для обучения и тестирования. Они демонстрируют, как создать новую пользовательскую модель и пометить собранные изображения как счастливые и грустные, обновив карту меток. Затем они создают записи tf и копируют конфигурацию предварительно обученной модели в папку пользовательской модели. После обновления конфига они обучают модель с помощью сгенерированной команды, которая запускается в виртуальной среде, и ждут завершения процесса.

Часть 6

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

  • 05:05:00 В этом разделе инструктор объясняет шаги, необходимые для построения модели обнаружения Raspberry Pi с использованием обнаружения объектов TensorFlow. Первый шаг — создать файлы TfLite, пройдя курс обнаружения объектов TensorFlow. Затем пользователи должны клонировать репозиторий обнаружения Raspberry Pi, загрузить его на свой ПК или клонировать с Raspberry Pi. Как только это будет сделано, пользователи должны установить необходимые зависимости, скопировать свою преобразованную модель и запустить ее, используя существующую модель lite.tf lite. Инструктор также демонстрирует, как подключить удаленный рабочий стол к Raspberry Pi с помощью xrdp, что упрощает процесс.

  • 05:10:00 В этом разделе инструктор описывает процесс установки всех необходимых зависимостей для работы с API обнаружения объектов TensorFlow на Raspberry Pi. Инструктор демонстрирует, как установить OpenCV Python, а также несколько других зависимостей, необходимых для работы OpenCV на Raspberry Pi. После этого инструктор устанавливает среду выполнения TensorFlow Lite, которая необходима для запуска моделей TensorFlow Lite на Raspberry Pi. После установки всех зависимостей они запускают модель обнаружения объектов на Raspberry Pi, чтобы показать, как она работает. Наконец, инструктор объясняет, как добавить пользовательскую модель и метки в систему.

  • 05:15:00 В этом разделе инструктор обсуждает настраиваемое обнаружение объектов и способы настройки порога обнаружения для получения лучших результатов. Обнаружение настраиваемого объекта включает две метки; счастливый и грустный. Преподаватель регулирует порядок меток так, чтобы первый объект был счастливым, а второй — грустным. Запустив пользовательскую модель, она не обнаруживает никаких объектов, и инструктор решает снизить порог обнаружения до 20 %. После повторного запуска команды модель обнаруживает объекты; один большой грустный и счастливый объект. Инструктор подчеркивает необходимость обучения модели с использованием большего количества изображений для получения более высоких результатов производительности. Преподаватель выполняет дополнительную настройку производительности, добавляя больше изображений выступающих классов и обучая модель дольше.

  • 05:20:00 В этом разделе спикер объясняет, как он улучшил производительность своей модели анализа настроений. Во-первых, он добавил дополнительные изображения самого себя в разных ракурсах, что увеличивает шансы модели на хорошее обобщение. Во-вторых, он обучил свою модель еще на 5600 шагов, что дало ему совершенно новую модель с большей контрольной точкой индекса. Затем он пошел и преобразовал эту новую модель в замороженный график tf-lite и перенес его в Raspberry Pi, который он использовал, чтобы определить, счастлив он или нет. Спикер демонстрирует, что поднятие или опускание зеленого экрана не влияло на производительность его модели, и она могла правильно определять, когда он был счастлив или грустен. Докладчик подчеркивает силу настройки производительности и то, как ее можно использовать для повышения точности модели.
 

Автоматическое распознавание номерных знаков с использованием Tensorflow и EasyOCR Полный курс за 2 часа | питон

Jupyter Notebook: https://github.com/nicknochnack/RealTimeAutomaticNumberPlateRecognition

Код: https://github.com/nicknochnack/TFODCourse



Автоматическое распознавание номерных знаков с использованием Tensorflow и EasyOCR Полный курс за 2 часа | питон

Видео на YouTube под названием «Автоматическое распознавание номерных знаков с использованием Tensorflow и полного курса EasyOCR за 2 часа | Python» содержит подробное руководство по созданию точной и эффективной системы автоматического распознавания номерных знаков (ANPR) с использованием Tensorflow и EasyOCR. Система ANPR использует двухкомпонентную систему: TensorFlow используется для обнаружения интересующей области номерного знака, а EasyOCR извлекает текст из обнаруженной области. Видео охватывает целый ряд тем, от настройки виртуальных сред и установки необходимых зависимостей до подготовки данных для обучения и устранения ошибок, которые могут возникнуть во время обучения. В целом, зрители могут получить подробное представление о том, как построить систему распознавания номеров производственного уровня с возможностями обнаружения изображений в реальном времени или стандартными возможностями.

Учебник YouTube по автоматическому распознаванию номерных знаков (ANPR) с TensorFlow и EasyOCR рассказывает, как точно определять номерные знаки с помощью обнаружения объектов и как извлекать номерные знаки с помощью OCR. Преподаватель обсуждает, как фильтровать текст по размеру и координатам, чтобы извлечь из таблички только нужную информацию. Они демонстрируют, как распределять ресурсы графического процессора и ограничивать потребление памяти для TensorFlow, извлекать оценки изображений, классы и блоки, которые проходят порог обнаружения, и применять распознавание символов с помощью EasyOCR. Кроме того, в видео рассказывается, как сохранить результаты вывода в файл CSV и путь к папке как для результатов в реальном времени, так и для изображений. Спикер подчеркивает, что код доступен для зрителей, и призывает их обращаться за помощью и делиться своими отзывами.

  • 00:00:00 система OCR или оптическое распознавание символов. Этот шаг включает в себя использование библиотеки EasyOCR для извлечения текста из обнаруженного фида номерных знаков, что позволяет нам читать и анализировать текст с номерных знаков в режиме реального времени или на стандартных изображениях. Кроме того, курс также охватывает создание более совершенной системы, которая имитирует готовые системы AMPR производственного уровня, сохраняя и регистрируя ранее обнаруженные пластины и их интересующие области. В целом, курс предлагает исчерпывающее руководство по созданию точной и эффективной системы автоматического распознавания номерных знаков с использованием Tensorflow и EasyOCR.

  • 00:05:00 В этом разделе ведущий объясняет двухкомпонентную систему, используемую для автоматического распознавания номерных знаков. В первой части используется модель обнаружения объектов TensorFlow для обнаружения интересующей области, которая является номерным знаком. Вторая часть использует EasyOCR для извлечения текста из обнаруженной области. Докладчик демонстрирует, как установить необходимые компоненты, включая TensorFlow и EasyOCR, и предоставляет ссылку на репозиторий GitHub, содержащий необходимые файлы. Ведущий объясняет, как клонировать репозиторий, и показывает содержимое созданной в результате папки. Папка содержит файл блокнота, который используется для обучения и определения номерного знака.

  • 00:10:00 В этом разделе видео ведущий выполняет шаги по настройке виртуальной среды и установке необходимых зависимостей для запуска автоматического распознавания номерных знаков (ANPR) с использованием TensorFlow и EasyOCR. Ведущий сначала клонирует репозиторий ANPR и создает виртуальную среду с помощью Python. Затем он активирует виртуальную среду и устанавливает важные зависимости, такие как ядро ipi, и обновляет pip. С помощью этих шагов он демонстрирует, как связать виртуальную среду с ноутбуком Jupyter, чтобы использовать все возможности ANPR.

  • 00:15:00 В этом разделе инструктор знакомит зрителя с процессом связывания виртуальной среды с ноутбуком Jupyter, используя в качестве примера среду «ampr sys». Преподаватель отмечает, что это важно, потому что часто люди, работающие с виртуальными средами, устанавливают все в свою среду, но когда они заходят внутрь своего Jupyter Notebook, он все еще говорит, что этого там нет. После того, как виртуальная среда связана с Jupyter Notebook, инструктор проводит зрителя через процесс установки API обнаружения объектов TensorFlow и настройки структуры папок, чтобы можно было выполнять обнаружение объектов с помощью TensorFlow.

  • 00:20:00 В этом разделе инструктор начинает с объяснения концепции трансферного обучения, при котором уже существующая передовая модель может быть настроена для конкретного варианта использования, например для обнаружения номерных знаков. Затем инструктор переходит к загрузке предварительно обученных моделей из зоопарка моделей TensorFlow и установке API обнаружения объектов TensorFlow, запустив несколько ячеек кода. API и его компоненты, такие как папка обнаружения объектов, клонируются в репозиторий сада модели TensorFlow, после чего инициируется установка модели обнаружения объектов TensorFlow. Установка включает в себя несколько зависимостей и протокол, систему буферов протоколов, и может занять некоторое время.

  • 00:25:00 В этом разделе инструктор рассказывает об установке TensorFlow и его версии для графического процессора. Они устанавливают TensorFlow 2.4.1 и TensorFlow GPU 2.4.1, которые совместимы только с графическими процессорами Nvidia. Они показывают, как проверить успешность установки, запустив сценарий проверки, который в конце должен вывести «ОК». Инструктор также демонстрирует, как устранить любые ошибки «модуль не найден», которые могут возникнуть в процессе установки, например при установке библиотек Matplotlib и Pillow с помощью pip. Сценарий проверки гарантирует, что все необходимые зависимости установлены, прежде чем перейти к следующему разделу.

  • 00:30:00 В этом разделе видео ведущий проходит установку различных модулей, необходимых для построения модели обнаружения объектов, в частности, для распознавания автомобильных номеров. Они сталкиваются с несколькими ошибками в процессе установки, но рассказывают, как их устранить. После того, как все необходимые модули, включая TensorFlow Object Detection и EasyOCR, установлены, ведущий переходит к следующему этапу работы с данными и представляет набор данных Kaggle, содержащий изображения автомобилей и аннотации к номерным знакам. Они демонстрируют, как загрузить и подготовить набор данных для использования в модели.

  • 00:35:00 В этом разделе инструктор обсуждает, как загрузить необходимые данные для автоматического распознавания номерных знаков (ANPR) и организовать их в учебные и тестовые наборы для обнаружения объектов. Данные, содержащие аннотации и соответствующие изображения, загружаются с Kaggle и распаковываются в папку ANPR. В папке изображений создаются две новые папки, одна для обучения и одна для тестирования, а загруженные изображения копируются в папку поезда. Аннотации также разделены на наборы для обучения и тестирования, при этом аннотации для обучения помещаются в папку поезда вместе с соответствующими изображениями. Назначение этих отдельных наборов — обучить модель обнаружения объектов на одном наборе данных и протестировать ее на независимом наборе для оценки ее производительности.

  • 00:40:00 В этом разделе видео обсуждается процесс подготовки данных для обучения модели распознавания номерных знаков. Ведущий объясняет, что они загрузили изображения номерных знаков из Kaggle и скопировали соответствующие аннотации в две новые папки, «train» и «test», в своем рабочем пространстве TensorFlow. Следующим шагом является обучение модели обнаружения объектов, которое включает в себя обновление меток, создание записей tf, подготовку конфигурации и, наконец, обучение модели. Ведущий использует «карту меток», чтобы определить одну метку, которую он будет использовать, «лицензия», а затем создает запись tf, которая является форматом, требуемым моделью обнаружения объектов. Процесс описывается как простой, и предоставляется сценарий для создания записи tf.

  • 00:45:00 В этом разделе видео рассказывается, как подготовить данные для обучения с помощью TensorFlow и EasyOCR. Обсуждаемый здесь сценарий преобразует необработанные данные, включая изображения и аннотации, в формат записи tf, но его необходимо обновить из-за немного другого формата аннотаций в наборе данных Kaggle. В видео показано, как исправить ошибки, возникающие из-за этого несоответствия, включая установку отсутствующих модулей, изменение индекса для подбора правильных метрик ограничительной рамки и копирование предварительно обученной конфигурации модели в папку для обучения.

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

  • 00:55:00 В этом разделе курса инструктор устраняет ошибки, которые могут возникнуть во время обучения. Он демонстрирует, как решать конкретные проблемы, такие как ошибка значения, связанная с изменением размера массива numpy dot nd, ошибка модуля не найдена для cv2, ошибка модуля не найдена для надстроек tensorflow и ошибка модуля не найдена для gin. Инструктор объясняет, что такие ошибки не редкость, и для их решения необходимо установить необходимые библиотеки. После обучения модели инструктор показывает, как читать показатели потерь и как найти самую последнюю контрольную точку обученной модели.

  • 01:00:00 В этом разделе видеоруководства по автоматическому распознаванию номерных знаков с использованием Tensorflow и EasyOCR инструктор рассказывает, как распознавать номерные знаки на изображениях или в режиме реального времени с использованием той же модели. Изменяя имя файла изображения, модель может точно обнаруживать и классифицировать различные типы пластин. Было обнаружено, что этот метод работает намного лучше благодаря обнаружению объектов, чем использование традиционных методов компьютерного зрения, поскольку форматы пластин могут различаться. Модель также может обнаруживать номерные знаки в прямом видеопотоке или поднося телефон к номерному знаку автомобиля. Преподаватель подчеркивает, что этот метод эффективен и является хорошим началом для создания детектора номерных знаков, а следующим шагом будет применение компонентов OCR для извлечения значимых данных из изображения.

  • 01:05:00 В этом разделе видеоурока рассказывается, как использовать библиотеку с открытым исходным кодом EasyOCR для обнаружения и извлечения текста из изображения для идентификации номерного знака. В руководстве отмечается, что, хотя доступны более точные модели OCR, EasyOCR используется, поскольку он работает на PyTorch, требуя, чтобы оставить немного места для графического процессора, чтобы он мог запускать его вместе с TensorFlow, не потребляя всю память графического процессора. В этом руководстве показано, как распределять ресурсы графического процессора и ограничивать потребление памяти для TensorFlow, чтобы обеспечить бесперебойную работу EasyOCR.

  • 01:10:00 В этом разделе спикер объясняет, как загрузить необходимые пути к файлам и метки для автоматического распознавания номерных знаков (ANPR) с помощью TensorFlow и EasyOCR, а также как установить EasyOCR и PyTorch с ускорением CUDA. Они демонстрируют, что после загрузки примера изображения и выполнения ANPR номерные знаки и оценки обнаружения сохраняются в переменной под названием «обнаружения», которые затем используются для применения оптического распознавания символов с помощью EasyOCR. Порог обнаружения установлен на уровне 0,7, что позволяет обрабатывать только обнаружения с оценкой выше 0,7.

  • 01:15:00 В этом разделе инструктор объясняет, как извлекать оценки изображений, классы и поля, которые проходят порог обнаружения, используя несколько строк кода. Они демонстрируют, как перебирать каждое значение в массиве оценок обнаружения и возвращать только те оценки, которые превышают пороговое значение. Они также применяют фильтры к полям и классам, чтобы убедиться, что они имеют правильный размер и формат для веб-камеры. Наконец, они берут ширину и высоту изображения, пересчитывают координаты блока и применяют фильтрацию к изображению, чтобы определить интересующую область.

  • 01:20:00 В этом разделе видео демонстрируется, как выделить интересующую область из изображения и применить оптическое распознавание символов (OCR) для извлечения результатов планшета. Во-первых, параметры ширины и высоты изображения получаются с помощью image.shape. Чтобы извлечь ROI, прокрутите каждое поле в переменной box, которая представляет координаты обнаружения, и отфильтруйте интересующую область. Наконец, OCR применяется к ROI с помощью EasyOCR, и результаты распечатываются на консоли. Видео знакомит зрителя с процессом настройки считывателя EasyOCR, передачи языковых параметров и анализа изображения для извлечения результатов планшета.

  • 01:25:00 В этом разделе ведущий обсуждает, как эффективно извлечь печатную форму или текст с нее с помощью OCR (оптического распознавания символов). Они показывают пример изображения, где помимо номерного знака есть дополнительный текст, который может сбить с толку считывателя OCR. Чтобы решить эту проблему, ведущий предлагает фильтровать результаты по размеру и координатам. Они демонстрируют, как написать функцию для этой фильтрации и применить ее к изображению, чтобы получить соответствующий текст. Результаты показывают, что считыватель OCR может точно извлечь номерной знак, хотя в модели OCR еще есть возможности для улучшения.

  • 01:30:00 В этом разделе спикер представляет новую функцию под названием «фильтровать текст». Эта функция принимает три аргумента: регион, результат распознавания и пороговое значение региона. Область представляет собой изображение, результат распознавания представляет собой текст, извлеченный из EasyOCR, а пороговое значение области представляет собой пороговое значение размера для обнаружения областей номерного знака. Функция перебирает результаты OCR, извлекает длину и ширину каждого из них, умножает их, а затем сравнивает с порогом области. Если он проходит этот фильтр, он считается текстом, а его область сохраняется в переменной с именем «plate». Докладчик также объясняет некоторые фрагменты кода, которые вычисляют размер области и иллюстрируют работу фильтра.

  • 01:35:00 В этом разделе автор показывает, как эффективно отфильтровывать текст на изображениях с помощью механизма OCR. Алгоритм filterText позволит пользователю указать порог для региона, который будет отфильтровывать только те текстовые блоки, которые соответствуют этому порогу или превышают его. Они используют эту функцию для извлечения необходимых компонентов, а не для извлечения всего с тарелки. Они также создали функцию OCR_it, которая объединяет фильтр OCR и компоненты OCR, и ее можно применять к любому изображению после прохождения изображения и обнаружения с соответствующими порогами.

  • 01:40:00 В этом разделе инструктор проверяет свой метод оптического распознавания символов (OCR), пропуская изображение через свою функцию «ocr_it» с заданными пороговыми значениями обнаружения и области. Метод способен точно выделить номерной знак и его область на изображении. Затем они демонстрируют применение метода OCR в режиме реального времени для обнаружения номерных знаков с использованием блока try-except и нового кода, который вызывает функцию OCR для каждого действительного обнаружения. Инструктор тестирует обнаружение в реальном времени на своем телефоне и показывает, что оно точно определяет и извлекает текст номерного знака, хотя результаты не идеальны и требуют некоторой настройки.

  • 01:45:00 В этом разделе видео инструктор объясняет, как сохранить результаты вывода разработанной им системы OCR. Они создают новую функцию под названием «save_results», которая принимает текст, регион, имя файла и папку в качестве входных параметров. Затем они используют библиотеку uuid для создания уникального имени файла и библиотеку csv для сохранения результатов вывода в файл csv. Они также используют библиотеку cv2 для записи изображения в выбранную папку. Наконец, они завершают код и тестируют его.

  • 01:50:00 В этом разделе видео инструктор демонстрирует, как настроить путь к CSV-файлу и папке для записи всех результатов или областей изображения. Они создают новую папку с именем discovery_images, куда будут записаны все результаты изображений. Преподаватель покажет, как передать имя CSV-файла и путь к папке, а затем проверить код, чтобы сохранить результаты. Они настроили метод сохранения результатов для записи результатов в созданную папку, которая включает имя изображения, а также номерной знак. Затем инструктор демонстрирует, как запустить код в режиме реального времени, чтобы сохранить результаты во время обнаружения. Наконец, они проверяют код, что приводит к точному выводу изображений при сохранении результатов в режиме реального времени.

  • 01:55:00 В этом разделе спикер информирует зрителей о том, что им доступна построенная функция OCR и алгоритм фильтрации, применяемый в режиме реального времени. Он призывает зрителей обращаться за помощью, если они столкнутся с какими-либо трудностями, и упоминает, что код будет доступен на GitHub для использования. Наконец, он благодарит зрителей за то, что они настроились, просит их лайкнуть, подписаться и прокомментировать и подписать.
Automatic Number Plate Recognition using Tensorflow and EasyOCR Full Course in 2 Hours | Python
Automatic Number Plate Recognition using Tensorflow and EasyOCR Full Course in 2 Hours | Python
  • 2021.05.03
  • www.youtube.com
Want to be able to perform number plate recognition in real time?Well in this course you'll learn how to do exactly that!In this video, you'll learn how to l...
 

Обучение с подкреплением за 3 часа | Полный курс с использованием Python

Код: https://github.com/nicknochnack/ReinforcementLearningCourse



Обучение с подкреплением за 3 часа | Полный курс с использованием Python

00:00:00 - 01:00:00 Видеокурс «Обучение с подкреплением за 3 часа» охватывает ряд тем обучения с подкреплением, включая практическую реализацию и преодоление разрыва между теорией и практикой. Курс охватывает все, от настройки среды RL до создания пользовательских сред, с акцентом на обучение агентов обучения с подкреплением и их оценку с использованием различных алгоритмов и архитектур. Обсуждаются популярные приложения RL, такие как робототехника и игры, а также ограничения RL, такие как предположение о марковской среде и возможность нестабильного обучения. В курсе используются Stable Baselines, библиотека RL с открытым исходным кодом и OpenAI Gym для создания симулированных сред. Преподаватель объясняет различные типы пробелов, используемые для представления действий и значений, которые агенты могут принимать в среде, а также различные алгоритмы RL, такие как A2C и PPO. Подчеркивается важность понимания среды перед внедрением алгоритмов, и пользователи получают инструкции по настройке вычислительной платформы для обучения с подкреплением, выбору подходящих алгоритмов RL, а также обучению и тестированию модели.

01:00:00
- 02:00:00 В этом видео на YouTube представлен трехчасовой курс по обучению с подкреплением с использованием Python. Инструктор объясняет основные компоненты обучения с подкреплением, включая агента, среду, действие и вознаграждение. В этом разделе обсуждается, как определить среду, обучить модель с помощью обучения с подкреплением и просмотреть журналы обучения с помощью TensorBoard для мониторинга процесса обучения. Лектор также охватывает другие темы, такие как сохранение и перезагрузка обученной модели, тестирование и улучшение производительности модели, определение сетевой архитектуры для пользовательского актера и функции значения в нейронной сети, а также использование обучения с подкреплением для игры в игру Atari Breakout. Кроме того, курс включает в себя три проекта, которые учащиеся будут создавать с использованием методов обучения с подкреплением, включая игру Breakout в Atari, создание гоночного автомобиля для автономного вождения и создание пользовательских сред с использованием пространств OpenAI Gym.

02:00:00 - 03:00:00 Это видео на YouTube под названием «Обучение с подкреплением за 3 часа | Полный курс с использованием Python» охватывает различные темы, связанные с обучением с подкреплением. Инструктор демонстрирует, как обучить агента обучения с подкреплением играм Atari и автономному вождению в среде гоночного автомобиля. Они также представляют различные зависимости OpenAI для тренажерного зала, помощники и стабильные базовые уровни, а также различные типы пространств для обучения с подкреплением. Кроме того, в видео рассказывается, как создать пользовательскую среду для обучения с подкреплением, определить состояние среды, ее области наблюдения и действия, протестировать и обучить модель, а также сохранить обученную модель после обучения. Инструктор также обсуждает важность обучения моделей в течение более длительных периодов времени для повышения производительности и призывает зрителей обращаться к нам, если они столкнутся с какими-либо трудностями.

  • 00:00:00 В этом разделе видео ведущий представляет курс обучения с подкреплением и описывает различные темы, которые будут затронуты на протяжении всего курса. Он объясняет, что курс предназначен для преодоления разрыва между теорией и практической реализацией и охватывает все, от настройки среды RL до создания пользовательских сред. Докладчик дает общий обзор обучения с подкреплением, его приложений и некоторых его ограничений. Курс предоставит практический опыт обучения агентов обучения с подкреплением, а также их тестирования и оценки с использованием различных алгоритмов и архитектур, а также охватит три различных проекта, ориентированных на среду прорыва, среду автономного вождения и настраиваемые среды.

  • 00:05:00 В этом разделе видео «Обучение с подкреплением за 3 часа» инструктор объясняет основные концепции обучения с подкреплением. Агент обучения с подкреплением учится на основе вознаграждений, которые он получает от окружающей среды, предпринимая различные действия. Агент наблюдает за окружающей средой, чтобы максимизировать свое вознаграждение с течением времени, принимая определенные решения. Инструктор также обсуждает некоторые практические применения обучения с подкреплением, такие как автономное вождение, торговля ценными бумагами и поиск архитектуры нейронной сети.

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

  • 00:15:00 В этом разделе инструктор представляет курс и описывает 10 различных шагов, которые будут рассмотрены. Первым шагом является импорт и загрузка необходимых зависимостей, включая стабильные базовые показатели, библиотеку с открытым исходным кодом для обучения с подкреплением. Преподаватель объясняет различные алгоритмы, доступные в библиотеке, и преимущества использования PPO (Proximal Policy Optimization). Зависимости также включают ОС для функциональности операционной системы и тренажерный зал для создания сред и работы с ними. В целом, процесс прост и требует всего несколько строк кода, чтобы начать работу со стабильными базовыми показателями.

  • 00:20:00 В этом разделе инструктор обсуждает зависимости и среды, необходимые для обучения с подкреплением. Они представляют Stable Baselines, который позволяет ускорить машинное обучение за счет векторизации сред, и оболочку Dummy Vec Env. Они также объясняют, как OpenAI Gym можно использовать для создания смоделированных сред, что может снизить затраты и ускорить создание моделей. Они предоставляют примеры реальных сред, таких как робот, а также смоделированные среды, такие как OpenAI Gym, который имеет много документации и поддержки.

  • 00:25:00 В этом разделе видео инструктор обсуждает стандарт создания сред обучения с подкреплением, которым является OpenAI Gym. Он объясняет, что OpenAI Gym предоставляет предварительно созданные среды, в том числе основанные на реальных роботах, таких как Fetch Robot и Shadow Hand Robot. Далее он объясняет различные типы пространств, которые поддерживает OpenAI Gym, включая блочные, дискретные, кортежные, словарные, мультибинарные и мультидискретные. Он отмечает, что эти пробелы используются для представления различных типов значений или действий, которые агенты могут выполнять в среде. Затем инструктор представляет классическую среду управления, в частности задачу CartPole, в качестве примера, который он будет использовать для обучения агента обучения с подкреплением. Цель состоит в том, чтобы сбалансировать луч, перемещая его влево или вправо, используя два действия.

  • 00:30:00 В этом разделе инструктор объясняет, как загрузить и протестировать среду с помощью OpenAI Gym. Они начинают с создания экземпляра среды CartPole-v0 с помощью двух строк кода. Затем они демонстрируют, как тестировать среду, перебирая несколько эпизодов и используя env.reset() для получения начального набора наблюдений. Эти наблюдения позже будут переданы агенту обучения с подкреплением, чтобы определить наилучшее действие для максимизации вознаграждения. Преподаватель отмечает важность понимания среды перед внедрением каких-либо алгоритмов.

  • 00:35:00 В этом разделе инструктор объясняет код, используемый для выборки среды в обучении с подкреплением. Код устанавливает максимальное количество шагов для среды, настраивает счетчик очков и генерирует случайное действие на основе пространства действий, определенного средой. Наблюдения, возвращаемые средой после каждого действия, сопровождаются вознаграждением и значением, указывающим, завершен ли эпизод. Результаты распечатываются, а среда после тестирования закрывается. Преподаватель также объясняет концепцию пространства для наблюдения и демонстрирует, как из него можно сделать выборку.

  • 00:40:00 В этом разделе инструктор объясняет две части среды, пространство для действий и пространство для наблюдения, а также то, как они представлены в документации OpenAI Gym. Пространство наблюдения состоит из четырех значений, представляющих положение тележки, скорость, угол полюса и угловые скорости полюса. С другой стороны, в пространстве действия есть два возможных действия, ноль или единица, где ноль толкает тележку влево, а единица толкает тележку вправо. В этом разделе также освещаются различные типы алгоритмов обучения с подкреплением, основанные на моделях и без моделей, и чем они отличаются. Инструктор фокусируется на обучении с подкреплением без моделей и углубляется в алгоритмы A2C и PPO, которые будут использоваться на этапе обучения.

  • 00:45:00 В этом разделе видео инструктор объясняет, как выбрать подходящий алгоритм обучения с подкреплением на основе пространства действия используемой среды. Далее он объясняет различные типы алгоритмов, доступных в Stable Baselines, таких как A2C, DDPG, DQN, HER, PPO, SAC и TD3, и какие пространства действий они лучше всего работают. Преподаватель также обсуждает метрики обучения, которые следует учитывать во время обучения, такие как метрики оценки, метрики времени, метрики потерь и другие метрики. Он напоминает пользователям, что Stable Baselines можно установить с ускорением графического процессора или без него, и дает инструкции по установке PyTorch, если требуется ускорение графического процессора.

  • 00:50:00 В этом разделе инструктор обсуждает, как настроить вычислительную платформу для обучения с подкреплением, что крайне важно для тех, кто хочет использовать ускорение GPU. CUDA и cuDNN поддерживаются только на графических процессорах NVIDIA, поэтому пользователям необходимо убедиться, что у них есть графический процессор NVIDIA, чтобы использовать CUDA, чтобы воспользоваться преимуществами ускорения графического процессора. С другой стороны, графические процессоры AMD поддерживаются RockM, бета-пакетом, доступным только в Linux. Преподаватель также подчеркивает, что традиционное глубокое обучение может дать больший прирост производительности при использовании графического процессора, чем обучение с подкреплением. Наконец, инструктор определяет путь к журналу и создает экземпляры алгоритма и агента.

  • 00:55:00 В этом разделе инструктор демонстрирует, как обернуть невекторизованную среду внутри фиктивной векторизованной среды с помощью лямбда-функции. Затем они определяют модель, которая является агентом, который будет обучаться, как PPO и передают путь к политике, среде, подробному и тензорному журналу в качестве аргументов. Преподаватель продолжает объяснять различные гиперпараметры, которые можно передать алгоритму PPO. Наконец, они демонстрируют, как обучить модель с помощью функции model.learn и передать количество временных шагов для ее обучения, которое в этом примере установлено на 20 000. После обучения модели инструктор тестирует ее и проверяет показатели обучения.


Часть 2

  • 01:00:00 В этом разделе видео инструктор показывает, как сохранить и перезагрузить обученную модель. Модель сохраняется с помощью функции `model.save()`, и определяется путь для поиска сохраненной модели. Затем инструктор демонстрирует, как удалить сохраненную модель и перезагрузить ее с помощью функции ppo.load(). Следующим шагом является тестирование обученной модели, чтобы увидеть, как она работает. Инструктор объясняет, что метрики развертывания зависят от алгоритма, используемого для обучения, и показывает, что алгоритм «A2C» предоставляет эти метрики во время обучения, тогда как алгоритм «PPO» требует явной команды для создания этих метрик.

  • 01:05:00 В этом разделе видео объясняется, как использовать метод Assessment_policy для проверки производительности модели и определения того, считается ли модель PPO «решенной» в данном конкретном случае. Метод Assessment_policy — это способ проверить, насколько хорошо работает модель, и модель считается решенной, если она набирает в среднем 200 или более баллов. Метод передается через модель, среду, сколько эпизодов тестировать и требуется ли рендеринг или нет. Среднее вознаграждение и стандартное отклонение в этом вознаграждении — это значения, которые вы получаете из Assessment_policy, а закрытие среды выполняется с помощью emv.close. Наконец, в видео показано, как развернуть модель в инкапсулированной функции.

  • 01:10:00 В этом разделе инструктор демонстрирует, как использовать наблюдения из окружающей среды, чтобы предсказать наилучшее действие с использованием агента, чтобы максимизировать вознаграждение. В блоке кода показано, как внести ключевые изменения, чтобы использовать model.predict вместо env.actionspace.sample для выполнения действий с использованием модели. Инструктор показывает, что агент работает лучше, чем случайные шаги, и уравновешивает шест. Код также показывает наблюдения, переданные в функцию model.predict, с двумя возвращенными значениями, действием модели и следующим состоянием. Первое значение используется здесь для определения наилучшего действия агента.

  • 01:15:00 В этом разделе инструктор объясняет основные компоненты обучения с подкреплением: агент, среда, действие и вознаграждение. Он демонстрирует, как определить среду и обучить модель, используя обучение с подкреплением, чтобы каждый раз накапливать значение, равное единице, удерживая шест в вертикальном положении и не падая. Инструктор также показывает, как просматривать журналы тренировок с помощью TensorBoard для наблюдения за процессом обучения.

  • 01:20:00 В этом разделе видео инструктор объясняет, как использовать TensorBoard в блокноте Jupiter для просмотра показателей обучения модели обучения с подкреплением. Он демонстрирует, как запустить команду TensorBoard с помощью волшебной команды, и показывает, как указать путь к журналу обучения. Преподаватель также показывает, как просматривать показатели обучения, такие как количество кадров в секунду, потери энтропии, скорость обучения и потери градиента политик, в TensorBoard. Он подчеркивает, что среднее вознаграждение — это самый важный показатель, за которым нужно следить при настройке производительности модели. В заключение он предлагает отзывы и комментарии от зрителей.

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

  • 01:30:00 В этом разделе инструктор объясняет, как использовать обратные вызовы в обучении с подкреплением для более гибкого и эффективного обучения. В примере используются два обратных вызова: обратный вызов остановки и обратный вызов eval. Обратный вызов stop указывает среднее вознаграждение, после которого обучение должно быть остановлено, а обратный вызов eval оценивает лучшую новую модель и проверяет, преодолела ли она порог вознаграждения. Преподаватель также демонстрирует, как изменить политику, указав новую архитектуру нейронной сети. В целом, обратные вызовы обеспечивают больший контроль над моделями обучения с подкреплением, позволяя проводить более индивидуальное и эффективное обучение.

  • 01:35:00 В этом разделе спикер обсуждает процесс задания архитектуры сети для пользовательского актора и функции значения в нейронной сети. Это можно сделать, просто изменив количество единиц и слоев и передав их в модель. Докладчик также подчеркивает, что можно определить экстракторы пользовательских функций, и показывает, как использовать альтернативный алгоритм, такой как DQN, вместо PPO, а также выделяет другие алгоритмы, доступные в Stable Baselines. В заключение докладчик демонстрирует обученную модель DQN.

  • 01:40:00 В этом разделе преподаватель обсуждает проекты, которые учащиеся будут создавать с использованием методов обучения с подкреплением. Они начнут с Project One, игры Breakout от Atari. Затем они также займутся вторым проектом, в котором будут использовать обучение с подкреплением для создания гоночного автомобиля для имитации автономного вождения. Наконец, они будут работать над третьим проектом, который включает в себя создание пользовательских сред с использованием пространств OpenAI Gym. Преподаватель также объясняет, чем импорт необходимых библиотек и зависимостей для проектов аналогичен импорту в основном курсе, и в них нужно будет только использовать разные алгоритмы в зависимости от проекта.

  • 01:45:00 В этом разделе видеоинструктор объясняет, как настроить среду Atari для обучения с подкреплением в Python. Из-за недавних изменений пользователи должны загружать необработанные файлы с atarimania.com и извлекать их в папку, чтобы использовать среду. После установки необходимых пакетов и зависимостей пользователи могут протестировать среду с помощью функций «emv.reset» и «emv.action_space». Пространство наблюдения представляет собой прямоугольник, представляющий собой изображение размером 210x160x3. Преподаватель также демонстрирует, как тестировать модель в среде.

  • 01:50:00 В этом разделе инструктор показывает код для игры в Breakout с использованием случайных действий и указывает, что обучение модели может занять много времени. Чтобы ускорить обучение, инструктор векторизирует среду и обучает четыре разные среды одновременно. Используемая среда — это среда на основе изображений, а не версия Breakout с оперативной памятью, поскольку будет использоваться политика CNN. Показан код для настройки модели, включая указание пути журнала и алгоритма A2C с политикой CNN.

  • 01:55:00 В этом разделе видеоинструктор использует обучение с подкреплением, чтобы научить модель играть в игру Atari «Breakout». В модели используется политика сверточной нейронной сети (CNN), которая быстрее обучается, чем политика многоуровневого персептрона. Среда определяется с помощью функции make_atari OpenAI Gym, а векторизация используется для ускорения процесса обучения. Модель обучается на 100 000 шагов, а после сохранения и перезагрузки модели она оценивается с использованием метода оценки политики. Окончательная модель обеспечивает среднее вознаграждение за эпизод 6,1 при стандартном отклонении 1,9, что является значительным улучшением по сравнению со случайным агентом. Инструктор также предоставляет информацию о предварительно обученной модели, которая прошла обучение на 300 000 шагов, и о том, как ее загрузить и протестировать.


Часть 3

  • 02:00:00 В этом разделе инструктор обсуждает, как справляться с проблемами зависания при работе со средой, в частности с Atari. Если среда зависает, ноутбук следует перезапустить, а ядро перезапустить после сохранения модели. Затем инструктор демонстрирует, как обучить агента обучения с подкреплением для выхода из строя, пройдя через процесс импорта зависимостей, установки ПЗУ Atari, векторизации среды для одновременного обучения в четырех средах Atari, обучения агента и, наконец, оценки и сохранения модели. Преподаватель также показывает влияние более длительного обучения модели и делает обученные модели доступными в репозитории Github, чтобы учащиеся могли попробовать их самостоятельно.

  • 02:05:00 В этом разделе видео об обучении с подкреплением за три часа инструктор начинает с демонстрации результатов Проекта 1, который включал обучение модели игре с использованием обучения с подкреплением. Модель работала значительно лучше, чем предыдущие модели, со средней наградой за 50 эпизодов 22,22 и стандартным отклонением 9,1. Затем инструктор представляет проект 2, который включает в себя использование обучения с подкреплением для автономного вождения в среде гоночного автомобиля. Чтобы настроить среду, инструктор объясняет, что необходимо установить swig и две новые зависимости, box 2d и piglet. Затем инструктор выполняет процесс тестирования среды и импорта необходимых зависимостей.

  • 02:10:00 В этом разделе видео обсуждается пространство наблюдения и действия в среде автомобильных гонок для обучения с подкреплением. Пространство наблюдения представляет собой изображение 96 на 96 на 3 со значениями от 0 до 255, а пространство действия находится между минус единицей и единицей для трех разных значений. Функция вознаграждения имеет отрицательное значение 0,1 для каждого кадра и плюс 1000, деленное на n, для каждого посещенного фрагмента дорожки. Игра считается решенной, когда агент может стабильно набирать 900 и более очков, что может занять некоторое время при обучении. Затем видео продолжает обучение модели с использованием алгоритма PPO и показывает, как тестировать гоночную среду с помощью обученной модели.

  • 02:15:00 В этом разделе инструктор настраивает среду для беспилотного автомобиля с помощью OpenAI Gym и помещает ее внутрь макета Vectorize Environment Wrapper. Затем агент и модель задаются с помощью алгоритма PPO, и модель обучается на 100 000 шагов. Сохраненная модель загружается и оценивается в среде, и, несмотря на отсутствие тяги у мощного автомобиля, он не едет вперед, а раскручивается и делает пончики. Наконец, среда закрывается, и инструктор загружает для тестирования модель, обученную на 438 000 шагов.

  • 02:20:00 В этом разделе инструктор загружает модель беспилотного автомобиля, обученную пройти 438 000 шагов, и тестирует ее на треке. Хотя он медленнее, он следует по дорожке и получает гораздо более высокий балл, чем предыдущая модель, обученная на 100 000 шагов. Инструктор объясняет, что обучение агентов обучения с подкреплением в течение более длительного периода времени может создавать гораздо лучшие модели, и в идеале эта модель должна быть обучена на 1-2 миллиона шагов для оптимальной работы. Он демонстрирует, как тестировать модель, используя фрагмент кода из основного руководства, который показывает, что даже при обучении только на изображениях модель может успешно перемещаться по трассе. В конце концов, инструктор обучил эту модель двум миллионам дополнительных шагов, улучшив ее производительность и достигнув примерно 700 вознаграждений.

  • 02:25:00 В этом разделе инструктор загружает и запускает модель, которая работает значительно лучше, чем предыдущие модели, которые он обучал, несмотря на то, что время от времени крутится на поворотах. Он показывает оценку модели, которая достигла 800 баллов, что является значительным улучшением по сравнению с предыдущими моделями. Он отмечает, что эта модель обучалась дольше и имела высокое стандартное отклонение. Затем инструктор представляет последний проект, который включает в себя использование стабильных базовых показателей для обучения с подкреплением в настраиваемых средах. Он импортирует необходимые зависимости и призывает зрителей обращаться, если они столкнутся с какими-либо трудностями.

  • 02:30:00 В этом разделе видео инструктор рассказывает о различных зависимостях тренажерного зала или зависимостях тренажерного зала OpenAI, помощниках и стабильном базовом материале, который будет использоваться в курсе обучения с подкреплением. Они импортируют тренажерный зал, который является стандартным импортом, класс среды тренажерного зала из env и различные типы пространств, такие как дискретное, поле, словарь, кортеж, мультибинарный, мультидискретный. Инструктор рассказывает, как использовать каждое из этих пространств и как их можно использовать для разных целей. Инструктор также просматривает различные импортированные помощники, такие как numpy, random и os, и стабильные базовые функции, включая функции ppo, common.vec_env, dummy_vec_nv и Assessment_policy.

  • 02:35:00 В этом разделе видео ведущий обсуждает различные типы пространств, доступных в OpenAI Gym для обучения с подкреплением. Эти пространства включают дискретное, поле, кортеж, словарь, мультибинарное и мультидискретное. Ведущий приводит примеры и пояснения для каждого из этих пространств. Затем в видео обсуждается создание смоделированной среды для обучения агента регулированию температуры душа. Конечной целью является достижение температуры между 37 и 39 градусами, но агент не знает этого априори и должен учиться методом проб и ошибок.

  • 02:40:00 В этом разделе инструктор строит оболочку для душевой, реализуя четыре ключевые функции. Этими функциями являются init, step, render и reset. Функция init инициализирует среду, определяя пространство действий, пространство наблюдения и начальное состояние. Функция шага выполняет действие и применяет его к среде. Функция рендеринга отображает окружающую среду. Функция сброса сбрасывает среду в исходное состояние. Преподаватель также устанавливает продолжительность эпизода 60 секунд для окружающей среды.

  • 02:45:00 В этом разделе инструктор определяет ступенчатую функцию для душевой, которая содержит шесть кодовых блоков. Первый блок применяет влияние действия на состояние с нулем, единицей и двумя в качестве трех возможных действий. Ноль снижает температуру на один градус, единица оставляет температуру прежней, а двойка повышает температуру на один градус. Второй блок уменьшает время душа на одну секунду. Третий блок определяет вознаграждение: вознаграждение равно единице, если температура находится в диапазоне от 37 до 39 градусов, и -1, если она выходит за пределы этого диапазона. Четвертый блок проверяет, завершен ли душ, и устанавливает значение true, если время душа меньше или равно нулю. Пятый блок создает пустой информационный словарь, а последний блок возвращает состояние, награду, завершен ли душ и словарь. Функция сброса сбрасывает начальную температуру до значения по умолчанию и сбрасывает время душа до 60 секунд.

  • 02:50:00 В этом разделе инструктор объясняет, как создать пользовательскую среду для обучения с подкреплением с помощью Python. Он демонстрирует, как определить состояние окружающей среды и пространства для наблюдения и действия. Преподаватель также покажет, как протестировать и обучить модель с использованием заданной среды и как сохранить обученную модель после обучения. Он упоминает, что игровые среды требуют больше времени для обучения по сравнению с простыми средами, и призывает помнить об этом при планировании проектов и работе с клиентами.

  • 02:55:00 В этом разделе инструктор демонстрирует, как протестировать и сохранить обученную модель. Они используют метод «оценить политику» для проверки производительности модели, а затем сохраняют модель с помощью метода «model.save». Кроме того, они предоставляют краткое изложение курса, который охватывает ряд тем, от настройки среды с использованием стабильных базовых показателей до моделей обучения с использованием различных алгоритмов, включая PPO, A2C и DQN. Они также обсуждают создание пользовательских сред и строительные проекты, например, обучение модели игре в Breakout или гонке на автомобиле по трассе.

  • 03:00:00 В этом разделе инструктор рекомендует дополнительные ресурсы для дальнейшего обучения, в том числе курс Дэвида Сильвы «Обучение с подкреплением», книгу Ричарда Саттона и Эндрю Бартоса «Обучение с подкреплением: введение», а также изучение настройки гиперпараметров, создание пользовательских сред. , а также внедрять комплексные решения, такие как создание робота для тележки и его обучение в смоделированной среде, прежде чем внедрять его в реальную среду с использованием Raspberry Pi. Преподаватель поощряет отзывы и вопросы от зрителей и благодарит их за то, что они настроились.
Reinforcement Learning in 3 Hours | Full Course using Python
Reinforcement Learning in 3 Hours | Full Course using Python
  • 2021.06.06
  • www.youtube.com
Want to get started with Reinforcement Learning?This is the course for you!This course will take you through all of the fundamentals required to get started ...
 

Детектирование языка жестов с использованием ACTION RECOGNITION с Python | Модель глубокого обучения LSTM

Код: https://github.com/nicknochnack/ActionDetectionforSignLanguage



Детектирование языка жестов с использованием ACTION RECOGNITION с Python | Модель глубокого обучения LSTM

В этом видео докладчик объясняет, как создать поток обнаружения языка жестов в реальном времени с использованием обнаружения действий и ключевых моделей. Докладчик использует OpenCV и MediaPipe Holistic для извлечения ключевых точек из рук, лица и тела, а затем TensorFlow и Keras для построения модели LSTM, которая предсказывает действие, демонстрируемое в последовательности кадров. Ведущий выполняет процесс доступа и извлечения ключевых точек с веб-камеры, настраивает цикл для доступа к веб-камере и упрощает определение языка жестов, применяя ориентиры к последнему захваченному кадру с веб-камеры. Они также демонстрируют, как изменить код для обработки отсутствующих ключевых точек и добавить обработку ошибок в модель позы и обнаружение ориентиров лица. Наконец, ведущий объясняет функцию извлечения ключевых точек для обнаружения языка жестов с помощью распознавания действий с помощью Python.

Видео содержит подробное объяснение того, как создать модель обнаружения языка жестов с помощью распознавания действий с помощью Python. Чтобы собрать данные, ведущий создает папки для каждого действия и последовательности и изменяет цикл MediaPipe, чтобы собирать 30 значений ключевых точек для каждого видео для каждого действия. Данные предварительно обрабатываются путем создания меток и функций для модели глубокого обучения LSTM, а модель обучается с использованием TensorFlow и Keras. Обученная модель оценивается с использованием матрицы путаницы с несколькими метками и функции оценки точности. Наконец, обнаружение в реальном времени устанавливается путем создания новых переменных для обнаружения, объединения кадров и применения логики прогнозирования с пороговой переменной, реализованной для отображения результатов выше определенной метрики достоверности.

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

  • 00:00:00 В этом разделе видео создатель объясняет свою цель — создать процесс обнаружения жестового языка в реальном времени с использованием обнаружения действий и ключевых моделей. Они будут использовать MediaPipe Holistic для извлечения ключевых точек из рук, лица и тела, а затем использовать TensorFlow и Keras для построения модели LSTM, которая предсказывает действие, демонстрируемое в последовательности кадров. Процесс включает в себя сбор данных по ключевым точкам, обучение нейросети, оценку точности и тестирование модели в режиме реального времени с помощью OpenCV и веб-камеры. Создатель описывает 11 шагов для достижения этого процесса и начинает с установки и импорта зависимостей.

  • 00:05:00 В этом разделе ведущий обсуждает различные зависимости, которые будут использоваться в проекте, включая OpenCV, MediaPipe, scikit-learn, NumPy, Matplotlib и TensorFlow. После импорта этих зависимостей ведущий выполняет процесс доступа и извлечения ключевых точек из веб-камеры с использованием OpenCV и MediaPipe Holistic. Затем ведущий устанавливает цикл для доступа к веб-камере и вывода нескольких кадров на экран, что позволяет тестировать проект в реальном времени. Этот цикл будет использоваться несколько раз на протяжении всего проекта, в том числе при извлечении кадров и тестировании проекта. Весь код, используемый в проекте, будет доступен на Github, включая окончательные тренированные веса.

  • 00:10:00 В этом разделе видео ведущий объясняет, как получить доступ к веб-камере с помощью OpenCV и начать перебирать все кадры. Докладчик использует функцию «захвата видео» для чтения потока с веб-камеры и инициирует цикл, который будет считывать, отображать и ждать нажатия клавиши, чтобы выйти из цикла. Докладчик также объясняет, как изящно разорвать цикл и как устранить проблемы с номером устройства, если веб-камера не появляется. Наконец, докладчик представляет MediaPipe Holistic и MediaPipe Drawing Utilities, два модуля Python, используемые для загрузки и использования целостной модели для определения позы и рисования ориентиров позы на изображении.

  • 00:15:00 В этом разделе стенограммы говорящий настраивает функцию, упрощающую определение языка жестов. Функция принимает изображение и целостную модель медиаканала и выполняет ряд шагов, включая преобразование цвета из BGR в RGB, выполнение обнаружения и преобразование изображения обратно в BGR, прежде чем вернуть изображение и результаты в цикл для обработки. рендеринг. Шаги выполняются симметрично, чтобы гарантировать, что образ не будет доступен для записи до обнаружения, а затем снова станет доступным для записи. Докладчик также объясняет функцию cvtColor, используемую для преобразования цвета изображения, и показывает, как вызвать функцию обнаружения медиаканала в цикле.

  • 00:20:00 В этом разделе ведущий объясняет, как получить доступ к модели MediaPipe с помощью оператора with, и задает начальную достоверность и достоверность отслеживания. Они также показывают, как получить доступ к различным типам ориентиров и визуализировать их: лицо, левая и правая рука и ориентиры позы. Затем докладчик демонстрирует, как использовать MediaPipe Holistic для обнаружения ориентиров и отображения результатов на кадре. Наконец, они показывают, как отображать ориентиры на экране, написав функцию.

  • 00:25:00 В этом разделе ютубер настраивает новую функцию под названием «draw_landmarks», которая будет отображать данные ориентиров на изображении, чтобы обеспечить визуализацию различных ориентиров, обнаруженных моделями медиаканалов, используемыми в проекте. Функция использует вспомогательную функцию «mp.drawing», предоставляемую медиаканалом, для рисования ориентиров, а также требует изображения и данных ориентира в качестве входных данных. Эта функция также позволяет задавать карты соединений и параметры форматирования. Затем ютубер продолжает демонстрировать, как использовать функцию «plot.imshow» из matplotlib для отображения последнего захваченного кадра с веб-камеры.

  • 00:30:00 В этом разделе спикер корректирует цвет изображения и накладывает ориентиры на изображение, пропуская их через функцию «нарисовать ориентиры». Доступ к результатам модели обнаружения медиаканала осуществляется в виде последнего кадра и результатов выполнения цикла. Методы «mp_drawing.draw_landmarks» применяются к текущему кадру для рендеринга всех соединений рук, поз и лиц. Затем спикер применяет функцию «отрисовки ориентиров» к циклу реального времени и перед рендерингом применяет форматирование с использованием «спецификаций рисования ориентиров» и «спецификаций рисования соединений» для рисования точек и соединений соответственно. Наконец, динамик создает новую функцию под названием «отрисовка ориентиров стиля», чтобы при желании настроить функцию «отрисовки ориентиров».

  • 00:35:00 В этом разделе спикер обновляет форматирование функции отрисовки ориентиров, добавляя два дополнительных параметра для функции mp_drawing.drawing_spec — цвет и радиус круга. Они демонстрируют изменения для ориентира лица и объясняют, что первый параметр окрашивает ориентир, а второй параметр окрашивает соединение. Затем динамик копирует изменения функции для каждой модели позы и руки, придавая каждой модели уникальные цвета. Изменения чисто косметические и не повлияют на производительность, но они демонстрируют разные модели в действии.

  • 00:40:00 В этом разделе видеоучебник объясняет, как извлечь значения ключевых точек из переменной результатов модели MediaPipe Holistic устойчивым способом, объединяя их в пустой массив и обрабатывая ошибки. В этом руководстве показано, как извлечь значения для одного ориентира и обновить его для всех ориентиров, используя цикл и понимание списка. Окончательный массив со всеми ориентирами затем сглаживается, чтобы все значения были в одном массиве, а не в нескольких наборах ориентиров.

  • 00:45:00 В этом разделе ведущий объясняет, как изменить код для обработки, когда нет ключевых точек из-за того, что рука находится вне кадра. Они начинают с того, что показывают, что левые ориентиры имеют по три значения каждый, а всего имеется 21 ориентир, всего 63 необходимых значения. Затем они применяют оператор if, который заменяет отсутствующие значения пустым массивом numpy. Эта же модификация затем применяется к правым ориентирам, которые также имеют 63 значения. Код извлекает различные ключевые точки, объединяя значения x, y и z вместе в один большой массив, а затем выравнивая его до нужного формата для использования в модели LSTM.

  • 00:50:00 В этом разделе спикер обсуждает, как добавить обработку ошибок в модель позы и обнаружение ориентиров лица, а также создает функцию под названием «extract_key_points» для извлечения ключевых точек, необходимых для обнаружения ориентиров и обнаружения действий. Функция использует пустые массивы и перебирает результаты для извлечения значений x, y и z для каждого ориентира, а затем объединяет их в массив. Спикер также упоминает, что код будет доступен в описании видео, и предлагает зрителям задавать вопросы в комментариях.

  • 00:55:00 В этом разделе видео спикер объясняет функцию извлечения ключевых точек для обнаружения языка жестов с помощью распознавания действий с помощью Python. Функция извлекает ключевые точки для позы, лица, левой и правой руки и объединяет их в сглаженный массив numpy. Эти ключевые точки формируют значения кадра, используемые для обнаружения языка жестов с использованием обнаружения действий человека. Динамик также устанавливает переменные для пути экспортируемых данных и действий, которые необходимо обнаружить — привет, спасибо, и я люблю вас — используя 30 кадров данных для каждого действия.
  • 01:00:00 В этом разделе видео ведущий объясняет процесс сбора данных для обнаружения языка жестов с помощью распознавания действий с помощью Python. Они объясняют, что для каждого из трех действий, которые они хотят обнаружить, они будут собирать данные на 30 видео, причем каждое видео будет иметь длину 30 кадров. Это довольно много данных, но ведущий заверяет зрителей, что они будут делать это шаг за шагом. Далее они создают папки для каждого действия и последовательности действий, в которых 30 ключевых точек из каждого кадра каждой последовательности будут храниться в виде массива numpy. Ведущий также упоминает, что на шаге 11 они покажут зрителям, как объединять слова в предложения.

  • 01:05:00 В этом разделе инструктор показывает, как собирать данные для модели распознавания жестового языка. Он начинает с создания папок для трех разных классов знаков — привет, спасибо и я люблю тебя — и соответствующих им отдельных папок последовательностей. Затем он модифицирует цикл медиаканала, чтобы он перебирал каждое действие, видео и кадр для сбора данных. Чтобы кадры не собирались слишком быстро, он добавляет перерыв между каждым видео с помощью логического оператора. При этом модель будет собирать 30 значений ключевых точек для каждого видео, эффективно создавая сложенный набор из трех действий, каждое из которых содержит 30 видео на действие и 30 кадров на видео.

  • 01:10:00 В этом разделе создатель видео объясняет логику сбора в скрипте Python, который использует OpenCV и модели глубокого обучения для обнаружения жестов языка жестов из видео. Логика включает в себя вывод текста на экран и перерыв в каждом втором кадре. Создатель видео также демонстрирует использование np.save для сохранения кадров в виде массивов numpy, которые хранятся в папке mp_data. Затем они предоставляют окончательный блок кода для извлечения ключевых точек и сохранения кадров в нужных папках.

  • 01:15:00 В этом разделе стенограммы спикер объясняет логику, применяемую для циклического просмотра их действий и последовательностей (видео), применения обнаружения канала мультимедиа, рисования стилизованных ориентиров и извлечения различных ключевых моментов для сохранения в определенные папки. Они будут использовать три действия (привет, спасибо, и я люблю тебя) и собирать по 30 кадров на действие для 30 последовательностей. Перед запуском этого кода они дважды проверяют наличие ошибок и регулируют ширину строки, чтобы убедиться, что шрифт не перекрывается. После запуска кода всплывающее окно говорит «Начало сбора», у них есть две секунды, чтобы занять позицию для выполнения действия, и у них есть 30 кадров, чтобы сделать это. Код должен иметь возможность бесконечно зацикливаться и собирать данные.

  • 01:20:00 В этом разделе видео ведущий демонстрирует, как собирать данные языка жестов с помощью библиотек MediaPipe и OpenCV в Python. Ведущий предлагает снимать знаки рук под разными углами для лучшей производительности модели, а также упоминает, что наличие 30 последовательностей по 30 кадров в каждой, как правило, работает хорошо. Ключевые точки, собранные MediaPipe, используются вместо изображения, чтобы сделать модель более устойчивой в различных сценариях. Ведущий также объясняет, что собранные данные хранятся в виде массивов numpy для будущего использования.

  • 01:25:00 В этом разделе видео посвящено предварительной обработке данных и созданию меток и функций для модели глубокого обучения LSTM. Видео начинается с импорта зависимостей, а затем создания карты меток, которая в основном представляет собой словарь, представляющий каждое из различных действий. Затем данные считываются и объединяются, чтобы структурировать их в один большой массив из 90 массивов, каждый из которых содержит 30 кадров с 1662 значениями, представляющими ключевые точки. Создаются два пустых массива, последовательности и метки, где последовательности представляют данные объектов, а метки представляют данные меток. Затем код перебирает все действия и последовательности, создавая пустой массив для окон, представляющий все различные кадры для этой конкретной последовательности. Наконец, numpy.load используется для загрузки каждого кадра.

  • 01:30:00 В этом разделе спикер выполняет процесс предварительной обработки данных, сохраняя их в массиве numpy и преобразовывая метки в одно горячее закодированное представление с помощью функции «to_categorical». Затем они используют функцию «train_test_split» для разделения данных на наборы для обучения и тестирования. Обучающий набор состоит из 85 последовательностей, а тестовый набор состоит из пяти последовательностей. Спикер также импортирует необходимые зависимости, включая последовательную модель, слой LSTM и плотный слой, поскольку они готовятся к обучению нейронной сети LSTM с использованием TensorFlow и Keras.

  • 01:35:00 В этом разделе спикер обсуждает необходимые зависимости, необходимые для построения нейронной сети, в том числе Sequential, lstm, Density и Tensorboard. Они объясняют, что последовательность упрощает добавление слоев в модель, а lstm используется для временного анализа и обнаружения действий. Докладчик также демонстрирует, как настроить обратные вызовы tensorboard для отслеживания прогресса обучения. Затем они переходят к построению архитектуры нейронной сети, которая включает в себя добавление трех наборов слоев lstm и указание функций активации и входной формы. Наконец, они упоминают о важности не возвращать последовательности в плотный слой и рекомендуют дополнительные ресурсы для обучения.

  • 01:40:00 В этом разделе видео ведущий просматривает различные типы слоев, добавленных в модель LSTM, указывая, что все следующие три слоя являются плотными слоями. Каждый плотный слой использует 64 и 32 плотные единицы или полностью связанные нейроны со значениями активации ReLU. Последний слой — это слой действий, который извлекает значения, возвращаемые в виде трех блоков нейронной сети, используя значение активации softmax. Модель предсказывает действие, такое как «Привет», и этот вывод проходит через 30 кадров плюс 1662 ключевые точки и предварительно обрабатывается для извлечения действий. Докладчик объясняет, как они пришли к использованию MediaPipe и слоя LSTM, обсуждая проведенные исследования и разработки. Наконец, модель компилируется с использованием категориальной кросс-энтропии в качестве функции потерь, и она подгоняется и обучается с помощью x train и y train для заданного количества эпох.

  • 01:45:00 В этом разделе видео демонстрирует процесс обучения модели глубокого обучения LSTM для обнаружения языка жестов с использованием распознавания действий с помощью Python. В модели используется модель MediaPipe Holistic, которая не требует генератора данных, поскольку данные могут помещаться в память. В видео показано, как настроить процесс обучения с помощью TensorBoard и как контролировать точность и потери модели во время обучения в TensorBoard. Видео также показывает, как остановить процесс обучения после достижения разумного уровня точности и как проверить структуру модели с помощью функции model.summary.

  • 01:50:00 В этом разделе спикер обучает модель и делает прогнозы, используя сохраненную модель. Модель использует технику глубокого обучения LSTM для идентификации действий на языке жестов. Модель предсказывает наибольшую вероятность обнаруженного действия с помощью функции softmax. Прогнозируемое значение сравнивается с фактическим значением для оценки производительности модели. Динамик сохраняет обученную модель как action.h5 и перезагружает ее с помощью функции компиляции и загрузки. Импортируя метрики из sklearn, спикер оценивает производительность матрицы путаницы с несколькими метками модели.

  • 01:55:00 В этом разделе видео ведущий объясняет, как оценить производительность обученной модели с помощью матрицы путаницы с несколькими метками и функции оценки точности. Матрица путаницы представляет истинные положительные и истинные отрицательные значения, и чем больше число этих значений в верхнем левом и нижнем правом углах, тем лучше работает модель. Функция оценки точности дает процент правильных прогнозов модели. Затем обученная модель оценивается с использованием данных тестирования, и цикл восстанавливается для обнаружения в реальном времени, что включает создание новых переменных для обнаружения, объединение кадров и применение логики прогнозирования. Также реализована пороговая переменная для отображения результатов выше определенной метрики достоверности.

  • 02:00:00 В этом разделе спикер объясняет свою логику прогнозирования для обнаружения языка жестов с использованием распознавания действий с помощью модели глубокого обучения Python и LSTM. Они начинают с извлечения ключевых точек и добавления их к последовательности из 30 кадров. Если длина последовательности равна 30, они запускают прогноз, вызывая model.predict с расширенными размерами последовательности. Затем они печатают предсказанный класс, используя np.argmax и действия, определенные ранее. Спикер также вставляет ключевые моменты в начало последовательности, чтобы разобраться в логике, и продолжает добавлять в код логику визуализации.

  • 02:05:00 В этом разделе спикер разбирает код, объясняя, как программа проверяет, превышает ли результат пороговое значение, извлекая результат с наивысшим баллом, используя «mp.argmax» и пропуская через «res». Логика программы заключается в проверке совпадения последнего слова с текущим прогнозом. Если это так, то программа не будет добавлять длину предложения. Если оно не совпадает, программа добавит текущее обнаруженное действие в наш массив предложений. Длина предложения должна включать не более пяти слов, чтобы программа не пыталась отобразить гигантский массив. Наконец, программа поместит текст и прямоугольник на изображение для отображения предложения.

  • 02:10:00 В этом разделе видео демонстрирует, как использовать Python и модель глубокого обучения LSTM для обнаружения языка жестов с помощью распознавания действий. В учебнике рассматривается настройка кода для использования метода добавления и увеличения порога обнаружения для повышения точности. В видео также показано, как визуализировать вероятности с помощью быстрой функции для создания визуализации вероятностей, чтобы результаты обнаружения выглядели визуально убедительно. В целом, учебник представляет собой отличный пример использования моделей глубокого обучения для обнаружения языка жестов с помощью Python, что делает его отличным ресурсом для всех, кто хочет создавать подобные проекты.

  • 02:15:00 В этом разделе видео ведущий демонстрирует функцию визуализации вероятности, которая позволяет нам просматривать различные действия и то, как рассчитывается их вероятность в режиме реального времени. Функция использует cv2.rectangle для размещения динамического прямоугольника в выходном фрейме, а затем позиционирует и заполняет его на основе действия, над которым мы сейчас работаем, которое затем использует текстовый метод cv2.put для вывода текстовых значений. Ведущий показывает, как эту функцию можно ввести в цикл, чтобы визуализировать ее в режиме реального времени, и мы видим, что она обнаруживает и распознает различные действия, такие как «привет», «спасибо» и «я люблю тебя», на основе значений вероятности. Докладчик подчеркивает, что для этой функции существует множество приложений, и демонстрирует, как можно использовать код для обнаружения и распознавания различных действий в различных сценариях.

  • 02:20:00 В этом разделе видео ведущий резюмирует процесс своего проекта по обнаружению языка жестов. Они настроили папки для сбора, собрали ключевые точки, предварительно обработали данные, построили нейронную сеть LSTM, сделали прогнозы и протестировали ее в режиме реального времени. Они смогли эффективно проводить обнаружение в режиме реального времени, включая визуализацию вероятностей. Они демонстрируют, как они исправили код для захвата нужных кадров и добавления их к последовательности, перемещая двоеточие и добавляя отрицание. Они также добавили строку для добавления своих прогнозов в новый массив прогнозов, чтобы обеспечить большую стабильность при прогнозировании действий. Наконец, они предлагают пользователям возможность расширять и изменять проект, добавляя дополнительные действия, цвета и/или визуализации по своему усмотрению.

  • 02:25:00 В этом разделе спикер демонстрирует, как модель обнаружения действий стала более стабильной и отказоустойчивой за счет внедрения дополнительной логики. Теперь модель способна свести к минимуму ложные обнаружения и удерживать обнаружение в течение более длительного времени, повышая его точность. Спикер также упоминает, что обученные веса для модели будут доступны в репозитории GitHub, чтобы пользователи могли их использовать. Видео заканчивается предложением поставить лайк и подписаться на канал.
Sign Language Detection using ACTION RECOGNITION with Python | LSTM Deep Learning Model
Sign Language Detection using ACTION RECOGNITION with Python | LSTM Deep Learning Model
  • 2021.06.18
  • www.youtube.com
Want to take your sign language model a little further?In this video, you'll learn how to leverage action detection to do so!You'll be able to leverage a key...