Боевой обмен ИИ | Случай применения вспомогательного вождения на основе CANN

искусственный интеллект

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

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

введение

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

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

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

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

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

Без лишних слов открываем портал проекта:Уууууууууууууууууууууууууууууууууууууууууу

​CANN — это гетерогенная вычислительная архитектура, разработанная Huawei специально для сценариев ИИ. Она направлена ​​на повышение эффективности разработки пользователей и высвобождение растущей вычислительной мощности ИИ-процессора Ascend. платформы на базе приложений Ascend AI и бизнеса.

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

Типичные алгоритмы обнаружения объектов

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

Алгоритм обнаружения цели, представленный YOLO (You Only Look Once), предоставляет больше возможностей для обнаружения различных объектов. От распознавания лиц до управления дорожным движением, от подсчета толпы до наблюдения за посевами — алгоритмы обнаружения объектов играют незаменимую роль в различных областях.

Алгоритм YOLO был переработан до версии v5. В этом проекте используется YOLOv4. Давайте посмотрим на его структуру.

图片来自https://blog.csdn.net/andyjkt/article/details/107590669

Изображение изblog.CSDN.net/Моя тема исследования/искусство…

С точки зрения структуры алгоритма YOLOv4 состоит из трех частей: слой Backbone извлекает функции, слой Neck извлекает некоторые более сложные функции и, наконец, слой Head вычисляет выходные данные прогноза.

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

2. Уровень шеи: он состоит из ряда сетевых уровней, таких как SPP или PAN, которые смешивают и объединяют функции изображения, извлекают некоторые более сложные функции и передают функции изображения на уровень прогнозирования.

3. Головной слой: прогнозирование характеристик изображения и создание категорий прогнозирования слияния границ.

С точки зрения процесса YOLOv4 в основном делится на три этапа обработки:

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

2. Затем YOLOv4 будет использовать немаксимальный алгоритм подавления (NMS) для удаления ограничивающих рамок с низким совпадением с помеченными данными (наземная правда).

3. После регрессионной обработки положение последней оставшейся ограничивающей рамки является положением прогнозируемой цели YOLOv4.

图片源自YOLO原始论文,参见文章末尾

Картинка из оригинальной газеты YOLO, см. в конце статьи

Воспользуйтесь мощной вычислительной платформой, чтобы сделать обучение полетам «быстрым».

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

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

Мы знаем, что модели алгоритмов ИИ могут быть определены на основе различных фреймворков ИИ. Будь то платформа искусственного интеллекта Huawei с открытым исходным кодом Ascend MindSpore или другие широко используемые среды искусственного интеллекта, такие как TensorFlow, PyTorch и Caffe, CANN можно легко преобразовать в стандартизированный формат графа, выраженный Ascend IR (промежуточное представление), скрывая различия в Фреймворки ИИ, позволяющие вамБыстрая миграция алгоритма, сразу ощутите растущую вычислительную мощность процессора Ascend AI.

Кроме того, в новом поколении версии CANN 5.0 можно выполнять углубленную совместную оптимизацию программного и аппаратного обеспечения посредством оптимизации компиляции на уровне графа и оператора, автоматической оптимизации и т. д.Полностью высвободите растущую вычислительную мощность оборудования, чтобы добиться значительного улучшения производительности обучения модели ИИ. Для общих сценариев обучения моделей, включая классификацию, обнаружение, NLP и семантическую сегментацию, производительность может быть удвоена, что делает весь процесс обучения «летучим».

Исходная модель YOLOv4, используемая в этом проекте, обучена на основе платформы Pytorch и процессора Ascend AI, Разработчики могут загрузить и использовать ее напрямую или переобучить в соответствии с фактической точностью:Уууууууууууууууууууууууууууууууууу.

Интерфейс AscendCL помогает разработчикам эффективно программировать

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

AscendCL (Ascend Computing Language) — это набор библиотек API языка C для разработки приложений для глубокого рассуждения нейронных сетей.Он имеет возможности управления ресурсами во время выполнения, загрузки и выполнения модели, предварительной обработки изображений и т. д., что позволяет разработчикам легко разблокировать классификацию изображений, Обнаружение целей и другие приложения ИИ. И это скрывает разницу между базовыми процессорами для разработчиков, так что разработчикам нужно только освоить набор API, которые можно полностью применить ко всей серии процессоров AI Ascend.

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

Сначала введите основной код.

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

1. Сначала преобразуйте изображение BGR, считанное в каждом кадре opencv, в изображение RGB и получите масштабный коэффициент масштабирования, сдвиг смещения и коэффициент смещения shift_ratio с помощью ввода модели требуемой ширины и высоты, а также ширины и высоты исходного изображения.

2. Измените размер исходного изображения на новую ширину и высоту, чтобы получить image_, создайте новое изображение со всеми нулями, ширина и высота такие же, как ширина и высота входных данных модели. Заполните image_ изображением со всеми нулями в форме np.array, а все те, которые не входят в диапазон смещения, равны 0, и преобразуйте тип данных изображения в 32-битный тип с плавающей запятой в np.

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

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

​На этапе вывода вызовите функцию execute в acl_model для выполнения модели (полную версию кода смотрите по ссылке в конце статьи), предварительно обработанное изображение будет отправлено в модель YOLOv4, преобразованную в om, и результат вывода будет возвращен.

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

Чтобы разобраться в общем процессе разработки:

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

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

3. Предварительная обработка данных: предварительно обработайте считанные данные изображения, а затем создайте входные данные модели. Сначала изображение во входном видео обрабатывается покадрово, затем оно преобразуется из формата BGR в формат RGB, затем размер изображения изменяется на 416x416 с помощью resize и, наконец, делится на 255 для нормализации, чтобы исключить влияние единичные данные.

4. Обоснование модели: Обоснование модели на основе входных данных построенной модели.

5. Проанализируйте результаты вывода: на основе обнаруженного кадра и достоверности каждого кадра, полученного в результате вывода, используйте NMS для устранения избыточных кадров и нарисуйте новые кадры и категории на выходном изображении.

Таким образом, была разработана простая версия приложения для вождения с искусственным интеллектом, разработанного на основе CANN, и друзья могут непосредственно испытать эффект, щелкнув следующую ссылку!

Уууууууууууууууууууууууууууууууууууууууууу

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

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

Разработанное в настоящее время небольшое приложение с поддержкой искусственного интеллекта для видео с разрешением 1280x720, частотой кадров 29,97 и продолжительностью 16 секунд, чистая продолжительность вывода одного кадра изображения на процессоре Ascend AI составляет 14,19 миллисекунды. но из-за того, что предварительная обработка и постобработка выполняются на ЦП и, следовательно, влияют на общую производительность, которую можно улучшить с помощью:

1. Предварительная и постобработка используют несколько потоков для параллельной обработки в зависимости от количества ЦП и времени обработки, чтобы улучшить использование процессоров Ascend AI.

2. Используйте несколько процессоров Ascend AI для многоканального мышления, чтобы еще больше повысить производительность.

3. Оптимизировать алгоритм кода, как уменьшить переобработку задним блоком обработки от ЦП до сокращения процессора ИИ, как уменьшить

git ee.com/ascend/Сэм П…

4. Используйте инструмент Auto Tune, чтобы настроить модель и сократить время одного вывода модели.

5. Используйте инструмент профилирования для анализа трудоемких операторов в модели и оптимизации операторов.

К участию в улучшении проекта приглашаются небольшие партнеры.Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение в интерактивном gitee!

Суммировать

Сегодня многие автомобили, скоростные поезда и самолеты оборудованы системами помощи при вождении, которые позволяют не только снизить нагрузку на водителей, но и снизить вероятность аварий. По мере того, как все больше и больше отраслей вступают на путь ИИ, Ascend CANN также значительно снизит порог использования предприятий и отдельных разработчиков благодаря своим технологическим преимуществам и создаст максимальную производительность Ascend AI за счет непрерывных инноваций и ускорит внедрение индустрии приложений ИИ Шаг, помогите партнерам идти все дальше и дальше по дороге ИИ в будущее!

Ссылки по теме:

Ссылка на онлайн опыт:Уууууууууууууууууууууууууууууууууууууууууу

Ссылка на источник Gitee:git ee.com/ascend/Сэм П…

Оригинальная статья YOLOv4:АР Вест V.org/ABS/2004.10…

Оригинальная бумага YOLO:АР Вест V.org/PDF/1506.02…

Реализация модели YOLOv4:GitHub.com/Alex Malicious AB/Большой…

Как узнать параметры камеры:woooooooo.scaler.com/video/BV1FQ…

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~