Освоение TensorFlow 2.x Компьютерное зрение: части 3 и 4
Освоение TensorFlow 2.x Компьютерное зрение: части 3 и 4

Нет. 3 Фестиваль:использовать TensorFlow изкомпьютерное зрениеизпередовойвыполнить

существовать本Фестивальсередина,Ты Воляна основанот Предыдущий раздел середина получить понимание и усовершенствовать обновить концепции и научиться использовать Распознавание действий и Обнаружение объектыиз Новые технологии. существовать本Фестивальсередина,ты Воляучиться по-другомуиз TensorFlow такие инструменты, как TensorFlow Hub,TFRecord и TensorBoard。 Вы также Воля научитесь использовать TensorFlow продлить с распознаванием действий В измашинное обучение Модель.

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

  • понять теорию иразвивать Различные методы распознавания действий(Например OpenPose,Stacked HourGlass и PoseNet)изинтуиция(Нет. 9 глава)
  • анализировать OpenPose и Stacked HourGlass код, чтобы углубиться, правда, как построить очень сложную систему из нейронных сетей Также Подключите различные модули, чтобы понять. Надеюсь, на этот раз вы сможете научиться строить свою собственную сложную сеть (Нет. 9 глава)
  • использовать TensorFlow PoseNet использовать веб-камеру для распознавания движения (Нет. 9 глава)
  • учитьсяразличные типыиз Обнаружение объекты, например SSD,R-FCN,Дажебыстрыйиз R-CNN и MaskR-CNN(Нет. 10 глава)。
  • учитьсякаксуществовать TFRecord середина Конвертировать изображение и файл аннотаций для импорта TensorFlow Обнаружение объектов API(Нет. 10 глава)
  • учитьсякакиспользовать Собственныйизизображение в будущемиспользовать TensorFlow Обнаружение объектов API Модель обучение и верно его обоснование (Нет. 10 глава)
  • учитьсякакиспользовать TensorFlow Центр Обнаружения объектова такжекакиспользовать TensorBoard Визуализациятренироватьсярасписание(Нет. 10 глава)
  • учитьсяи Обнаружение объектов Связанныйиз IOU,ROI,RPN и ROI верновместе(Нет. 10 глава)。
  • учитьсякакиспользовать Mask R-CNN верная сегментация изображений (Net. 10 глава)
  • учитьсядругойиз OpenCV а такжена на основе изверно похоже на метод обнаружения, и Воля использует В видеофайлы (Net. 10 глава)

В этот раздел входят следующие главы:

  • "Нет. Глава 9", "Использовать Многозадачное глубокое обучение на основе распознавания действий"
  • “Нет. 10 глава",“использовать R-CNN,SSD и R-FCN руководить Обнаружение объектов”

9. Распознавание действий с использованием многозадачного глубокого обучения

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

本главаподробный Обзор ХОРОШОИспользуйте ВОценка позы Распознавание человеческих действий ключевыми методами. Распознавание действий Метод оценки позы Воли на основе Ускорение на основе распознавания активности такжена на основе видео и трех измерений облака точек распознавания движения. Теория Воляпрохожденияиспользовать TensorFlow 2.0 извыполнить пояснение, которое будет дополнено.

Эта глава разделена на четыре части. Тройка лидеров обсуждается индивидуально Воценка позы человекиз трех разных методов и Нет.четыре индивидуальных, каждый из которых предполагает распознавание действий:

  • Оценка позы человека – OpenPose
  • Оценка позы человека – модель сложенных песочных часов
  • Оценка позы человека - PoseNet
  • Распознавание действий различными методами

Оценка позы человека – OpenPose

Оценка позы человекадаглубокая нейронная сеть добилась больших успехов в другой индивидуальной области и быстро развивалась в последние годы. существоватьнаконец Несколькоглавасередина,насучитьсяприезжатьглубокая нейронная Сеть сочетает использование линейных (свертка) и нелинейных (ReLU) операций для прогнозирования выходных данных с учетом набора входных изображений. существует оценка позы в случае, когда предоставляется набор входных изображений, глубокая нейронная сеть прогнозирует совместные позиции. изображениесерединаизотметкаданныенабор Зависит отдельная композиция в ограничительной рамке,Долженограничивающая рамка确КонечноизображениесерединаизNиндивидуальныйлюдии КаждыйлюдиK关Фестиваль。 По мере изменения позы направление сустава также будет меняться, поэтому следует наблюдать за положением сустава в фазе, чтобы охарактеризовать различные положения. существоватьк Внизкаждый Фестивальсередина,нас Воляописывать Даспользоватьиздругойоценка позыметод。

Теория OpenPose

OpenPose да Нет. Одна индивидуальная игла верное изображение или видео серединаиз многоиндивидуальныйлюдииз системы оценки позы с открытым исходным кодом в режиме реального времени. это в основном Зависит отУниверситет Карнеги-МеллонCMU)изстуденти Преподаватели и сотрудникиразвивать。 Название статьи «OpenPose: использовать частичные поля привязки для многопользовательской игры в реальном времени» 2D Оценка осанки» Zhe Cao,Gines Hidalgo,Tomas Simon,Shih-En-Wei и Yaser Sheikh。 ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумага.

Обратите внимание, что OpenPose первое появлениесуществовать CVPR 2017 середина под названием «использовать частичные поля привязки для многопользовательской игры в реальном времени». 2D оценка позы》,Можетсуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。 Далее 2018 Статья 2017 г. «OpenPose: Частичные поля сходства» Многопользовательская игра в реальном времени 2D Pose Estimation», сеть была дополнительно улучшена.

Эта статьяиз Основные выводы заключаются в следующем.Вниз:

  • сетьизвходить Зависит от VGG-19 Модельиз前 10 Композиция слоев,Используйте Вгенерироватьодин Группакарта объектовF。 На рисунке ниже показано OpenPose сетьиз Архитектура:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-hP22sIPK-1681784662627) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/2046a738-43a7-4f9b-9500-f98202f7a431.png)]

  • OpenPose Карта объектов сети Воля как для ввода, так и для Зависит от CNN издваиндивидуальный Сценическая композиция:Нет.одинэтаписпользоватьT[p]предсказание числаЧастичные поля сходстваPAF) Количество итераций,и Нет.дваэтапнокT[c]Количество итерацийпредсказывать Уверенностькартина. Зависит от Следующие два индивидуальных ключевых показателя, 2018 г. Предложено в году OpenPose Модельдаверно 2017 Предложено в году Первые дни Модельизобщийулучшение тела:
  • проходить Первыйвычислить PAF, а затем вычисление карты достоверности может сократить время вычислений вдвое. Это разные вещи, которые одновременно вычислить такжеиспользовать3 x 3Вместо этого свертка3 x 3свертка。
  • Улучшение PAF Оценка (2018 г.) Статья 2018 г.) применить увеличение глубины нейронной сети для улучшения процедур. PAF(2017 год) из карты достоверности, от и повышения точности.
  • существовать Внизодинэтапсередина,Воля前одинэтапизпредсказыватьи原始изображениеособенностьFслитьсуществоватьодинрост,кдляизображениесерединаизвселюдипроизвести дваизмерение Ключевые моментыпредсказывать。 существуют оценки прогнозов, картографирование основных характеристик и PAF Функция потерь применяется между этапами и в конце. Повторите этот процесс несколько итераций, чтобы получить последнюю карту объектов проживания. PAF Обнаружение。
  • использоватьна основасобственный векторизподход снизу вверх,Независимо от того, сколько людей имеет образ середина,Все Даыполнитьвысокий Точность。
  • Карта достоверности представляет собой вероятность того, что определенная особенность (часть тела) может быть расположена в любом заданном пикселе. С другой стороны, признаки карты представляют собой CNN данного слоя и данного фильтра из выходного изображения.
  • сеть Архитектура Зависит от Несколькоиндивидуальный1 x 1и1 x 1ядерныйкомпозиция。 Каждыйиндивидуальный1 x 1ядерныйизвыходдасоединятьиз。
  • OpenPose да Нет.одининдивидуальный实часмноголюдисистема,использоватьтрииндивидуальныйнезависимыйиз CNN кусок Обнаружение 135 индивидуальный Ключевые моменты:(a)Телоиноги Обнаружение,(b)руки Обнаружениеи(c)люди Лицо Обнаружение。
  • существовать Обнаружение объектовобсуждать(“Нет. 5 Глава», «Архитектура и модель нейронной сети» и «Нет. 7 глава",“использовать YOLO руководить Обнаружение объектов»)середина, мы находим, и такие как SSD или YOLO Одиночный метод Обнаружения эквивалентен Сравнивать, например: Faster R-CNN Подобные методы предложения регионов могут привести к более высокой точности, но на более низких скоростях. Аналогично, верно ВОценка позы человека,подход снизу вверхиподход снизу По сравнению с вверх, Сравнивать имеет более высокую точность, но меньшую скорость. подход сверху внизсоответственнодля Каждыйиндивидуальный Зависит от Люди составляют рамки, чтобы предоставить изображения. подход снизу вверхпредоставил Зависит отодининдивидуальныйлюдиизмногоиндивидуальный Композиция ограничивающей рамкиизвсеиндивидуальныйизображение,отипроизводить Понятноодининдивидуальныйменьшее разрешениеизлюдиизизображение。

существовать 2019 Год,Открытая поза изавтора Также Некоторые другие люди (Джинес Hidalgo,Yaadhav Raaj,Haroon Idrees,Donglai Xiang,Hanbyul Joo,Tomas Simon1 и Yaser Шейх) улучшилось OpenPose из Точность и Обнаружение времени. HTG0] Оценка позы всего тела по одной сети. ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Эта статья。

Основные функции заключаются в следующем:

  • Нетнуждаться重复руководитьрукаи Лицопоза Обнаружениеизсеть,поэтомуи OpenPose Взаимно Сравнивать,этоизскорость度Дажебыстрый。 многозадачное обучениеMTL)Используйте Вот Четыреиндивидуальныйдругой Задачасерединатренироватьсяодининдивидуальный Оценка всего тела Модель:Тело,лицо,рукаиступня Обнаружение。
  • проходитьсоединятьлицо,Карта уверенности «рука и нога» может повысить уверенность в ключевых точках. Использование этого метода.,Местосвязанный键точка Всесуществовать同один Модель Архитектура Внизопределение。
  • сеть Архитектураизвходное Разрешение и количество сверточных слоев было увеличено для улучшения общей производительности.
  • верно ВЧтосерединатолькоодининдивидуальныйлюдиизизображение,Обнаружениечас间выход Сравнивать OpenPose быстрый 10%。

Узнайте о коде OpenPose

CMU использовать OpenPose модель, в то время как OpenCV существовать Чтоновыйизглубокая нейронная сетьDNN)рамкасерединанабор成Понятно经过предварительнотренироватьсяиз OpenPose Модель. Можно из следующего GitHub Страница загружает весь блок кода. Должен Модельиспользовать TensorFlow пример вместо OpenPose инициал автораиспользоватьиз Caffe Модель,Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。

Даспользоватьк Вниз Заказсуществовать Терминалсерединаосуществлять OpenCV из OpenPose Код:

Язык кода:javascript
копировать
python openpose.py --input image.jpg

начатьиспользовать PC иссеть веб-камеру,Толькосуществовать Терминалсерединатипк Внизсодержание:

Язык кода:javascript
копировать
python openpose.py

На рисунке ниже показал изображения футболиста Пинверно из OpenPose выполнить:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-6mrHhLrx-1681784662628) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/512124c8-371f-4a6a-aa7f-d6197ff36961.png)]

Этот алгоритм чувствителен к фоновым изображениям,нравитьсяк Внизбейсболистизизображение Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-hji8c2vJ-1681784662628) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/d4e4d303-353f-46ae-94b9-6d6e1c91b18b.png)]

После удаления фона алгоритм делает прогнозы очень хорошо.

让нас Приходитьсмотретьодин Внизкодиз Основные функции。 Мы определим ключевые моменты, а затем построим прогнозную модель:

  1. Вход модели 18 индивидуальный Тело部Кусочекипозаверно,нравиться Вниз Место示:
Язык кода:javascript
копировать
BODY_PARTS = { "Nose": 0, "Neck": 1, "RShoulder": 2, "RElbow": 3, "RWrist": 4,"LShoulder": 5, "LElbow": 6, "LWrist": 7, "RHip": 8, "RKnee": 9,"RAnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "REye": 14,"LEye": 15, "REar": 16, "LEar": 17, "Background": 18 }

POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElbow"],["RElbow", "RWrist"], ["LShoulder", "LElbow"], ["LElbow", "LWrist"],["Neck", "RHip"], ["RHip", "RKnee"], ["RKnee", "RAnkle"], ["Neck", "LHip"],["LHip", "LKnee"], ["LKnee", "LAnkle"], ["Neck", "Nose"], ["Nose", "REye"],["REye", "REar"], ["Nose", "LEye"], ["LEye", "LEar"] ]
  1. ловить Вниз Приходить,использоватьк Внизкодпроходить TensorFlow выполнить OpenPose:
Язык кода:javascript
копировать
net = cv.dnn.readNetFromTensorflow("graph_opt.pb")

использоватьtf-pose-estimationсуществовать TensorFlow реализовано в OpenPose。 TensorFlow/model/graphиздействительный GitHub страница Можетсуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。 пожалуйста, обрати внимание,Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать MobileNetV1 из Описания.

  1. ловить Вниз Приходить,использоватьcv.dnn.blobFromImageверноизображениеруководитьпредварительноиметь дело с(осуществлять减法и Увеличить):
Язык кода:javascript
копировать
net.setInput(cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (127.5, 127.5, 127.5), swapRB=True, crop=False))
  1. ловить Вниз Приходить,насиспользоватьout = net.forward()предсказывать Модельизвыход,иполучать MobileNetV1 Перед выводом 19 индивидуальныйэлемент:
Язык кода:javascript
копировать
out = out[:, :19, :, :] .
  1. к Внизкодвычислитьтепловая карта,использовать OpenCV изminMaxLoc函число查попытаться найтиточкаценить,исуществовать Что Уверенностьвысокий Впорогдобавить вточка. Тепловая карта представлена ​​цветом изданных карт:
Язык кода:javascript
копировать
for i in range(len(BODY_PARTS)):
    # Slice heatmap of corresponding body's part.
    heatMap = out[0, i, :, :]
    # Originally, we try to find all the local maximums. To simplify a     sample
    # we just find a global one. However only a single pose at the same     time
    # could be detected this way.
    _, conf, _, point = cv.minMaxLoc(heatMap)
    x = (frameWidth * point[0]) / out.shape[3]
    y = (frameHeight * point[1]) / out.shape[2]
    # Add a point if it's confidence is higher than threshold.
    points.append((int(x), int(y)) if conf > args.thr else None)
  1. к Внизкодкусоксуществовать原始изображениесерединаиспользоватьcv.lineиcv.ellipseпоказывать Ключевые моменты:
Язык кода:javascript
копировать
for pair in POSE_PAIRS:
    partFrom = pair[0]
    partTo = pair[1]
    assert(partFrom in BODY_PARTS)
    assert(partTo in BODY_PARTS)
    idFrom = BODY_PARTS[partFrom]
    idTo = BODY_PARTS[partTo]
    if points[idFrom] and points[idTo]:
       cv.line(frame, points[idFrom], points[idTo], (0, 255, 0), 3)
       cv.ellipse(frame, points[idFrom], (3, 3), 0, 0, 360, (0, 0, 255),        cv.FILLED)
       cv.ellipse(frame, points[idTo], (3, 3), 0, 0, 360, (0, 0, 255),         cv.FILLED)

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

Оценка позы человека – модель сложенных песочных часов

Модель сложенных песочных часов состоит из Alejandro Newell,Kaiyu Yang и Jia Deng В 2016 Годсуществоватьихизбумага“Используйте ВОценка позы Китайские тяжелые песочные часы, полностью электрические »мы разработаем его посередине. Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Должен Модельиз Подробности.

Внизкартинаиллюстрировать Понятно Должен Модельиз Архитектура:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-pzIXJtXB-1681784662629) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/7fc3ae51-e449-4258-864b-070ab283effc.png)]

Должен Модельиз Основные функции заключаются в следующем:

  • проходить Волямногоиндивидуальныйстопка песочных часовсуществоватьодинрост,Можетсуществоватьвсе刻度начальство重复руководитьс Внизиначальствоисначальствои Внизизиметь дело с。 Метод приводит к возможности проверки предполагаемых особенностей всего изисходного изображения.
  • Долженсетьиспользоватьмногоиндивидуальныйсверткаиодининдивидуальныймаксимальный слой пула,Это приводит к более низкому конечному разрешению.,Затем происходит повышающая дискретизация для увеличения разрешения.
  • существовать Каждыйиндивидуальныймаксимальный шаг объединениясередина,параллельный Вхозяинсетьдобавить Другие извилины.
  • В результате Воля генерирует тепловую карту, указывающую вероятность появления стыка в каждом индивидуальном пикселе.
  • Эта архитектура полностью использует остаточную модель. Каждый индивидуальный остаток состоит из трех слоев:
  • 1 x 1 Conv2D,Может Воляразмерот 256 уменьшатьприезжать 128 ряд
  • 3 x 3 Conv2Dиз 128 индивидуальныйряд
  • 1 x 1 Conv2D,Может Воляразмерот 128 индивидуальныйряд Увеличиватьприезжать 256 индивидуальныйряд
  • Должен Архитектураот7 x 7свертканачинать,шагатьдля 2,Волявходитьизображениеот7 x 7приноситьприезжать64 x 64,от И может эффективно использовать GPU Память.
  • пролетдля 2 измаксимум2 x 2слить Используйте Вверноизображениеруководить Внизвыборка。 После максимального пула каждого отдельного человека он будет добавлен в, затем существуем, повышаем выборку, приезжаем в исходный размер, а затем добавляем в Вернитесь в основной блок.
  • Наконец из основной надписи Зависит отдваиндивидуальный1 x 1 Conv2Dкомпозиция。
  • Самая эффективная изда Воля — восемь отдельных модулей песочных часов, сложенных вместе. Каждыйиндивидуальный Песочные часы模кусоксуществовать Каждыйиндивидуальныйразрешение Вниз Все有одининдивидуальный残差模кусок。
  • Должен Модельбольшойонуждатьсяруководить 40,000 итерации, чтобы добраться до места проживания 70% Выше точности.
  • тренироватьсяпроцесснуждаться FLIC о 5,000 изображения (с Втренироватьсяиз 4,000 Чжан и использует В для проверки 1,000 Чжан)и Юн В MPII из 40,000 Образец ленты с пометкой из (с Втренироватьсяиз 28,000 Чжан и использует В для проверки 12,000 открыть). FLIC и MPII дадваиндивидуальныйоценка позыданныебиблиотека. FLIC Зависит отот фильм серединагетиз 5003 изображения (с Втренироватьсяиз 3987 образ и тест с Визом 1,016 изображения) и MPII Зависит от 40,000 индивидуальныйприноситьотметкаизобразец(Используйте Втренироватьсяиз 28,000 образ и тест с Визом 12,000 Чжан) состав.
  • Долженсетьсуществовать Torch 7 начальстворуководить Понятнотренироваться,скорость обучениядля2.5e-4。 существовать 12 GB из NVIDIA Titan X GPU начальстворуководитьтренироватьсябольшойонуждаться 3 небо.

Узнайте о модели «песочные часы»

Песочные часы Модельсуществовать MPII Набор человеческих жестов позволил достичь самых современных результатов во всех разделах, но это произошло за счет ресурсоемкой пропускной способности сети. Это да Зависит от ВКаждый Большое количество рядов слоев затрудняет тренироваться. Чжан Фэн, Чжу Сятянь и Mao существоватьвопросдля“быстрыйскоростьлюдиоценка позы тела”избумагасередина,Воля FastPose ДистилляцияFPD)представлять CVPR 2019。 По сравнению с моделью песочных часов, FPD Можно сделать вывод, что выборка является более быстрой и экономичной и з Модель, при этом достигая той же производительности из Модели, что и приезжать. Основные функции заключаются в следующем:

  • Можно предсказать четыре песочных часа (а не восемь индивидуально). 95% из Модель точности.
  • от 256 индивидуальныйряд Внизуронитьприезжать 128 индивидуальный ряд приведет только к уменьшению Точности. 1%。
  • Сначала выполните тренировку на большой Модели песочных часов (также называемой Моделью позы учителя). Затем существующий учитель представляет Модельиз с помощью тренироваться целевых учеников Модель (Четыреиндивидуальный песочные часы, 128 отдельных строк). Определим функцию потерь при перегонке.,Чтобы от учителей Модельсередина извлекали знания, а Воля передавали их ученикам Модель.
  • Функция потерь при дистилляции выглядит следующим образом:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-wosY1zwT-1681784662629) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/d44ab73e-308f-4e9b-915c-6c0299867377.png)]

существоватьздесь,Kда关Фестивальобщийчисло,L[pd]да FPD из Прогнозированная совместная карта доверия, m[ks]дастудент Модельпредсказыватьиз Нет.kиндивидуальный关Фестивальизкарта уверенности,иm[kt]даучитель Модельпредсказыватьиз Нет.kиндивидуальный关Фестиваль。

  • общийтелопотеря函числонравиться Вниз:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-kUPHtwtJ-1681784662629) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/12c75f63-6358-4566-9007-1f3bcfbf9dec.png)]

Здесь, L[fpd]давсетело FPD потеря函число,L[gt]да Используйте Вреальная ситуацияотметкаизкарта уверенности,иMдамассафункция.

  • использовать функции потерь, описанные ранее, тренировать учителя Модели целевой модели соответственно.

Можетсуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Должен Модельиз Keras выполнить.

пожалуйста, обрати внимание,Внизодинчастьизглазиздаподробныйобъяснять Песочные часысетьизкод. Эта индивидуальная сложная модель нейронной сети, идея: как только вы освоите Этикод, вы сможете самостоятельно построить индивидуальную очень сложную модель нейронной сети. Мы не будем существовать GitHub На странице подробно описано, как запустить код.

существовать Внизодинчастьсередина,Мы Воля опишем архитектуру Модельиз и подробно ее объясним.

Кодирование модели песочных часов

На изображении ниже показан блок кода модели:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-9CZrXazN-1681784662630) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/8e1b3ef1-f05d-4128-99fc-3d682e50f51c.png)]

Давайте на минутку разберем предыдущую картинку.,потому чтодлянас Волясуществоватьк Внизчастьсерединаверно Чторуководить编码:

  • Изображение переднего модуля Воля сделано для ввода номера иряда (Каждый слой из Нет. двойной размер,Первые два индивидуальных размера (ширина и высота).
  • Изображение проходит через разные слои переднего модуля, а последний индивидуальный модуль соединяет левую половину.
  • левая половинаиметь Четыреиндивидуальный瓶颈回旋кусок-f1,f2,f4иf8,Каждыйиндивидуальныйкусоксоответственноиметь 1、1/2、1/4 и 1/8 изResolution. нравиться果查смотреть Архитектуракартина,Просто существует стек из индукции песочных часов,Это должно быть ясно.
  • Каждыйиндивидуальныйкусокизнаконецодинслой–f1,f2,f4иf8–Создайтеверноотвечатьизкарта объектов,Прямо сейчасlf1,lf2,lf4иlf8
  • карта объектовlf1,lf2,lf4иlf8соединятьприезжатьправая половина。 Долженкусокизвыходдляrf1
  • Нижний слой также отлевый половинасоединятьприезжатьlf8карта объектов。
  • Голова быстросоединятьприезжатьrf1。 общий共有дваиндивидуальный Голова быстро。 Каждыйиндивидуальныйиспользовать1 x 1свертка。

让нассмотретьодин Вниздругойизкодкусок。

argparseСумка

Python Заказ ХОРОШО参число(проходить Терминалвходить)Разрешить программупроходитьparser.add_argumentЗаказполучатьсвязанныйнервсетьдействоватьиздругойинструкция。 Можеткотargparse函число Сумкасерединаимпортировать。

На рисунке ниже показано 16 种другойиздобрый:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-uP4EvFCu-1681784662630) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/96a6b1d6-f6f7-4b80-8190-2f2d3a00c181.png)]

Изображение вышеиспользоватьизкодкусокнравиться Вниз:

Язык кода:javascript
копировать
0 - r ankle, 1 - r knee, 2 - r hip, 3 - l hip, 4 - l knee, 5 - l ankle, 6 - pelvis, 7 - thorax, 8 - upper neck, 9 - head top, 10 - r wrist, 11 - r elbow, 12 - r shoulder, 13 - l shoulder, 14 - l elbow, 15 - l wrist

к Внизкодимпортироватьargparse模кусок,TensorFlow и HourglassNet Модель. Он доступен в двух типах: по выбору пользователя: для небольших сетей. 128 индивидуальныйряди Используйте Вбольшой型сетьиз 256 каналы:

Язык кода:javascript
копировать
import argparse
import os
import tensorflow as tf
from keras import backend as k
from hourglass import HourglassNet
parser.add_argument("--resume", default=False, type=bool, help="resume training or not")
parser.add_argument("--resume_model", help="start point to retrain")
parser.add_argument("--resume_model_json", help="model json")
parser.add_argument("--init_epoch", type=int, help="epoch to resume")
parser.add_argument("--tiny", default=False, type=bool, help="tiny network for speed, inres=[192x128], channel=128")
args = parser.parse_args()
if args.tiny:
    xnet = HourglassNet(num_classes=16, num_stacks=args.num_stack, num_channels=128, inres=(192, 192),outres=(48, 48))
else:
xnet = HourglassNet(num_classes=16, num_stacks=args.num_stack, num_channels=256, inres=(256, 256),outres=(64, 64))
if args.resume:
    xnet.resume_train(batch_size=args.batch_size, model_json=args.resume_model_json,model_weights=args.resume_model,init_epoch=args.init_epoch, epochs=args.epochs)
else:
xnet.build_model(mobile=args.mobile, show=True)
xnet.train(epochs=args.epochs, model_path=args.model_path, batch_size=args.batch_size)

Тренировочная сеть «песочные часы»

Описана сеть песочных часов. существовать本Фестивальсередина,нас Воляобъяснятьтренироватьсясетьпозадиизкод.

нравиться果ты想тренироваться Собственныйиз Песочные часысеть,пожалуйстав соответствии с В соответствии сэтотиндивидуальныйстраницаначальствоизиллюстрироватьруководитьдействовать。

Тренировочная сеть «песочные часы»изкоднравиться Вниз:

Язык кода:javascript
копировать
def build_model(self, mobile=False, show=False):
if mobile:
   self.model = create_hourglass_network(self.num_classes, self.num_stacks, self.num_channels, self.inres, self.outres, bottleneck_mobile)
 else:
    self.model = create_hourglass_network(self.num_classes, self.num_stacks,self.num_channels, self.inres, self.outres, bottleneck_block)
# show model summary and layer name
  if show:
     self.model.summary(def train(self, batch_size, model_path, epochs):
      train_dataset = MPIIDataGen("../../data/mpii/mpii_annotations.json", "../../data/mpii/images"
        inres=self.inres, outres=self.outres, is_train=True)
#here MPIIDataGen is a data generator function (not shown here) - it takes in json file and the images to preapre data for training similar to how we use image data generator in Chapter6.
        train_gen = train_dataset.generator(batch_size, self.num_stacks, sigma=1, is_shuffle=True,rot_flag=True, scale_flag=True, flip_flag=True)
csvlogger = CSVLogger(os.path.join(model_path, "csv_train_" + str(datetime.datetime.now().strftime('%H:%M')) + ".csv"))
modelfile = os.path.join(model_path, 'weights_{epoch:02d}_{loss:.2f}.hdf5')
checkpoint = EvalCallBack(model_path, self.inres, self.outres)
xcallbacks = [csvlogger, checkpoint]
self.model.fit_generator(generatepochs=epochs, callbacks=xcallbacks)

Переднийизкоддакакнастраиватьнервсетьруководитьтренироватьсяиз Типичный пример。 нассуществовать“Нет. 6 Глава", "Использовать трансферное обучение из визуального поиска"серединаверно Это представлено подробно. Основные функции заключаются в следующем:

  • create_hourglass_networkдахозяинхотеть Модель.
  • train_datasetиспользовать MPIIDatagen,этотда Используйте Ввходитьданныеиз外部模кусок。
  • train_genвходитьtrain_datasetи放большойизображение。
  • это Включатьперезвонитьиисследоватьточка,поэтомунас Можетксуществоватьтренироватьсяпроцесссерединаучиться Модельизвнутреннее состояние。
  • model.fit_generatorначинатьтренироватьсяпроцесс。

Создайте сеть песочных часов

Модель «Песочные часы»: «Модель фактического восстановления Волясуществовать» объясняется здесь. Используйте Вэтотизкодсказатьдляcreate_hourglass_network。 Как упоминалось ранее, код состоит из следующих компонентов.

Интерфейсный модуль

к Внизкодописывать Понятно Интерфейсный модуль:

Язык кода:javascript
копировать
def create_front_module(input, num_channels, bottleneck):
    _x = Conv2D(64, kernel_size=(7, 7), strides=(2, 2), padding='same',         activation='relu', name='front_conv_1x1_x1')(input)
    _x = BatchNormalization()(_x)
    _x = bottleneck(_x, num_channels // 2, 'front_residual_x1')
    _x = MaxPool2D(pool_size=(2, 2), strides=(2, 2))(_x)
    _x = bottleneck(_x, num_channels // 2, 'front_residual_x2')
    _x = bottleneck(_x, num_channels, 'front_residual_x3')
    return _x
front_features = create_front_module(input, num_channels, bottleneck)

Как упоминалось ранее, он состоит из Conv2D Состоит из блоков, всего имеется 64 индивидуальныйфильтр,фильтрбольшой小для7 x 7,шагатьдля 2。Долженкусокизвыходдля(None, 32, 32,6)。 Следующие несколько строк посвящены пакетной нормализации, узкому месту и максимальному пулу. Определим узкое место блока.

левая половина

левая половинаизкоднравиться Вниз:

Язык кода:javascript
копировать
def create_left_half_blocks(bottom, bottleneck, hglayer, num_channels):
# create left half blocks for hourglass module
# f1, f2, f4 , f8 : 1, 1/2, 1/4 1/8 resolution
hgname = 'hg' + str(hglayer)
f1 = bottleneck(bottom, num_channels, hgname + '_l1')
_x = MaxPool2D(pool_size=(2, 2), strides=(2, 2))(f1)
f2 = bottleneck(_x, num_channels, hgname + '_l2')
_x = MaxPool2D(pool_size=(2, 2), strides=(2, 2))(f2)
f4 = bottleneck(_x, num_channels, hgname + '_l4')
_x = MaxPool2D(pool_size=(2, 2), strides=(2, 2))(f4)
f8 = bottleneck(_x, num_channels, hgname + '_l8')
return (f1, f2, f4, f8)

Предыдущий исходкод выполняет две отдельные операции:

  • этоопределениеразрешениедля1, ½, ¼, and 1/8изфильтр系число(f1, f2, f4, and f8)
  • верно ВКаждыйиндивидуальныйфильтркусок,этопроходитьиспользовать 2 из Фильтр 2 из диапазона применяет максимальное объединение для генерации окончательного результата.

ловить Вниз Приходить,Вниз лапшаизкод итерации 0 приезжать 2. Создайте три блока фильтров для каждого разрешения фильтра:

Язык кода:javascript
копировать
for i in range(2):
head_next_stage, head_to_loss = create_left_half_blocks (front_features, num_classes, num_channels, bottleneck, i)
outputs.append(head_to_loss)

соединение слева направо

Если вы просматриваете "Кодирование модели песочных Раздел часов начинается с изображения, вы заметите два отдельных блока «Зависит» слева и справа. отconnect_left_to_rightкусоксоединять。 Используйте ВВолялевый侧кусоксоединятьприезжать右侧кусокизкоднравиться Вниз:

Язык кода:javascript
копировать
def connect_left_to_right(left, right, bottleneck, name, num_channels):
'''
:param left: connect left feature to right feature
:param name: layer name
:return:
'''
_xleft = bottleneck(left, num_channels, name + '_connect')
_xright = UpSampling2D()(right)
add = Add()([_xleft, _xright])
out = bottleneck(add, num_channels, name + '_connect_conv')
return out

Уведомление,Каждыйиндивидуальный右кусокдапроходитьначальствовыборкагенерироватьиз,и被добавить вприжать левый блок для генерации окончательного результата. существовать Переднийизкодсередина,_xleftпоказыватьлевый侧кусок,_xrightпоказывать右侧кусок,add函число Волядва ВОЗВзаимно加。

правая половина

右侧кусокизкоднравиться Вниз:

Язык кода:javascript
копировать
def create_right_half_blocks(leftfeatures, bottleneck, hglayer, num_channels):
lf1, lf2, lf4, lf8 = leftfeatures
rf8 = bottom_layer(lf8, bottleneck, hglayer, num_channels)
rf4 = connect_left_to_right(lf4, rf8, bottleneck, 'hg' + str(hglayer) + '_rf4', num_channels)
rf2 = connect_left_to_right(lf2, rf4, bottleneck, 'hg' + str(hglayer) + '_rf2', num_channels)
rf1 = connect_left_to_right(lf1, rf2, bottleneck, 'hg' + str(hglayer) + '_rf1', num_channels)
return rf1

существовать Переднийизкодсередина,lf8, lf4, lf2, and lf1иметьлевая функция。 Взаимноотвечатьиз右картинакусокизособенностьrf8, rf4, rf2, and rf1дапроходить Волялевыйприезжать右瓶颈картинакусокотвечатьиспользоватьприезжать Каждыйиндивидуальныйлевыйкартинаособенностьигенерироватьиз。 Следующий код выполняет итерацию для каждого левого диапазона. 0 приезжать 2 чтобы применить эту логику:

Язык кода:javascript
копировать
for i in range(2):
head_next_stage, head_to_loss = create_right_half_blocks (front_features, num_classes, num_channels, bottleneck, i)
outputs.append(head_to_loss)

Голова быстро

Голова быстроизкоднравиться Вниз:

Язык кода:javascript
копировать
def create_heads(prelayerfeatures, rf1, num_classes, hgid, num_channels):
# two head, one head to next stage, one head to intermediate features
head = Conv2D(num_channels, kernel_size=(1, 1), activation='relu', padding='same', name=str(hgid) + '_conv_1x1_x1')(rf1)
head = BatchNormalization()(head)
# for head as intermediate supervision, use 'linear' as activation.
head_parts = Conv2D(num_classes, kernel_size=(1, 1), activation='linear', padding='same',name=str(hgid) + '_conv_1x1_parts')(head)
# use linear activation
head = Conv2D(num_channels, kernel_size=(1, 1), activation='linear', padding='same',name=str(hgid) + '_conv_1x1_x2')(head)
head_m = Conv2D(num_channels, kernel_size=(1, 1), activation='linear', padding='same',name=str(hgid) + '_conv_1x1_x3')(head_parts)
head_next_stage = Add()([head, head_m, prelayerfeatures])
return head_next_stage, head_parts

Голова имеет два основных блока.,Каждыйиндивидуальныйкусок Зависит отодининдивидуальный1 x 1 Conv2Dфильтркомпозиция。 Его использование активирует слой и заливку. Обзор для,Схема архитектуры из «Песочные часы» представлена ​​в разделе «Оценка позы человека-Модель песочных часов».,кучитьсяк Внизмежду компонентамиизсоединять:

  • Входить Внизодининдивидуальныйэтап
  • Перейти к характеристикам номера середина

к Внизлогика Воля Голова быстроотвечать Используйте В 0 приезжать 2 из Каждый индивидуальный диапазон, соответственно, должен быть в левом блоке и правом блоке:

Язык кода:javascript
копировать
for i in range(2):
    head_next_stage, head_to_loss = create_head_blocks (front_features, num_classes, num_channels, bottleneck, i)
    outputs.append(head_to_loss)

тренировочные песочные часы

Песочные часысетьсуществовать FLIC был обучен на наборе данных о позах человека, который содержит 5,000 изображения (с Втренироватьсяиз 4,000 и Протестируйте с помощью Виз 1,000)ииметь 40,000 Картинка (с Втренироватьсяиз 28,000 и Протестируйте с помощью Виз 12,000)из MPII Набор данных позы человека.

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

существоватьбольшойо 20,000 тренироваться итерациями середина, поэтому средняя точность такая же высокая, как и прибытие 70%, максимальная точность примерно 80%。

приезжать В данный момент для, мы обсудили OpenPose Оценка позы по методу сложенных песочных часов. существовать Внизодин Фестивальсередина,Мы с Воля обсуждаем PoseNet.

Оценка позы человека - PoseNet

TensorFlow Опубликовано PoseNet Модель, Модель с Виспользовать браузер Обнаружение позы человека. это Можетк Используйте Водининдивидуальныйпозаимногоиндивидуальныйпоза。

PoseNet на основе Google издва篇бумага. один种использоватьподход сверху вниз и еще один использоватьподход снизу вверх。

подход сверху вниз

Нет.один篇бумагаиз标вопросдля《существовать野外руководить精确измноголюдиоценка позы》,Зависит от George Papandreou,Tyler Zhu,Nori Kanazawa,Alexander Toshev,Jonathan Tompson,Chris Bregler и Kevin Murphy писать. ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумага.

Это что-то вроде Зависит отначальствои Внизиздваэтапметод:

  • использоватьприносить有 ResNet-101 магистральная сеть Faster R-CNN Определить координаты ограничивающего прямоугольника(x, y, w, h)。 существовать“Нет. 5 Глава", "Нейронная сетевая архитектура и Модель" середина представила более быстрый вариант R-CNN и ResNet,носуществовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN руководить Обнаружение «объекты»середина Волясуществовать фактические ресурсысерединаиспользовать их. Эта классификация предназначена только для верных людей. настраиватьвсе返回извсеограничивающая рамка,使Чтоиметьзафиксированныйизвертикально и горизонтально Сравнивать,Затем Воля Что裁剪для353 x 257
  • использовать ResNet-101 Предполагаемая позиция Каждыйиндивидуальный в пределах рамки излюдииз 17 индивидуальный Ключевые моменты,использовать3 x 17выходзаменятьнаконецодинслой. Уже использую классификацию и регрессию в сочетании с методом, чтобы определить местонахождение человеческого тела по каждому индивидуальному положению. 17 индивидуальная позиция ключевой точки, серединаиз Каждыйиндивидуальный из вектора смещения или расстояния между позициями. Каждый 17 индивидуальную ключевую точку вычислить, если расстояние мало В радиусе вероятности, от получается 17 индивидуальныйгорячийкартина. использовать Sigmoid 激活函числотренироватьсяиметь 17 индивидуальныйтепловая картаиз ResNet-101 Модель.

подход снизу вверх

Нет.два篇бумагаиз标вопросдля《PersonLab:использоватьс Внизиначальствоиз,на на основе частичного геометрического встраивания. Модельиз оценки позы человека и сегментации экземпляров 》, Зависит от Нет. Статья, написанная многими одними и теми же авторами; Они есть George Papandreou,Tyler Zhu,Chen-Chieh Chen,Spyros Gidaris,Jonathan Tompson и Kevin Murphy。 ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумага.

существуюттакие безрамочные из,подход снизу вверхсередина,делать ВОЗиспользоватьсверточная нейронная сеть Обнаружение отдельных отдельных ключевых точек и их фаз Вер Смещение, сгруппированных по ключевым точкам Воли для из поз Пример. Кроме того,дескрипторы геометрического внедрения предназначены для определения сегментации людей. Должен Модельиспользовать ResNet-101 и ResNet-152 архитектура для обучения.

Как и подход «сверху вниз», 32 Размер пикселя по радиусу, верно должен В 17 индивидуальный Ключевые моментысерединаиз Каждыйодининдивидуальный。 Тогда, если изображение серединаиз пространственного положения существует положение ключевой точки из радиуса, то с вероятностью тепловой карты 1 определение 17 отдельная независимая от задачи бинарной классификации; в противном случае,Воля Чтонастраиватьдля 0. Как и в методе «сверху вниз», расстояние между позициями изображения и ключевыми точками также называется вектором смещения на короткие расстояния. поэтому,житьсуществовать 17 индивидуальный такой из вектора смещения. Метод сверху вниз тот же, тепловая карта и вектор смещения используют измерения. Hough Таблицы оценок сгруппированы вместе.

существоватьэтот种методсередина,У нас есть индивидуальные ключевые моменты, связанные с людьми,нодакогдаизображениесерединажитьсуществоватьмногоиндивидуальныйлюдиизпример,этот Нет允许насверно Каждыйиндивидуальныйлюдииз Ключевые моментыруководить分Группа。 Для решения этой проблемы был разработан 32 индивидуальное независимое изсередина расстояния, два поля смещения измерения для соединения с верной ключевой точкой. Кроме того, существует также отодининдивидуальный1 x 1 Conv2DКомпозиция слоевиз简один语义разделение Модель,Должен Модель Можеткосуществлять密наборлогика回归ивычислить Каждыйиндивидуальныйизображение Пиксельк Мало родов Водининдивидуальныйлюдииз Вероятность。 Семантическая сегментация изDetailsсуществовать“Нет. 8 глава",«Семантическая сегментация и нейронный перенос стиля»серединаруководить Понятноописывать。

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

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

Реализация PoseNet

приезжать В данный момент для, мы обсудили PoseNet Теория, лежащая в основе подходов «сверху вниз» и «снизу вверх». существовать本Фестивальсередина,Мы Воляиспользовать PoseNet Назовите эти операции. Как реализовать PoseNet Модельиз Подробности,Видетьздесь。 Перейдите по этой ссылке, чтобы узнать PoseNet из Документация.

Далее мы проведем живую демонстрацию. этот实час Демодаиспользоватьсеть Камера Заканчиватьиз,Можеткпроходитьсуществоватьсеть Браузерсерединатипк Вниз链ловить Приходитьзапускать

尽管сначальствои Внизиподход снизу вверхиспользовать ResNet-101 модель, но PoseNet Модельиспользовать MobileNetV1 или ResNet-50。 Внизповерхностьиллюстрировать Понятноэто们междуизразница:

MobileNet V1

ResNet 50

шагать

16

32

входное разрешение

Ширина: 640, Высота: 480

Ширина: 257, Высота: 200

PoseNet На сайте объясняется, как настроить параметры модели. Даспользоватьк Вниз Экранбыстрый В соответствии ссерединапоказыватьиз参числоокно Приходитьнастраиватьвсе Модель参число:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-L6z3CCZF-1681784662630) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/c4ec18e5-b541-459f-a91d-ec8b5459fcb6.png)]

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

Внизкартина Сравниватьсравнивать Понятновосемь种другой Конфигурация(верно В MobileNetV1 и ResNet, разрешение 200 и 500 из положения вверх и вниз)из PoseNet Выход:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-LZTuUgXq-1681784662630) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/ad6e3682-bbcd-4f56-87f1-61b8ab1a23f4.png)]

На картинке выше показано,Когда люди поднимают руки,ResNet средний коэффициент MobileNetV1 Более точный. При положении рук вниз производительность примерно такая. же. Аналогично, с 500 разрешение по сравнению с 200 Разрешение может быть лучше, и ключевые моменты могут быть лучше предсказаны. Опция ограничивающей рамки доступна, но не отображается. На рисунке ниже показатьиспользовать Другую конфигурациюиз ResNet из Ограничительная рамка:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-i3dTUlbt-1681784662631) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/53554316-613a-43bd-83ea-c0f0ee3ecbd6.png)]

пожалуйста, обрати вниманиеограничивающая рамкаизбольшой小и Расположениесуществоватьдругойнаправление Кначальствокак变изменять。 Ключевые моментыхранилищесуществоватьвекторсередина。 Сгенерированные углы между ключевыми точками можно использовать для прогнозирования действий. начальствоодининдивидуальныйизображение Зависит индивидуальный состоит из различных движений – бокового движения, движения вверх и вниз. Эти动делатьиз关键角度Нет会перекрытие,поэтомупредсказывать Воляда Может靠из。

Применение позы человека для распознавания жестов

приезжатьглаз前дляконец,насужеизучать习Понятнокаксуществоватьданныйиз Ключевые моментыначальстворуководитьтренироватьсякгенерироватьлюдителопоза。 Процесс распознавания жестов аналогичен. Чтобы выполнить распознавание жестов для движений рук, выполните следующие действия:

  1. Коллекция изображений разного положения рук - Вверх, вниз, влево и вправо.
  2. Измените размер изображения.
  3. На этом этапе вы можете разметить изображение ключевыми точками. Если изображение помечено значком для ключевых точек, то все каждое индивидуальное изображение должно быть представлено соответствующими ключевыми точками.
  4. Воля изображений и соответствующие им теги загружаются в два разных массива середина.
  5. Далее да выполняет классификацию изображений, аналогичную методу «Ваше существование»Нет. 6 Глава», из работы, выполненной в разделе «Использовать трансферное обучение для визуального поиска».
  6. CNN Модельбольшинствомного Можетк ВключатьтрииндивидуальныйConv2Dслой,одининдивидуальныймаксимумслитьслойиодининдивидуальный ReLU слой.
  7. Верно В Оценка ключевых точек без классификации, мы Воляиспользовать Каждыйиндивидуальный из расстояния между положениями жестов ключевых кадров и выбирать минимальное расстояние между жестами.

До сих пор мы научились развиваться с помощью нейронных сетей Втренироватьсяизмерение. насразвиватьизсетьтакже Можетк Используйте ВПроизводство。

Распознавание действий различными методами

加скорость度计测量加скорость度изx,yиzмасса,нравиться Внизкартина Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-1P02cDxo-1681784662631) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/76b02856-dea6-432e-9557-50f717feeaf1.png)]

Акселерометр. Эта функция позволяет размещать носимые устройства середина.,Например Установитьсуществовать腕приноситьначальствоизрука腕начальствоизсотовый телефон, умные часы или даже кроссовки середина для измерения ускорения XYZ Часть. В этом разделе середина мы, Воля, узнаем, как использовать нейронную сеть для анализа данных акселерометра для выявления деятельности человека. Мы Воляиспользовать TensorFlow развиватьмашинное обучение Модель. В этой книге середина обсуждается только без изображений из исходных данных. такжекак Воля Что传递приезжатьнервсетькразвивать Модельиотсерединаруководитьсделать выводизглава Фестиваль。

людидобрый活动识别с участиемна на основе акселерометра данные верно классифицируются различные виды деятельности. здесьиз Задача создания ассоциации между различными типами генерации движений человека из данных акселерометра и основаны на различных движениях и активности человека, чтобы различать схожие траектории акселерометра. Например, когда левая рука движется, а правая рука перемещает талию человека, может появиться что-то вроде акселерометра. Это избавляет от необходимости комбинировать акселерометр с видеоизображением для оценки позы. существовать本Фестивальсередина,нас Воляобсуждать Может Используйте Влюдидобрый活动识别издва种другойработа具。

Распознавание действий на основе акселерометра

Этот метод включает в себя следующие шаги:

  1. Обработка входных данных из акселерометра:加скорость度计данныеверно Что Расположение敏感。 Например, если Установитьсуществовать область талии, то и Установитьсуществовать серию рук. При выравнивании фазы С движения рук не будут существовать, акселерометр середина выглядит очень сильно. кроме того,верно В разных позициях,нуждатьсяполучатьнабордругойизданные,Затем объедините.
  2. Подготовьте данные, чтобы вы могли их ввести приехать. TensorFlow середина:использоватьtf.data.Datasetнагрузкаданныекразвивать简один,высокий效изданныетрубопровод。 tensor_slicesЗаказотвходитьсерединаизвлекатьодин片данные。
  3. развивать CNN Модельиверно Чторуководитьтренироваться:одинслойилидваслой密наборслой,наконециметьflattenи Softmax функция.
  4. исследоватьтестданные:верно В соответствии стестданныепроверятьданные。

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

существоватьначальствоодининдивидуальный链ловитьсередина Можеткпопытаться найтиприезжатьдваиндивидуальныйдокумент:Chapter9_TF_Accelerometer_activity.ipynbиsample.csv。 скачатьдваиндивидуальныйдокумент,и Воляэто们放существовать同одиндокумент夹Вниз。

sample.csvдокументдаодининдивидуальный Пример CSV документ,Чтосередина Включать Используйте Вшестьиндивидуальныйдругой动делатьиз加скорость度计(x, y, z)данные:бег трусцой(0),ходьба(1),Наверху (2),здание Вниз(3) ,Сидя (4) и Стоя (5),Каждыйиндивидуальный动делать Все Включать 5,000 точки данных. существуют Ваши данные В реальных обстоятельствах этиданные значения могут составлять соответствии Место размещения варьируется в зависимости от типа акселерометра. Лучше использовать для вывода тот же акселерометр, чтобы избежать ошибок вывода.

ловить Вниз Приходить,в соответствии с Индексный файл Воляданные разделен на две части: тест тренироваться. существоватьздесь,Мы, Воля, оцениваем двух отдельных людей, разных из сегментов 18 и 28., что означает существование случая, если индексный файл мал В 18,ноданныерод Вtrainдокумент夹; в противном случае,этород Вtestдокумент夹。 Модель загружена тремя отдельными плотными (полностью связанными) слоями, разрешение для 128。 финал из softmax одеяло Sigmoid вместо этого функция. На рисунке ниже показаносуществоватьтри种другой Состояние Вниз Модельиз Итерировать:

  • Softmax,тренироватьсяитестизиндексдля 18
  • Сигмовидная функция,индекс существования 18 делений,Используйте Втренироватьсяитест
  • Softmax,тренироватьсяитестизиндексдля 28:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-qjpzUFXY-1681784662631) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/434ae075-6174-4070-9006-4d9a692bf94c.png)]

Переднийизданныепоказывать,Каждый次Итерироватьбольшойонуждаться 40 секунд, с конечной точностью примерно 0.97。 Следующий рисунок иллюстрирует это графически:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-kTQd854L-1681784662631) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/ba8fec99-a1e5-4e0e-adf3-5486104af508.png)]

Предыдущая кривая показывает,существовать Место Исследоватьизтрииндивидуальныйсостояние Вниз,тренироватьсяиз Точность Базовыйтакой же. для Понятно进один步анализироватьэтотодинточка,让нассмотретьодин Вниз Внизкартинасередина Место示из Уверенностькартина:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-YrlaLSfn-1681784662632) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/0f9d22e3-ebfa-437f-92e4-11bc984fb1d0.png)]

Матрица путаницы показывает, насколько хорошо тестовые данные предсказывают выравнивание данных. существоватьздесь,мы можем посмотреть приезжатьсуществоватьиндекс 18 тренироваться разделенныйиз Softmax Функция «Сравнивать другие стоячие и ходячие» позволяет улучшить результат и получить результат. Как и ожидалось, Софтмакс и Sigmoid Функция активации не привела к каким-либо значимым различиям. один旦развивать Понятно Модель,Сразу Даспользовать Модельизпредсказывать函число Приходитьпредсказыватьдействительныйтест Состояние Внизизданные。

Сочетание действий на основе видео и оценки позы

Признание действия может быть либо дадваизмерение, либо датриизмерение. 2. Метод распознавания действий использует тело человека из совместной информации, представленной ключевыми точками. Эти ключевые точки представлены картами объектов и векторами. С другой стороны, три метода распознавания действий не только отображают объекты, но и скелетируют все тело. Можно использовать датчик глубины (например. Microsoft Kinect или Intel RealSense) для получения этих данных. существовать 2018 Год, Диого C.Luvizon,David Picard и Hedi Tabia представил их из диссертации 《использовать Многозадачное глубокое обучениеиз 2D/3D Оценка позы и распознавание действий》. Можетксуществоватьздесьсерединапопытаться найтиприезжать Эта статьяиз Подробности.

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

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

Распознавание действий методами 4D

4D Распознавание действия означает объемное представление изменения действия во времени из функции. Может ли Воля его визуальное действие для пакетного отслеживания. Цюань Цюанью и Хао Цзян предложили роман 4D метод,имядля《Action4D:людигруппаивсякая всячинасерединаизсуществовать Проволока动делать识别》。Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Эта статьяиз Подробности.

Долженметодиспользовать 4D Олицетворяет наблюдение за человеческими существами, существованием в хаосе и скученностью среди окружающей среды, середина идентифицирует их из ряда вон. Эта статьяиз概念нравиться Вниз:

  • использоватьмногоиндивидуальный RGBD изображениедля Каждыйиндивидуальныйсценасоздаватьтриизмерениеточкаоблако。
  • существуют многолюдные места серединаиз Обнаружение получили инновационный из отслеживать советы из дополнения,В предложении не используется вычитание фона.,Это означает, что существующее многолюдное пространство середина менее подвержено ошибкам.
  • отслеживатьпроцесспроходитьтренироваться 3 измерение CNN(иметь 3 измерениесвертка,ReLU и уровень пула) для использования предложения-кандидата,к Воля Каждыйиндивидуальный候选量分добрыйдлялюдии Нетлюди。
  • использовать Последовательность из трёх действий по распознаванию объёма измерения,Объем проходит через серию сверточных слоев и слоев объединения (называемых Action4D).

Подвести итог

существовать本главасередина,Мы изучаем и калибруем три разных метода оценки позы - OpenPose,栈式Песочные часыи PostNet。 Мы научились использовать OpenCV и TensorFlow Прогнозирование ключевых моментов человека. Затем мы изучаем метод песочных часов с подробной теорией. TensorFlow выполнить. Мы покажем вам, как существование браузера середина оценивает позу человека, а Также Как использовать ключевую точку оценки веб-камеры в реальном времени. Тогда Воля Оценка позы человекаимодель распознавания действия, ссылка на демонстрацию, как использовать оба для повышения точности. на на основе ускорения изкод показывает, как использовать TensorFlow 2.0 нагрузкаданные,Модель обучения прогнозировать действия.

существовать Внизодинглавасередина,нас Воляизучать习каквыполнить R-CNN И Воляи другие CNN модель (например, ResNet,Inception и SSD) в сочетании с использованием для улучшения Обнаружения. объектыиз прогнозирования, точности и скорости.

10. Обнаружение объектов R-CNN, SSD и R-FCN.

существовать“Нет. 7 глава",“использовать YOLO руководить Обнаружение объектов”середина,насучиться Понятно YOLO Обнаружение объектов, а затем, существовавших в первых двух главах середина, мы изучали распознавание движения и исправление изображений. 本главапроходитьдляданныепроглотитьитренироватьсясборочная линияа также Модельразвиватьзаложить прочный фундаментиз База,логотип着конецприезжатьконецE2E)Обнаружение объекты фреймизстарт. существоватьздесь,нас Воляидти глубжеучиться Различный Обнаружение объектов Модель,Например Р-CNN,Одиночный выстрелSSD),на основеобластьиз全сверткасетьR-FCN)и Mask R-CNN,ииспользовать Google Cloud и Google Colab С помощью тетрадей выполняются практические упражнения. Мы также Воля верно, как тренироваться в определении изображений с использованием TensorFlow Обнаружение объектов API развивать Обнаружение Объекты Модель выполняет подробные упражнения. Мы Волясуществовать заканчивается различными верными методами регистрации, такими как подробный обзор и использование. Google Colab Тетрадь для практических занятий.

Эта глава разделена на восемь подразделов:

  • Обзор SSD
  • Обзор R-FCN
  • Обзор API обнаружения объектов TensorFlow
  • Обнаруживайте объекты с помощью TensorFlow в Google Cloud
  • Обнаружение объектов с помощью TensorFlow Hub
  • Обучите собственный детектор объектов с помощью TensorFlow и Google Colab.
  • Обзор Mask R-CNN и демо-версия Google Colab
  • Разработка моделей отслеживания объектов в дополнение к детекторам объектов.

Обзор SSD

SSD даодин种Нет常быстрыйскоростьиз Обнаружение объектов, идеально подходит для развертывания на мобильных устройствах и периферийных устройствах для прогнозирования в реальном времени. существовать本главасередина,нас Воляизучать习какиспользовать SSD Интеллектуальная Модель, существование В следующей главе мы воля оцениваем существование по производительности при развертывании на периферийных устройствах. Но дасуществовать детали SSD До,нас Волябыстрыйскоростьучитьсяприезжатьглаз前дляконецнассуществоватькнигасерединаучитьсяиз Что他Обнаружение объектовустройство Модель.

нассуществовать“Нет. 5 Глава", "Нейросетевая архитектура и Модель"серединаучитьсяприезжать, Faster R-CNN Включать 21,500 индивидуальныйобластьнести议(60 x 40раздвижное окнои 9 якорные коробки), эти предложения превращаются в 2K Фиксированный слой. Эти 2K одеяло подает регрессор полносвязного слоя и ограничительной рамки в ограничивающую рамку серединаиз изображения Обнаружение. 9 якорные ящики из 3 индивидуальный Сравниватьшкала,框лапша积соответственнодля128^2,256^2,512^2итрииндивидуальныйдлина и ширина Сравнивать:1:1、1:2 и 2:1。

9 индивидуальный锚точка框изиллюстрироватьнравиться Вниз:

Язык кода:javascript
копировать
128x128:1:1; 128x128:1:2; 128x128:2:1
256x256:1:1; 256x256:1:2; 256x256:2:1
512x512:1:1; 512x512:1:2; 512x512:2:1

существовать“Нет. 7 глава",“использовать YOLO руководить Обнаружение объектов”середина,насучитьсяприезжать YOLO использоватьодининдивидуальный CNN, CNN Одновременно спрогнозируйте ограничивающую рамку всего изображения серединаверно из индивидуального. YOLO v3 Есть три уровня тестирования. YOLO v3 использовать 9 индивидуальный锚точка:(10, 13),(16, 30),(33, 23),(30, 61),(62, 45),(59, 119),(116, 90),(156, 198),(373, 326)。 Кроме того, ЙОЛО v3 использовать 9 индивидуальныймаска,Этимаска ссылка приехать якорь,нравиться Вниз Место述:

  • Нет.Один слой:маска:6、7、8; верноотвечатьиз锚точка:(116, 90),(156, 198),(373, 326)
  • Нет.Второй этаж:маска:3、4、5; верноотвечатьиз锚точка:(30, 61),(62, 45),(59, 119)
  • Нет.Три этажа:маска:0、1、2; верноотвечатьиз锚точка:(10, 13),(16, 30),(33, 23)

SSD В 2016 год по Liu Wei,Dragomir Anguelov,Dumitru Erhan,Christian Szegedy,Scott Рид, Фу Чэньянги Alexander C.Berg существоватьвопросдля«SSD: Однокадровое многокадровое устройство Обнаружения»предлагать。

этоизскорость度Сравнивать Faster R-CNN быстрый, но его точность и YOLO по сравнению с. 改进Приходитьс消除областьнести议и Воля小型сверткафильтротвечать Используйте Вкарта объектов,Возьмем пример прогнозирования различного уровня выравнивания слоев.

SSD из Основные функции Обзорнравиться Вниз:

  • SSD 原始бумагаиспользовать VGG16 Базовая сеть извлекает векторный слой, но можно рассмотреть и другие сети, например Inception и ResNet。
  • SSD существовать Базасеть之начальстводобавить в индивидуальный векторный слой, Зависит отconv4_3,conv7fc7),conv8_2,conv9_2,conv10_2иconv11_2композиция,Используйте ВОбнаружение объектов。
  • Набор полей по умолчанию и Каждый индивидуальный блок сопоставления объектов, связанный,поэтому Поле по умолчанию Расположение Взаимноверно Вкарта объектоводин元дазафиксированныйиз。 Каждыйиндивидуальный Поле по умолчанию Все会предсказыватьcдобрыйсередина Каждыйиндивидуальныйдобрый别из Счета также Взаимноверно В地лапшареальная ситуацияиз Четыреиндивидуальныйкомпенсировать,отипроизводить(c + 4)kфильтр。 Этифильтротвечать Используйте Вкарта объектов(большой小дляm x n),производить(c + 4)kmnвыход。 Таблица ниже иллюстрирует этот момент. SSD из уникальности существует В коробке по умолчанию Применимо к Различные разрешения и несколько индивидуальных карт объектов:

Имя слоя

Обнаружение

выходной фильтр

Conv4_3

38 x 38 x 4 = 5776

3 x 3 x 4 x (c + 4)

Conv7

19 x 19 x 6 = 2166

3 x 3 x 6 x (c + 4)

Conv8_2

10 x 10 x 6 = 600

3 x 3 x 6 x (c + 4)

Conv9_2

5 x 5 x 6 = 150

3 x 3 x 6 x (c + 4)

Conv10_2

3 x 3 x 4 = 36

3 x 3 x 4 x (c + 4)

Conv11_2

4

общий

8732

  • Стандартный дизайн коробки,поэтому特Конечноразмер(на на основе истинного прогнозирования ситуации) из сопоставления функций иверно из конкретных примеров сравнения.
  • Сравниватьпример范围Можеткотsmin(0.2)приезжатьsmax(0.95)Проволокасекс变изменять,ивертикально и горизонтально Сравнивать(ar)Можетк Выбиратьпятьиндивидуальныйценить(1,2,0.5,3.0и0.33) ,Чтосерединаkсуществовать1иmизменения между。
  • верно Вдлина и ширина Сравнивать1,добавить индивидуальный дополнительный ящик по умолчанию. поэтому,Позиция на карте «Каждый индивидуальный» может содержать до шести индивидуальных полей по умолчанию.
  • Поле по умолчаниюсередина Сердцеизкоординироватьдля((i+0.5)/|fk|, (j+0.5)/|fk|),Чтосередина|fk|даkthтольконаправление形карта объектовизбольшой小,iиjизценитьот0приезжать|fk|Нетждать。 Верно Шесть индивидуальных коробок по умолчанию из Каждыйиндивидуальный Повторите это.
  • SSD Приведем пример Сравнить ширину и высоту. Скорректировать поле по умолчанию и определить истинность объектов, сопоставленных с полем по умолчанию, и устранить несоответствие между ящиками, одновременно прогнозируя различные объекты по размеру и форме. Коробка по умолчанию и слон истинной истины действительно не соответствуют дапроходить Jaccard перекрытие(такжесказатьдля交и Сравниватьи IOU)Заканчиватьиз,этотсуществовать Нет. 7 глава,“использовать YOLO руководить Обнаружение объектов”середина。 Например, если изображение Зависит отhumanиbusкомпозицияи且Всеиметьдругойиз Ширинавысокий Сравниватьи Сравниватьпример,но SSD Очевидно, что можно идентифицировать и то, и другое. Проблема возникает, когда существование двух индивидуальных категорий близко друг к другу, а вертикальное и горизонтальное сравнение одинаковы, мы волясуществовать смотрим за жильем.
  • использовать R-CNN,Региональная сеть предложения выполняет фильтрацию для ограничения количества просмотров 2K из Размер выборки. С другой стороны, SSD Предложений по регионам нет, поэтому генерируется большое количество ограничивающих рамок (как мы знали ранее, для 8,732 индивидуальный), многие из которых являются отрицательными примерами. SSD Отвергая дополнительные отрицательные примеры, он использует жесткий отрицательный анализ, чтобы сохранить баланс между положительным и отрицательным. 3:1。 硬否Конечно挖掘даодин种Используйте Виспользовать Уверенностьпотеряруководить排序к便保留большинствовысокийценитьизтехнология。
  • SSD используйте немаксимальное подавление, чтобы выбрать наибольшую достоверность из отдельного ограничивающего прямоугольника для данного класса. Немаксимальное подавление из существования понятия «Нет. 7 глава",“использовать YOLO руководить Обнаружение объектов”середина。 Алгоритм немаксимального подавления выбирает категорию с наибольшей вероятностью из выборочно и отбрасывает ее. IOU большой В0.5извсеограничивающая рамка。
  • SSD Также получает ложно-негативные изображения для детренирования входных данных для использования жесткого негативного анализа. SSD Сохраняйте отрицательные и положительные числа 3:1。
  • для Понятноруководитьтренироваться,использоватьк Вниз参число:300x300или512x512изображениебольшой小,10^(-3)изскорость обучениядля 40,000 次Итерировать,10^(-4)к10^(-5)изскорость обучениядлявпоследствиииз 10,000 次Итерировать,скорость распададля0.0005и0.9изимпульс。

Обзор R-FCN

R-FCN Сравнивать R-CNN и SSD Более похоже. R-FCN Главным образом Microsoft Research Сформируйте команду 2016 Годразвивать,Долженкоманда Зависит от Дай Цзифэна, Ли И, Хэ Каймина и Сунь Цзяня, под названием «R-FCN: проводимна» основарегиона из полностью сверточной сети для Обнаружения объектов》。 ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумагаиз链ловить。

R-FCN такжена на основе регионального предложения. и R-CNN изхозяинхотетьразницасуществовать В,R-FCN Подождите, пока прибудете последний слой, а затем примените группирование групп по сексу, чтобы извлечь функции для прогнозирования без каких-либо данных. 2K Начинается региональная сеть предложений. существовать本главасередина,Мы Воляиспользовать R-FCN тренироватьсясопределение Модель,и Воляокончательный результати Что他Модельруководить Сравниватьсравнивать。 На картинке ниже описано R-FCN из Архитектура:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-Zw2owfJf-1681784662632) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/d692d9d9-8340-4d58-a219-8002b8b93391.png)]

существовать Изображение вышесередина,машинаизизображениепроходить ResNet-101 Создаются карты объектов. пожалуйста, обрати внимание,нассуществовать“Нет. 4 глава», «на основеизображениеизглубокое обучение”серединаиспользовать,этопредставлять Понятнокак Визуализациясверточная нейронная сетьCNN)及Чтокарта объектов。 Этот метод по сути такой же, как да. Затем,нассуществоватькарта объектов内получатьk x kядерный(существоватьэтотизображениесередина,k = 3),и Воля Чтосуществоватьизображениеначальство滑动ксоздаватьk^2(C+1)Счеткартина. нравиться果Счеткартина Включатьодининдивидуальныйвернослон,нонас投票yes,в противном случае,нас投票no。 Уравнивание голосов между разными регионами для создания softmax Слой одеяла отображает категории «прибытие» как «Обнаружение».

R-FCN из Основные функциинравиться Вниз Место述:

  • Похоже на: В R-CNN,существоватьвсеиндивидуальныйизображениеначальствовычислить出全сверткаРегиональная сеть предложенийRPN)。
  • R-FCN не нравится R-CNN Таким образом, скрученная область 2K отправляет прибывший полностью связный слой и дасуществовать функции перед предсказанием, ипользовать и, наконец, слой свертки.
  • Минус средний слой пула и полностью связанный слой ResNet-101 Используйте извлечение признаков B. Таким образом, только сверточные слои отображаются с функциями Вычислить. ResNet-101 серединаизнаконецодининдивидуальныйсверткакусокиметь 2,048 индивидуальныйизмерение,Воля Что传递приезжать 1,024 измерениеиз1×1сверткаслойкруководитьизмерениеуронить。
  • 1,024 индивидуальныйсверткаслойпроизводитьодининдивидуальныйk^2Счеткартина,этоверноотвечать Вk^2(C + 1)рядвыход,приносить有Cвернослондобрый别加начальствоназад景。
  • отвечатьиспользоватьвыбиратьсексслитьотk^2Счеткартинасерединатолькоот Счеткартинасерединаизвлекатьответ.
  • Этот метод извлечения признаков последнего слоя сводит к минимуму количество вычислителей.,поэтому R-FCN Очень хорошо Faster R-CNN Дажебыстрый。
  • верно В регрессия ограничивающей рамки,существовать4k^2сверткаслойначальствоиспользоватьсредний пул,отидля Каждыйиндивидуальныйсосредоточиться наобластьслойгенерировать4k^2измерениевектор。 Приходитьс Каждыйиндивидуальныйk^2слойиз4k^2вектор被聚合для Четыреизмерениевектор,Долженвектор Воляограничивающая рамкаиз Расположениеи Несколько何形状поверхность征дляx,y,ширина и высота.
  • для Понятноруководитьтренироваться,использоватьк Вниз参число:скорость распададля0.0005,импульсдля0.9,Воляизображениенастраиватьвседлявысокий度для600Пиксель,20,000 партияизскорость обучениядля0.001и0.0001 10,000 индивидуальныйпартия。

Обзор API обнаружения объектов TensorFlow

Можетксуществоватьздесьпопытаться найтиприезжать TensorFlow Обнаружение объектов API。 На момент написания статьи существовал TensorFlow Обнаружение объектов API только Применимо к TensorFlow Версия 1.x。 существовать Терминалсерединаскачать TensorFlow 1.x час,это Воляmodels/research/object detectionглаз录Установитьприезжатьтыиз PC。 Если ты PC Топы TensorFlow 2.0, ты можешь GitHub Загрузите каталог исследований.

TensorFlow Обнаружение объектов API иметьпредварительно Первыйтренироватьсяиз Модель,ты Даспользоватьсеть Камераверно Чторуководить Обнаружениеа такжесвязанныйсопределениекартина片из Примертренироваться。 Просмотрите первые две ссылки и опробуйте их самостоятельно, прежде чем вернуться к следующему разделу.

существовать本главасередина,Мы Воляиспользовать TensorFlow Обнаружение объектовустройствоосуществлятьк Вниз Задача:

  • использовать Google Cloud и Coco данныенаборначальствоизпредварительно Модель обученияруководить Обнаружение объектов
  • использовать TensorFlow Hub и Coco данныенаборначальствоизпредварительно Модель обученияруководить Обнаружение объектов
  • использоватьтрансферное обучениетренироваться Google Colab серединаизсопределение Обнаружение объектовустройство

существоватьвсе Эти Примерсередина,Мы Воляиспользовать Гамбургерикартофель фриданныенаборруководить Обнаружениеипредсказывать。

Обнаруживайте объекты с помощью TensorFlow в Google Cloud

к Внизиллюстрироватьпредставлять Понятнокакиспользовать Google Cloud начальствоиз TensorFlow Обнаружение объектов API Приходить Обнаружениевернослон。 Для этого вам необходимо иметь Gmail и Google Cloud счет. После отправки данных вашей кредитной карты, в соответствии сRegion изDifferent, Google Cloud Разрешения на доступ могут предоставляться бесплатно в течение ограниченного времени. Это разрешение на бесплатный доступ должно распространяться на упражнения, перечисленные здесь. Выполните следующие действиясуществовать Google Cloud Console серединасоздаватьвиртуальная машинаVM)Пример. нуждаться VM бежать TensorFlow Обнаружение объектов API и сделать вывод:

  1. Войти приезжатьтыиз Gmail счет, затем перевести приехать h ttps://cloud.google.com/solutions/creating-object-detection-application-tensorflow
  2. Создайте проект, как показано ниже на экране быстрого фото. существоватьздесь,R-CNN-trainingpackдаяиз项глазизимясказать。 Название вашего проекта может отличаться.
  3. Следуйте [Начать VM Пример] из 10 Инструкция по эксплуатации -существовать" шаги Также объясняется 12-дюймовое короткое фото середина на экране.
  4. существовать Google Cloud Console середина,навигацияприезжать“VM Пример»страницы.
  5. Нажмите вверху «создавать примеры». Вам будет предложено приехать на другую индивидуальную страницу, для которой вы должны ввести имя экземпляра.
  6. Введите имя экземпляра строчными буквами. Обратите внимание, что имя экземпляра и имя проекта различаются.
  7. Нажмите на «Вычислить Тип машины»,Затемвыбиратьn1-standard-8(8vCPU,30 GB Память)。
  8. Нажмите «Автоопределение» и настройте горизонтальную полосу на «Вычислить тип машины» для настройки. 8 индивидуальный vCPU,Воля“Память”настраиватьдля 8 ГБ, как показано на скриншоте ниже.
  9. панели «Брандмауэр» из «Разрешить HTTP коммуникация".
  10. существуют под брандмауэром, вы воля просматриваете проживание Управление, Безопасность, Диск, Сеть, Уникальные ссылки аренды, как показано на экране. Этот быстрый экран иллюстрирует создание VM Примеры и шаги. Нажмите на него, а затем перейдите на вкладку «Сеть».
  11. существуют вкладка "Сеть" середина, выбор раздела "Сетевые интерфейсы". Далее, существуя раздел «Сетевой интерфейс» середина, мы Воляпроходитьсуществовать «Внешний IP» выпадающий список назначить индивидуальный Новый IP адрес для назначения статического IP адрес. 给эторостодининдивидуальныйимя字(Напримерstaticip),Затем нажмите «Сохранить».
  12. После того, как вы выполнили всеэти шаги, подумайте и убедитесь, что вы заполнили все содержимое в соответствии с инструкциями, затем нажмите «создавать» (как показано на скриншоте ниже), чтобы создать. VM Пример.

На следующем снимке экрана показано существование Облачная платформа GoogleсерединасоздаватьимядляR-CNN-trainingpackиз项глаз:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-zcwuFAkF-1681784662632) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/5a02623c-bc4c-4a7b-ab9c-1b9aca54f7f0.png)]

создать проект да Нет. Один шаг.,Тогда наш проект середина Создать Волясуществовать экземпляр,нравиться Внизлапшаиз Экранбыстрый В соответствии с Место示。 Этот экран кратко иллюстрирует то, что мы только что описали. VM Пример шагов создания:

[Передача изображения по внешней ссылке не удалась. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-kvcUZ4Qp-1681784662632) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/84c13cc1-e50d-4291-b431-4a87579ab3d6.png)]

Затем,в соответствии с В соответствии ск Внизиллюстрироватьсуществоватьтестизображениеначальствосоздавать Обнаружение объектовсделать вывод:

  • Далее мы будемиспользоватьбезопасная оболочка сокетаSSH)客户конецпроходитьбезопасное место в Интернетедоступ Пример. Вы Волянуждаться вводите свой логин и пароль. Воляиспользовать户имянастраиватьдляusername,Воляпарольнастраиватьдляpassw0rd; пожалуйста, запомни,это Нетдаoида0,Вроде ноль.
  • использоватьэтотиндивидуальныйстраницаначальствоописыватьизиллюстрировать,Установить TensorFlow Обнаружение объектов API Библиотека и обязательная Сумка.

После правильного подтверждения вышеуказанных инструкций и загрузки изображения,ты Воляполучатьнравиться Вниз Место示из Выход:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-74VTutUF-1681784662633) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/9b7712b3-064e-4911-8ff3-7720963edf18.png)]

существоватьэтот Экран截картинасередина,Обнаружениеприезжать Понятно Гамбургер,Бокалы и столы для вина,но未Обнаружениеприезжать炸картофель фри。 существовать Внизодин Фестивальсередина,Мы, Воля, видим, что будет, приезжать,Затемнас Волятренироваться Собственныйизнервсеть Приходить Обнаружениеэтотдва ВОЗ。

Обнаружение объектов с помощью TensorFlow Hub

существоватьэтот Примерсередина,нас Воляотtfhubимпортировать TensorFlow Библиотека, и ее использование похоже на Обнаружение. TensorFlow Hub даиндивидуальная библиотека, для которой доступен серединаизкод и который можно использовать с Вкомпьютерное Приложение для визуализации. Коддаот TensorFlow Hub серединаизвлекатьиз,Но образ дасуществовать вставлен локально из,Вместо облака.

Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Используйте Вэтот练习из После модификацииизкод.

существоватьздесь,наспроходитьимпортироватьtensorflow_hubиsix.movesУстановить TensorFlow библиотека. six.movesдаодининдивидуальный Python модуль, снабженный В Python 2 и Python 3 Между изгенерической Сумкой Отображается изображение и рисуется граница существующего изображения. существоватьпроходить Обнаружениеустройство До,изображение Воля Конвертироватьдлячисло Группа。 Устройство «Обнаружение» напрямую из хаба загружает модуль, который выполняет всю обработку нейронной сети в фоновом режиме. к Внизпоказывать Понятносуществоватьдва种другой Модельизtfhubбеги дальше пример изображения при из Выходе:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-IzVFBOx8-1681784662633) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/1dfd202a-1189-4b8d-99d8-8ce5d20d32e9.png)]

Как видите, имея Inception и ResNet делатьдляэкстрактор функцийиз R-CNN Может правильно предсказать гамбургер и картофель фри также многие другие, конечно, нравятся. иметь MobileNet Модельиз SSD Можетк Обнаружениеприезжать Гамбургер,но Не могущий Обнаружениеприезжатькартофель фри-Воля Что分добрыйдляsnacksдобрый别。 когданастренироваться Собственныйиз Обнаружение объектовустройствоиразвивать Собственныйиз Модельина основеэтотруководитьвыводчас,нас Волясуществовать Внизодинчастьсерединаучиться Дажемногоинформация。

Обучите собственный детектор объектов с помощью TensorFlow и Google Colab.

существовать Это упражнениесередина,Мы Воляиспользовать TensorFlow Обнаружение объектов API использовать Четыре种другойиз Модельтренироватьсясопределение Обнаружение объектовустройство。 Google Colab дасуществовать Google Сервер беги дальшеиз ВМ, поэтому TensorFlow извсе пакеты должны быть обновлены должным образом:

серийный номер

Модель

экстрактор функций

1

Дажебыстрыйиз R-CNN

Inception

2

SSD

MobileNet

3

SSD

Inception

4

R-FCN

ResNet-101

пожалуйста, обрати внимание,На момент написания статьи существовал TensorFlow Обнаружение объектов API приезжать еще не перенесено TensorFlow 2.x,поэтомупожалуйстасуществовать Google Colab по умолчанию Версия TensorFlow 1.x Запустите этот пример на . ты Можеткпроходитьтип%tensorflow_version 2.xсуществовать Google Colab середина Установить TensorFlow 2.x,нода Обнаружение объектов API вызовет ошибки. Время попрактиковаться TenorFlow 1.14 Версия numpy 1.16 версия.

Мы Волясуществовать это упражнение серединаиспользовать трансферное обучение,первыйотсуществовать Coco данныенаборначальствотренироватьсяизпредварительно Модель началось обучение, а затем существуетпрохождение наших собственных изданных наборов тренироватьсяиз, на основе которых было построено трансферное обучение. TensorFlow ужесуществовать ModelZoo GitHub 站точкасерединахранилище Понятнопредварительнотренироватьсяиз Модель,Должен站точка Можетотздесьполучать。 Эти Модельхозяинхотетьдаиметьдругойэкстрактор функцийиз R-CNN,SSD и R-FCN。 Взаимноотвечатьиз Конфигурациядокумент Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。

Набор данных какаоиметьк Вниздобрый别:

Язык кода:javascript
копировать
Person, bicycle, car, motorcycle, airplane, bus, train, truck, boat, traffic light, fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee, skis, snowboard, sports, ball, kite, baseball, bat, baseball, glove, skateboard, surfboard, tennis, racket, bottle, wine, glass, cup, fork, knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, couch, potted plant, bed, dining table, toilet, tv, laptop, mouse, remote, keyboard, cell phone, microwave oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy bear, hair drier, toothbrush

Как видите, Коко данныенабор НетburgerилиFrench friesделатьдлядобрый别。 形状ловить近Этииз项глаздаsandwich,donutиcarrot。 Таким образом, мы Воля получаем Веса Модели и существуем наши собственные изданные наборы по использованию трансферного обучения для развития Обнаружения. GitHub веб-сайтначальствоиз Jupyter блокнотиметьосуществлять E2E тренироватьсяработаделатьиз Python код.

тренироватьсяработаделатьиспользовать TensorFlow Обнаружение объектов API, API существование называет различные Python .pyдокумент. После долгой практики мы пришли к выводу, что лучше всего Google Colab блокнот без себяиз PC начать эту работу. Это связано с тем, что многие библиотеки используют TensorFlow 1.x Версияписатьиз,нуждатьсяруководить Конвертироватьталантсуществовать TensorFlow 2.0 работа. здесь показано местное существование PC начальствоиспользовать Anaconda Некоторые примеры ошибок, возникающих при выполнении задания:

Язык кода:javascript
копировать
module 'keras.backend' has no attribute 'image_dim_ordering'
self.dim_ordering = K.common.image_dim_ordering()
module 'tensorflow_core._api.v2.image' has no attribute 'resize_images'

rs = tf.image.resize(img[:, y:y+h, x:x+w, :], (self.pool_size, self.pool_size))
 61    outputs.append(rs)
 62
 AttributeError: module 'tensorflow_core._api.v2.image' has no attribute 'resize_images'

когдаделать业существовать Colab начальствоиз TensorFlow Когда середина запущена, зависимости между модулями хорошо настроены. поэтому,Не придется тратить много времени на решение множества простых ошибок.,ты Можетк Волячас间花существоватьтренироватьсяразвиватьначальство,Не да исправлять ошибку, чтобы начать тренироваться.

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

Воляизображениеполучатьнабори Форматизменятьдля.jpgдокумент

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

  1. учиться Вы хотите использовать меньшее количество классов и убедиться, что изображения имеют одинаковое распределение классов. этот意味着,Например,нравиться果насхотетьиспользоватьдваиндивидуальныйдобрый别(burgerиfrench fries),Тогда изображение должно быть Включить большую треть из гамбургера.,1/3 картофеля фри,а Также Одна треть из двух смешана. Имейте только гамбургер с изображением и картофель фри с изображением, а не Включайте комбинацию изображений, которая не является хорошей.
  2. Убедитесь, что изображения Включать имеют разную ориентацию. верно Виметь однородные формы изображений (например, круглые гамбургеры) или неровные формы (например, картофель фри) на изображениях, ориентация не имеет значения, но даверно В конкретных формах (например, форма автомобиля, ручки или лодки), отличающихся по ориентации, не имеет значения.
  3. Волявсеизображение Конвертироватьдля.jpgФормат。
  4. Измените размер изображения для более быстрой обработки нейронной сетью. существоватьэтот Примерсередина,учитывать416x416изображениебольшой小。 существовать Linux середина,ты Даспользовать ImageMagick Пакетное изменение размера изображений.
  5. Конвертироватьfile.jpg-Воля Чтонастраиватьвседля416x416изображениеразмерfile.jpg
  6. Воляизображение重命имядляclassname_00x.jpgФормат。

Например,dec2f2eedda8e9.jpgотвечать Должен Конвертироватьдляburger_001.jpg。 Волявсеизображение保житьсуществоватьодининдивидуальныйдокумент夹середина。 Зависит от В наших из изображений Включить индивидуальные гамбургеры, картошку фри и индивидуальное сочетание, а также из наших файлов общий номер для 100,Поэтому верно имя файла изображения,пожалуйстасоздаватьburger_001 …burger_030.jpg,fries_031 …fries_060.jpgиcomb_061 …comb_100.jpgтрииндивидуальныйдобрый。

отметкаизображение в будущемсоздавать.xmlдокумент

существовать本Фестивальсередина,нас Воляописыватькаксоздаватьотметкадокумент. Каждый файл изображения соответствует файлу аннотаций. отметкадокументв целомдля.xmlФормат。 этот处описывать Понятносоздаватьотметкадокументизшаг:

  1. существоватьэтотшагсередина,использоватьlabelImgсоздаватьотметкадокумент. Этот шаг уже выполнен. 7 глава",“использовать YOLO из Обнаружение объектов»середина обсуждалось, но здесь повторяется. использовать Терминал Заказpip install labelImgскачатьlabelImg
  2. скачатьназад,Толькосуществовать ТерминалсерединатипlabelImgПрямо сейчас Может Открыть。
  3. определениеисточник(.jpgдокумент)иглаз标(.xmlдокумент)глаз录。
  4. Выбор Каждыйиндивидуальный образ существует и вокруг него нарисован индивидуальный прямоугольник. имя класса определения и сохраните его.
  5. Если данное изображение середина имеет много отдельных категорий,носуществовать Каждыйиндивидуальныйизображение周围绘制одининдивидуальныйпрямоугольник,И для него присваивается соответствующее имя категории.

в целом,Люди совершают ошибку, рисуя прямоугольник только на классе существования.,Затем跳过另одининдивидуальныйдобрый。 этот Воляпривести ксуществоватьрассуждениепроцесссерединатолько Обнаружениеприезжатьодининдивидуальныйдобрый别。

На этом снимке экрана показано, как мы можем отметить две категории на одном изображении:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-s03Lo1HH-1681784662633) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/850fcd9e-026d-4f49-b0bc-3497becfd97b.png)]

этотпоказывать Понятнодваиндивидуальныйдобрый别-burgerиfries-а такжекакиспользоватьlabelImgсуществоватьэто们周围绘制边框。 labelImgизвыходда.xmlдокумент,Файл хранитьсуществовать отдельно от папки середина.

Каждыйиндивидуальный.xmlдокументсередина Все有Взаимноотвечатьиз.jpgдокумент. поэтому,нравиться果稍назадрука动Даже改labelImgдокументимя,Тогда файловая система Воля не сможет работать,ты必须再次重новый运ХОРОШОlabelImg。 такой же,нравиться果существоватьlabelImgдействоватьпосленастраиватьвсеизображениебольшой小,Затем отметьте местоположение файла, Воля изменился,и且ты Воля Должен быть запущен повторноlabelImg

Разделяйте файлы по папкам обучения и тестирования.

существовать本Фестивальсередина,нас Воляданныенабор分дляtrainиtestдокумент夹。 этотданеобходимыйиз,потому чтодляtrainМодельиспользоватьtrainданныенаборгенерировать Модель,ииспользоватьtestданныенаборруководитьпроверять。 пожалуйста, обрати внимание,有часtestиvalимясказать Можетк互换использовать Приходитьповерхность示同один事вещь。 Но для даобщийиз, у нас есть нуждаться Нет. Приходят три отдельные папки и, наконец, Модельда нет, и эта Модель раньше не была замечена и соответствует некоторым неизвестным изображениям. Включать Этиизображениеиздокумент夹сказатьдляval-稍назад Воляруководитьобсуждать。

пожалуйстав соответствии с В соответствии сэтот处Список出изшаг Воляизображение分成trainиtestдокумент夹。 Обратите внимание, что Этиквест Волясуществовать Google Colab Завершено:

  1. Если вы выполните вышеуказанные шаги,но Воля有дваиндивидуальныйдокумент夹-одининдивидуальный Используйте Визображение,одининдивидуальный Используйте Вотметка。 ловить Вниз Приходить,нассоздаватьдваиндивидуальныйодин独издокумент夹-trainиtest
  2. Волявсе.jpgи.xmlдокументкопироватьприезжатьлюбойдокумент夹середина。 поэтому,сейчассуществовать Должендокумент夹Воля Включатьназадверноназад.jpgи.xmlдокумент.
  3. Воля класс имени файла из 70% издокумент(.jpgи Взаимноотвечатьиз.xmlдокумент)копироватьприезжатьtrainдокумент夹середина。 поэтому,После выполнения этого упражнения,trainдокумент夹середина Воля有большойо 140 индивидуальныйдокумент(70 индивидуальный.jpgдокументи 70 индивидуальный.xmlдокумент)。
  4. Воля Оставшийсяиз 30% издокументкопироватьприезжатьtestдокумент夹середина。
  5. Воляtrainиtestдокумент夹Всеначальство传приезжатьdataВнизиз Google Водить машину.
  6. Создайте标вопросдляvalизпроверятьдокумент夹,А Волявсе серединаиз вставьте несколько изображений в свой середина.

пожалуйста, обрати внимание,существоватьэтот Примерсередина,существоватьtrainиtestдокумент夹междуиспользовать Понятно 70/30 Из примера сравнения, но обычно числовой диапазон можно 90/10 приезжать 70/30。

  1. существовать“яизоблакоконец硬盘”Вниз(нравитьсяк Вниз Экран截картина Место示),СоздайтеимядляChapter10_R-CNNиздокумент夹,Затемсуществовать Чтосередина Создайтеимядляdataиздокумент夹:

[Передача изображения по внешней ссылке не удалась. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-Xi5RFMcy-1681784662633) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/81b9b12b-0335-4dab-9b85-eeb146b53bf1.png)]

  1. создаватьdataдокумент夹назад,существовать Google облакоконец硬盘серединасуществовать Чтосерединасоздаватьдваиндивидуальныйимядляannotationsиimagesизновыйдокумент夹,Как показано на картинке。 Внизодининдивидуальный Задачаданаполнение Этиглаз录。

этот Экранбыстрый В соответствии споказывать ПонятноChapter10_R-CNNсерединаизглаз录结构и命имяо Конечно:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-mbunY6S9-1681784662634) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/59e995d5-155b-49ca-8e54-76b27fe1e60e.png)]

Как показано на изображении выше, структура каталогов должна быть запущена, как описано здесь:

  • INPUT представлятьimagesдокумент夹,нуждаться предоставляет все данные изображений. Пожалуйста, не забудьте назвать имя перед картинкой середина Обзориз,и Воля.jpgдокументи.xmlдокументначальство传приезжать Взаимноотвечатьизглаз录,Как показано на картинке выше.

Зависит из-за ограничения по размеру, мы не можем Воля изображение Загрузка данныхприезжать GitHub сайт. поэтому,本частьсерединаиспользоватьизизображение Можеткотздесьиз Kaggle Изображения еды (с образцом Вбургера и картофеля фри) скачать. Звоните и загружайте.

  • annotationsдавыходдокумент夹,должно быть пусто,и Волясуществовать Внизодинчастьсерединазаполнять。 Нетхотеть Воляannotationsдокумент夹иотметкаизображение混淆ксоздавать.xmlдокумент. все.xmlдокумент Все放существоватьimagesдокумент夹середина。

Настройте параметры и установите необходимые пакеты

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

  1. существоватьпродолжать Внизодин步До,пожалуйста ВоляChapter10_Tensorflow-Training_a_Object_Detector_GoogleColab.ipynb Python Сохранить файлприжатьез Google Гони тогда Воляитсдля Colab блокнот Открыть。
  2. 运ХОРОШОодин元格Configure参число,Затемпроходитьв соответствии сShift + EnterУстановить Место需из Сумка.
  3. если все в порядке,ноотвечать Долженсуществоватьк Внизкодкусоксерединасмотретьприезжатьпоказывать Модель Конфигурациявыбиратьизвыход。 к Внизвыходотconfig参числосоздаватьтест Модель,этотданачинатьстроитьданныеи Подготовитьруководитьтест Доиз Первый决состояние:
Язык кода:javascript
копировать
Running tests under Python 3.6.9: /usr/bin/python3
 [ RUN ] ModelBuilderTest.test_create_experimental_model
 [ OK ] ModelBuilderTest.test_create_experimental_model
 [ RUN ] ModelBuilderTest.test_create_faster_R-CNN_model_from_config_with_example_miner
 [ OK ] ModelBuilderTest.test_create_faster_R-CNN_model_from_config_with_example_miner
 [ RUN ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_faster_R-CNN_with_matmul
 [ OK ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_faster_R-CNN_with_matmul
 [ RUN ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_faster_R-CNN_without_matmul
 [ OK ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_faster_R-CNN_without_matmul
 [ RUN ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_mask_R-CNN_with_matmul
 [ OK ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_mask_R-CNN_with_matmul
 [ RUN ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_mask_R-CNN_without_matmul
 [ OK ] ModelBuilderTest.test_create_faster_R-CNN_models_from_config_mask_R-CNN_without_matmul
 [ RUN ] ModelBuilderTest.test_create_rfcn_model_from_config
 [ OK ] ModelBuilderTest.test_create_rfcn_model_from_config
 [ RUN ] ModelBuilderTest.test_create_ssd_fpn_model_from_config
 [ OK ] ModelBuilderTest.test_create_ssd_fpn_model_from_config
 [ RUN ] ModelBuilderTest.test_create_ssd_models_from_config
 [ OK ] ModelBuilderTest.test_create_ssd_models_from_config
 [ RUN ] ModelBuilderTest.test_invalid_faster_R-CNN_batchnorm_update
 [ OK ] ModelBuilderTest.test_invalid_faster_R-CNN_batchnorm_update
 [ RUN ] ModelBuilderTest.test_invalid_first_stage_nms_iou_threshold
 [ OK ] ModelBuilderTest.test_invalid_first_stage_nms_iou_threshold
 [ RUN ] ModelBuilderTest.test_invalid_model_config_proto
 [ OK ] ModelBuilderTest.test_invalid_model_config_proto
 [ RUN ] ModelBuilderTest.test_invalid_second_stage_batch_size
 [ OK ] ModelBuilderTest.test_invalid_second_stage_batch_size
 [ RUN ] ModelBuilderTest.test_session
 [ SKIPPED ] ModelBuilderTest.test_session
 [ RUN ] ModelBuilderTest.test_unknown_faster_R-CNN_feature_extractor
 [ OK ] ModelBuilderTest.test_unknown_faster_R-CNN_feature_extractor
 [ RUN ] ModelBuilderTest.test_unknown_meta_architecture
 [ OK ] ModelBuilderTest.test_unknown_meta_architecture
 [ RUN ] ModelBuilderTest.test_unknown_ssd_feature_extractor
 [ OK ] ModelBuilderTest.test_unknown_ssd_feature_extractor
 ----------------------------------------------------------------------
 Ran 17 tests in 0.157s
 OK (skipped=1)

Создайте запись TensorFlow.

Это очень важный шаг,нас许многолюдидляэтот奋斗。 пожалуйстав соответствии с В соответствии ск ВнизшагсоздаватьтыизtfRecordдокумент. ты必须существоватьначальствоодин步середина Установитьвсенеобходимыйиз Сумка,Затемталантпродолжатьосуществлятьэтотшаг:

  1. существовать Изображение вышесерединаизChapter10_R-CNNдокумент夹Вниз,dataВниз有дваиндивидуальныйдокументимядляxml_to_csv.pyигенерироватьtfrecord.py。 Эти файлы следует копироватьприезжать с локального диска. Google Водить машину.
  2. когдатыиспользоватьpip install TensorFlowилиpip install tensorflow-gpuУстановить TensorFlow час,это Волясуществоватьhomeглаз录Вниз Создайтеmodels-masterглаз录。 существовать Чтосередина,навигацияприезжатьresearchдокумент夹,Затемнавигацияприезжатьobject_detectionдокумент夹,ты Воляпопытаться найтиприезжатьxml_to_csv.pyигенерироватьtfrecord.py。 Как уже говорилось ранее, Воля их копировать и вставлять. Google Водить машину. Вы также можете выполнить следующие шаги локально, но даиспользовать. TensorFlow 2.0 Я заметил ошибку приезда при локальном запуске, поэтому верно В этом упражнении мы волясуществовать Google Colab Запустите его.
  3. Далее мы будем Google облакоконец硬盘серединаизChapter10_R-CNNдокумент夹链ловитьприезжатьтыиз Colab блокнот. этотдапроходитьиспользоватьк Вниз Завершение команды из:
Язык кода:javascript
копировать
from google.colab import drive
drive.mount('/content/drive')
  1. После выполнения вышеуказанных действий вам будет предложено ввести Google Drive Ключ, затем существующий после ввода ключа Воля Google Drive нагрузка Colab блокнот.
  2. ловить Вниз Приходить,насиспользоватьк Вниз Заказот Colab блокнотизменятьприезжать Google облакоконец硬盘Chapter10_R-CNNглаз录:
Язык кода:javascript
копировать
%cd /content/drive/My Drive/Chapter10_R-CNN
  1. сейчассуществовать,ты Можеткосуществлятьк Внизшаг ПриходитьгенерироватьtfRecordдокумент.
  2. Введите команду точно так, как показано. этот Заказ Волявсе.xmlдокументотtrainданные Конвертироватьдляdata/annotationsдокумент夹серединаизtrain_labels.csvдокумент:
Язык кода:javascript
копировать
!python xml_to_csv.py -i data/images/train -o data/annotations/train_labels.csv -l data/annotations
  1. этот Заказ Волявсе.xmlдокументотtestданные Конвертироватьдляdata/annotationsдокумент夹серединаизtest_labels.csvдокумент:
Язык кода:javascript
копировать
!python xml_to_csv.py -i data/images/test -o data/annotations/test_labels.csv
  1. Должен Заказотtrain_labels.csvгенерироватьtrain.recordдокумент,отtrainдокумент夹генерироватьизображениеjpgдокумент. этовозвращаться会генерироватьlable_map.pbtxtдокумент:
Язык кода:javascript
копировать
!python generate_tfrecord.py --csv_input=data/annotations/train_labels.csv --output_path=data/annotations/train.record --img_path=data/images/train --label_map data/annotations/label_map.pbtxt
  1. Должен Заказотtest_labels.csvгенерироватьtest.recordдокумент,отtestдокумент夹генерироватьизображениеjpgдокумент. этовозвращаться会генерироватьlable_map.pbtxtдокумент:
Язык кода:javascript
копировать
!python generate_tfrecord.py --csv_input=data/annotations/test_labels.csv --output_path=data/annotations/test.record --img_path=data/images/test --label_map data/annotations/label_map.pbtx
  1. если все пойдет хорошо,那么Переднийизкод ХОРОШОВолягенерироватьк Внизвыход。 этотповерхность示успехгенерировать ПонятнотренироватьсяитестtfRecordдокумент. пожалуйста, обрати внимание,Расширятьимя МожеткдаtfRecordилиrecord
Язык кода:javascript
копировать
/content/drive/My Drive/Chapter10_R-CNN
 Successfully converted xml to csv.
 Generate `data/annotations/label_map.pbtxt`
 Successfully converted xml to csv.
 WARNING:tensorflow:From generate_tfrecord.py:134: The name tf.app.run is deprecated. Please use tf.compat.v1.app.run instead.
 WARNING:tensorflow:From generate_tfrecord.py:107: The name tf.python_io.TFRecordWriter is deprecated. Please use tf.io.TFRecordWriter instead.
 W0104 13:36:52.637130 139700938962816 module_wrapper.py:139] From generate_tfrecord.py:107: The name tf.python_io.TFRecordWriter is deprecated. Please use tf.io.TFRecordWriter instead.
 WARNING:tensorflow:From /content/models/research/object_detection/utils/label_map_util.py:138: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.
 W0104 13:36:52.647315 139700938962816 module_wrapper.py:139] From /content/models/research/object_detection/utils/label_map_util.py:138: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.
 Successfully created the TFRecords: /content/drive/My Drive/Chapter10_R-CNN/data/annotations/train.record
 WARNING:tensorflow:From generate_tfrecord.py:134: The name tf.app.run is deprecated. Please use tf.compat.v1.app.run instead.
 WARNING:tensorflow:From generate_tfrecord.py:107: The name tf.python_io.TFRecordWriter is deprecated. Please use tf.io.TFRecordWriter instead.
 W0104 13:36:55.923784 140224824006528 module_wrapper.py:139] From generate_tfrecord.py:107: The name tf.python_io.TFRecordWriter is deprecated. Please use tf.io.TFRecordWriter instead.
 WARNING:tensorflow:From /content/models/research/object_detection/utils/label_map_util.py:138: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.
 W0104 13:36:55.933046 140224824006528 module_wrapper.py:139] From /content/models/research/object_detection/utils/label_map_util.py:138: The name tf.gfile.GFile is deprecated. Please use tf.io.gfile.GFile instead.
 Successfully created the TFRecords: /content/drive/My Drive/Chapter10_R-CNN/data/annotations/test.reco

Подготовьте модель и настройте конвейер обучения.

ловить Вниз Приходить,использоватьк Вниз Заказскачатьи解压缩Базовый Модель. В разделе "Параметры конфигурации и Установить необходимые пакеты" на шаге середина были выбраны модели, соответствующие параметрам конфигурации. Да соответствии с Параметры конфигурации и Размер пакета Выбор Четыре различных модели (SSD, Faster R-CNN и R-FCN из двух вариантов). Вы можете указать размер партии для начала и Оптимизация существования. моделипериодв соответствии снуждаться вносить коррективы:

Язык кода:javascript
копировать
MODEL_FILE = MODEL + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
DEST_DIR = '/content/models/research/pretrained_model'

существоватьздесь,Целевой каталог для блокировки самого Google Colab,content/models/researchглаз录Сразусуществовать Чтосередина-поэтому,Нет необходимости создавать собственный каталог. При установке требуется часть пакета,На этом операция завершена.

этотшагвозвращаться Воляоттыизlabel_map.pbtxtдокументсерединас动скачать许многодобрый,и изменить размер,Сравниватьпример,Длина и ширина Сравнивать гиперпараметры свертки,Готовиться к тренироваться.

Отслеживайте прогресс обучения с помощью TensorBoard

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

TensorBoard, работающий на вашем локальном компьютере

Добавив следующую строку кода, вы можете TensorBoard добавить вприезжать Модельтренироватьсясередина。 исследовать GitHub страницаначальствопоставлятьизкодкполучать确切Расположение:

Язык кода:javascript
копировать
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)
history = model.fit(x=x_train, y=y_train, epochs=25, validation_data=(x_test, y_test), callbacks=[tensorboard_callback])

Затем,Можетксуществоватьтренироватьсяначинатьназадпроходитьсуществовать Терминалсерединатипк Внизсодержание Приходить Визуализация TensorBoard картина:

Язык кода:javascript
копировать
%tensorboard --logdir logs/fit

TensorBoard, работающий на Google Colab

本Фестивальпредставлятькаксуществовать Google Colab беги дальше TensorBoard。 Это включает в себя следующие шаги:

  1. для Понятносуществовать Google Colab беги дальше TensorBoard, должен быть локальным PC доступ TensorBoard страница. этотдапроходитьимядля ngrok из SERVICE COMPLETE из, СЕРВИС Воля ВАШ из LOCAL PC 链ловитьприезжать TensorBoard。 Ngrok используйте следующие две строки кода для скачивания и извлечения приезда вашего из PC середина:
Язык кода:javascript
копировать
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
  1. ловить Вниз Приходить,использоватьк Внизкод Открыть TensorBoard:
Язык кода:javascript
копировать
LOG_DIR = model_dir
get_ipython().system_raw(
 'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &
 .format(LOG_DIR))
  1. после,настраиватьиспользоватьngrokкиспользоватьпорт6006запускать TensorBoard,Долженпортда Используйте Вкоммуникацияиобменданныеиз迁移коммуникация协议:
Язык кода:javascript
копировать
get_ipython().system_raw('./ngrok http 6006 &')
  1. наконецодин步даиспользоватьк Вниз Заказнастраивать公共 URL кдоступ Google Colab TensorBoard:
Язык кода:javascript
копировать
! curl -s http://localhost:4040/api/tunnels | python3 -c \
 "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

Модель обучения

После выполнения вышеуказанных шагов,насуже Подготовить好руководитьбольшинство重хотетьизшаг-тренироватьсясопределениенервсеть。

Модель обучениядапроходитьк Внизпятьиндивидуальныйшагосуществлятьиз,Этишагтакжесуществоватькодсередина Обзор:

  1. Укажите документ конфигурации.
  2. Укажите выходной каталог модели.
  3. 指Конечно发送STDERRдокументиз Расположение。
  4. Укажите количество шагов обучения.
  5. Укажите количество шагов проверки:
Язык кода:javascript
копировать
!python /content/models/research/object_detection/model_main.py \
 --pipeline_config_path={pipeline_fname} \
 --model_dir={model_dir} \
 --alsologtostderr \
 --num_train_steps={num_steps} \
 --num_eval_steps={num_eval_steps}

этоткодизиллюстрироватьнравиться Вниз:

  • Путь конфигурации конвейера отpipeline_fnameопределение,этотда Модельи Конфигурациядокумент.
  • Model_dirдаtrainingглаз录。 УведомлениеTensorBoard LOG_DIRтакже映射приезжатьmodel_dir,поэтому TensorBoard существоватьтренироватьсяпериодполучатьданные。
  • тренироваться шаги оценки из количества дасуществовать конфигурацию настройки периода заранее определитьиз,Да соответствии снуждаться, чтобы отрегулировать.

тренироваться После успешного старта,ты Воляначинатьсуществовать Jupyter Просматривайте сообщения в записной книжке. существоватьнекоторый Сумканачальствоизнекоторый警告被弃использоватьпосле,Вы начали видеть шаги «приехатьсвязанныйтренироваться» из аннотации и успешно открыли динамическую библиотеку:

Язык кода:javascript
копировать
INFO:tensorflow:Maybe overwriting train_steps: 1000

 Successfully opened dynamic library libcudnn.so.7
 Successfully opened dynamic library libcublas.so.10
 INFO:tensorflow:loss = 2.5942094, step = 0
 loss = 2.5942094, step = 0
 INFO:tensorflow:global_step/sec: 0.722117
 global_step/sec: 0.722117
 INFO:tensorflow:loss = 0.4186823, step = 100 (138.482 sec)
 loss = 0.4186823, step = 100 (138.482 sec)
 INFO:tensorflow:global_step/sec: 0.734027
 global_step/sec: 0.734027
 INFO:tensorflow:loss = 0.3267398, step = 200 (136.235 sec)
 loss = 0.3267398, step = 200 (136.235 sec)
 INFO:tensorflow:global_step/sec: 0.721528
 global_step/sec: 0.721528
 INFO:tensorflow:loss = 0.21641359, step = 300 (138.595 sec)
 loss = 0.21641359, step = 300 (138.595 sec)
 INFO:tensorflow:global_step/sec: 0.723918
 global_step/sec: 0.723918
 INFO:tensorflow:loss = 0.16113645, step = 400 (138.137 sec)
 loss = 0.16113645, step = 400 (138.137 sec)
 INFO:tensorflow:Saving checkpoints for 419 into training/model.ckpt.
 model.ckpt-419
 INFO:tensorflow:global_step/sec: 0.618595
 global_step/sec: 0.618595
 INFO:tensorflow:loss = 0.07212131, step = 500 (161.657 sec)
 loss = 0.07212131, step = 500 (161.657 sec)
 INFO:tensorflow:global_step/sec: 0.722247
 ] global_step/sec: 0.722247
 INFO:tensorflow:loss = 0.11067433, step = 600 (138.457 sec)
 loss = 0.11067433, step = 600 (138.457 sec)
 INFO:tensorflow:global_step/sec: 0.72064
 global_step/sec: 0.72064
 INFO:tensorflow:loss = 0.07734648, step = 700 (138.765 sec)
 loss = 0.07734648, step = 700 (138.765 sec)
 INFO:tensorflow:global_step/sec: 0.722494
 global_step/sec: 0.722494
 INFO:tensorflow:loss = 0.088129714, step = 800 (138.410 sec)
 loss = 0.088129714, step = 800 (138.410 sec)
 INFO:tensorflow:Saving checkpoints for 836 into training/model.ckpt.
 I0107 15:44:16.116585 14036592158
 INFO:tensorflow:global_step/sec: 0.630514
 global_step/sec: 0.630514
 INFO:tensorflow:loss = 0.08999817, step = 900 (158.601 sec)
 loss = 0.08999817, step = 900 (158.601 sec)
 INFO:tensorflow:Saving checkpoints for 1000 into training/model.ckpt.
 Saving checkpoints for 1000 into training/model.ckpt.
 INFO:tensorflow:Skip the current checkpoint eval due to throttle secs (600 secs).

 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.505
 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.915
 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.493
 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.200
 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.509
 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.552
 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.602
 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.611
 Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.600
 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.611

 SavedModel written to: training/export/Servo/temp-b'1578412123'/saved_model.pb
 INFO:tensorflow:Loss for final step: 0.06650969.
 Loss for final step: 0.06650969.

пожалуйста, обрати внимание Переднийпоказыватьизвыход。 в соответствии стыиз CPU/GPU Функция, для выполнения этого шага требуется разное время. существовать Переднийизтренироватьсявыходсерединахотеть Уведомлениеизбольшинство重хотетьизиметь значениедатренироватьсяпериодиз Точностьиотзывать率ценить。

Запуск тестов вывода

Этот шаг включает в себя экспорт диаграммы вывода и Запуск. тестов вывода。 Сделайте вывод даиспользовать следующее Python Завершение команды из:

Язык кода:javascript
копировать
!python /content/models/research/object_detection/export_inference_graph.py \
 --input_type=image_tensor \
 --pipeline_config_path={pipeline_fname} \
 --output_directory={output_directory} \
 --trained_checkpoint_prefix={last_model_path}

Здесь,last_model_pathдаmodel_dir,Чтосерединасуществоватьтренироватьсяпериодхранилище Модельисследоватьточка,иpipeline_fnameда Модельпутьи Конфигурациядокумент. исследоватьточка涵盖тренироватьсяпроцесссередина Модельиспользоватьиз参числоценить。 На рисунке ниже Четыре различных результата Моделиза в ходе развития показалитренироваться. следует выполнить вышеуказанные шаги и выбрать только разные типы моделей, их можно запускать один за другим:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-6cvH4PD5-1681784662634) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/e37adfb1-d76d-4334-bd0c-a4449b18bf33.png)]

пожалуйста, обрати внимание,Переднийнестиприезжатьизприносить有кодкусокиз Модель Иголкаверно Четыре种другойиз Модель运ХОРОШО。 Прежде чем запускать следующую индивидуальную модель, нажмите кнопку Google Colab Наверх страницы из «время выполнения», затем выберите «время выполнения с возвратом к заводским настройкам», чтобы новая модель начиналась заново. Обратите внимание, что SSD Модель все еще не может правильно получить изображение Обнаружения, и R-CNN и R-FCN Тогда вы сможете правильно заказывать бургеры и картошку фри. Это возможнода Зависит бургер и картофель фри почти одинакового размера, и мы Обзор SSDсерединаучитьсяприезжать SSD Можете ли вы лучше сравнить различные примеры изображений.

настраивать TensorBoard назад,Можетксуществовать TensorBoard Визуальный вывод.

TensorBoard Иметь индивидуальную вкладку - скаляр, изображение икартина. Скаляры включают mAP (Точность), отзывать коэффициент и величину потерь, изображение включает в себя предыдущее из визуального изображения, число включает в себя TensorFlow картинаfrozen_inference_graph.pbдокумент. пожалуйста, обрати внимание,Точностьиотзыватьмежду ставкамиизразницаопределениенравиться Вниз:

  • Точность = Истина / (Истина + Ложное срабатывание)
  • отзыв = истина/(истина + ложноотрицательный результат)

На что следует обратить внимание при использовании моделей нейронных сетей

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

  1. насразвиватьиз Модельсуществоватьвсе Состояние Вниз Все能только确предсказывать吗? Ответ — нет. Должен Модельтолькоburgerиfriesдвадобрый,Таким образом, он может иметь форму другого гамбургера, похожую на изверно, как,Например, пончики. Чтобы решить эту проблему,наснуждатьсянагрузка Похоже на: Вburgerизизображениеи Воля Что分добрыйдля Нетburger,Затемиспользовать Эти Что他изображениенабор Модель обучения。
  2. для Чтонас听приезжатьнаснуждаться成千начальство万张изображение в будущемтренироватьсянервсеть? Если вы начинаете с нейронной сети, вы можете начать с нейронной сети или даже передать обучение другой сети (например, Inception или ResNet) середина набирает вес, но если Модельот еще не видела, как приезжает ваш из нового имиджа, то ваш Волянуждатьсяк становится меньше 1,000 изображения. 1,000 индивидуальный Приходитьс ImageNet данныенабор,Каждыйиндивидуальныйдобрыйиметь 1,000 индивидуальныйизображение。
  3. Если мы нуждаемся в тысячах изображений, чтобы тренироваться, то для какого существования нашего середина это может сработать? существуют наши из случая середина, наши используют трансферное обучение и скачать ImageNet данныенаборизмасса。 ImageNet данныенаборуже Воляcheeseburgerделатьдляодиндобрый,поэтомувернонемного В 100 Переносное обучение хорошо работает с изображениями.
  4. существоватьиспользоватьнемного В 1000 Когда образ развития Моделиз возникает вообще без какого-либо объекта? существоватьвернослони ImageNet добрыйсерединаизлюбойвернослон Все Нет常другойиз Состояние Вниз,Например,Обнаружениеприезжатьизцарапины на кузове автомобиля,Инфракрасное изображение изохронное.

Обзор Mask R-CNN и демо-версия Google Colab

Mask R-CNN Зависит от Kaiming He,Georgia Gkioxari,Piotr Dollar и Ross Girshick существовать CVPR 2017 предложено в. Маска R-CNN использовать R-CNN эффективно Обнаружениеизображениесерединаизвернослон,同час Иголкаверно Каждыйиндивидуальныйобласть интересы верно выполняет задачи сегментации слонов. Таким образом, задачи сегментации, классификации и регрессии ограничительной рамки работают параллельно. Mask R-CNN изпередовой Архитектуранравиться Вниз:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-5SLMxjXQ-1681784662639) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/2884d889-f0b0-44e5-83cf-22ec8797f59a.png)]

Mask R-CNN выполнитьиз Подробностинравиться Вниз:

  • маска R-CNN следовать Faster R-CNN из общего двухступенчатого принципа, но модифицированного - Одноступенчатый. RPN и Faster R-CNN такой же. Нет.дваэтап,быстрыйскорость R-CNN,этоотобласть интересовRoI)серединаруководитьособенностьизвлекать,Классификация и регрессия ограничивающего прямоугольника начинаются,возвращатьсядля Каждыйиндивидуальный RoI Выходная двоичная маска 。
  • Маска положения введена верно, как форма пространства. маска R-CNN использовать полностью сверточную сеть для семантической сегментации, для Каждыйиндивидуальный RoI предсказыватьодининдивидуальный(M x N)маска。
  • Волякарта объектов划分дляM x N网格назад,Воля RoI Align Приложение ВРегиональная сеть предложенийизвыход,Затемсуществовать Каждыйиндивидуальныйкоробкасерединаотвечатьиспользовать2 x 2коробкаи Четыреиндивидуальныйвыборкаточка ,использовать双Проволокасекс插ценитьвыбирать。 RoI Align Используйте ВВоляизвлекатьизособенностьивходитьверновместе。
  • 骨干нервсетьпроходитьизвлекать Нет.Четыреэтапизнаконецсверткаслой Приходитьиспользовать ResNet-50 или 101。
  • Измените размер тренировать изображение, чтобы сделать края короче для 800 пикселей. Каждыйиндивидуальный微型партия Каждыйиндивидуальный GPU Иметь два изображения, положительный образец и отрицательный образец. 1:3。 Обучение продолжается 160,000 次Итерировать,скорость обучения0.02высокий达 120,000 次Итерировать,Затем Внизуронитьприезжать0.002。 использовать0.0001измасса衰减и0.9изимпульс。

Mask R-CNN Демонстрация сегментации изображения выполняется с помощью Google Colab писатьиз

Ноутбук загружает пример изображения и активирует его через TPU создавать TensorFlow сессия. Затем загрузите маску претренироватьсяиз Модель. Затем R-CNN выполняет сегментацию и прогнозирование экземпляров. Этот блокнот взят из Google Colab Сайт, была сделана только одна модификация - функция загрузки изображений. На рисунке ниже показано Mask R-CNN из Выход:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-pbLgGWsq-1681784662639) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/e44dbd61-bc59-4d04-8207-5fc4e0e34536.png)]

Mask R-CNN существовать Передний Обзориз Coco обучен на наборе данных. поэтому,human,carиtraffic lightужедадляэтотпредварительно Конечноиздобрый。 Каждыйиндивидуальныйлюди,Для автомобилей и светофоров используется ограничительная рамка.,И нарисуйте фигуру по частям.

Разработка моделей отслеживания объектов в дополнение к детекторам объектов.

вернослонотслеживатьот Обнаружение объектов запускается, каждый раз Обнаружению присваивается набор уникальных из ID и сохраняйте его, когда значок перемещается ID。 существовать本Фестивальсередина,Воляподробныйописыватьдругойдобрый型извернослонотслеживать Модель.

Отслеживание на основе центроида

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

СОРТИРОВАТЬ отслеживание

SORT да Зависит от Alex Bewley,Zongyuan Ge,Lionel Ott,Fabio Ramos и Ben Upcroft существовать Чтоимядля《简одинсуществовать Проволокаи实часотслеживать》избумагасерединапредлагатьиз。 Эта статьяиспользовать Faster R-CNN руководить Обнаружение,и Карта尔曼фильтри Венгерский алгоритм Используйте Вмногоглаз标отслеживатьMOT)руководить实час。 отслеживатьвыполнитьиз Подробности Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。

DeepСОРТИРОВАТЬ отслеживание

существовать CVPR 2017 Вверх, Николай Wojke,Alex Bewley и Dietrich Paulus существоватьихизбумагасерединапредлагать Понятно DeepСОРТИРОВАТЬ отслеживание, название его статьи - «использовать индикатор глубокой корреляции из простой линии существования и наблюдения в реальном времени». Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Долженбумагаиз Подробности.

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

Должен Архитектураиз细Фестиваль Обзорнравиться Вниз:

  • отслеживатьпландасуществоватьвосемьизмерениегосударственное пространство(u, v, γ, h, x, y, γ, h)начальствоопределениеиз,Чтосередина(u, v)даограничивающая рамкасередина Сердце Расположение,γдадлина и ширина Сравнивать,hдавысокий度。
  • Фильтр Калмана в соответствии Информация о текущем положении и скорости предсказывает будущее состояние. существовать DeepSORT середина,на основе Расположениеискорость度из Карта尔曼фильтр Используйте В查попытаться найти Внизодининдивидуальныйотслеживать Расположение。
  • верно ВКаждыйиндивидуальныйотслеживатьk,существует период прогнозирования фильтра Калмана верно количество кадров, которые необходимо подсчитать и увеличить,исуществовать Обнаружение объектовпериод Воля Что重置для0。 Удалите первые три отдельных кадра, которые превышают пороговое значение или Обнаружение, не имеющее отношения к трекам.
  • Прогнозируемые из состояния Калмана и новые прибытия из измеренных значений из корреляции получаются между двумя состояниями (предсказанными из измеренных значений и новыми измеренными значениями) из расстояния Махаланобиса и между дескрипторами внешнего вида из косинусного сходства из комбинации для решения.
  • Введено индивидуальное сопоставление из каскада, которое отдает приоритет более распространенным изверно объектам.
  • вычислить ассоциацию IoU для иллюстрации сцены внезапного исчезновения из ситуации.
  • Уменьшите глубину и увеличьте ширину и ширину ResNet Нейронные сети использовались для повышения производительности тонких остаточных сетей. Ширинаиз ResNet слойиметьдваиндивидуальныйсверткаслойишестьиндивидуальный残差кусок。
  • DeepSort использоватьверно 1,251 Пешеход 110 Десять тысяч человеческих изображений были подвергнуты тренированному извлечению «Модель» и «для Каждыйиндивидуальный ограничивающий прямоугольник». 128 индивидуальный вектор тусклости для извлечения признаков.

OpenCV отслеживатьметод

OpenCV имеет множество встроенных методов отслеживания:

  • BOOSTING отслеживатьустройство:на основе Haar Каскад из старого наблюдения.
  • MIL отслеживатьустройство:Сравнивать BOOSTING учет иметь более высокую точность.
  • ядерный фильтр по теме (KCF):этот Сравнивать BOOSTING и MIL отслеживатьустройствобыстрый。
  • CSRT отслеживатьустройство:этот Сравнивать KCF Более точно, но отслеживание может быть медленнее.
  • MedianFlow отслеживатьустройство:когдавернослон有规律из运动и且существоватьвсеиндивидуальныйпоследовательностьсередина Может见час,Это записывающее устройство Воля работает.
  • TLD отслеживатьустройство:пожалуйста勿использовать。
  • MOSSE отслеживатьустройство:Нет常быстрыйскоростьизотслеживатьустройство,Но не так хорошо, как CSRT или KCF.
  • GOTURN отслеживатьустройство:на на основе глубокого обучения изверно слон-контролер.

OpenCV серединаначальство述методизвыполнитьнравиться Вниз:

Язык кода:javascript
копировать
tracker = cv2.TrackerBoosting_create()
tracker = cv2.TrackerCSRT_create()
tracker = cv2.TrackerKCF_create()
tracker = cv2.TrackerMedianFlow_create()
tracker = cv2.TrackerMIL_create()
tracker = cv2.TrackerMOSSE_create()
tracker = cv2.TrackerTLD_create()

на основе Сиамскийсетьизотслеживать

Luca Bertinetto,Jack Valmadre,Joao F. Henriques,Andrea Vedaldi и Philip HS Torr Ее существование имеет веху из статьи «Полностью сверточная сиамская сеть с целевым мониторингом В», предложенной серединой основе Сиамскийсетьизвернослонотслеживать。 МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумагаиз Подробности.

существовать Эта статьясередина,делать ВОЗтренироваться Понятноодининдивидуальныйглубинасверткасетьк离Проволокаразвивать Взаимно似секс函число,Затем Воля Чтоотвечать Используйте В实часвернослонотслеживать。 Функция сходства да сросшаяся CNN, тест Воля итренировать ограничивающую рамку (реальный случай) Сравнивать сравнение и возвращать высокие баллы. Если две ограничивающие рамки имеют одинаковое изображение и имеют более низкий балл, то изображения разные.

Сиамскийсетьпроходить Взаимно同изнервсеть传递дваиндивидуальныйизображение。 Он удаляет последний отдельный полносвязный слой, чтобы вычислить вектор признаков, который существует «Нет. 6 Описана глава "Использовать Transfer Learning из Визуального поиска" середина. Затем С сравнение сравнивает сходство двух векторов индивидуальных признаков. Таким образом, сиамская сеть не имеет полностью подключенной сети. Следовательно, используются только сверточные фильтры, и поэтому сеть полностью сверточная по отношению к входному изображению. Преимущество полностью сверточной сети заключается в том, что она не зависит от размера. поэтому,любойвходитьразмервсе Может Используйте Вtestиtrainизображение。 Внизкартинаиллюстрировать Понятно Сиамскийсетьиз Архитектура:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-0hJ7r7gQ-1681784662639) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/c5197e16-6f1d-47e0-875c-e2e789f29750.png)]

существовать Долженкартинасередина,сетьизвыходдакарта объектов。 проходить CNN(f[θ])重复Долженпроцессдва次,один次соответственноруководитьтест(x)итренироваться(z)。 изображение,Создайте две взаимосвязанные карты объектов.,нравиться Вниз Место示:

g[θ](z, x) = f[θ](z) * f[θ](x)

отслеживатьначинатьнравиться Вниз:

  • Исходное положение изображения = Первый前изглаз标Расположение
  • Смещение = шагать, умноженное на максимальное количество очков в фазе. Верно Всесредина Сердцеиз позиции
  • новое место = исходное положение + Смещение

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

на основе SiamMask изотслеживать

существовать CVPR 2019 Вверху: Ван Цян, Чжан Ли, Лука Бертинетто, Ху Вэймин Phillip H.S.Torr существоватьихизбумага《быстрыйскоростьсуществовать Проволокавернослонотслеживатьисегментация:统одинметод》серединапредлагать Понятно SiamMask。 связанный Эта статьяиз Дажемного Подробности,Видетьздесь

SiamMask использует одиночную индивидуальную ограничивающую рамку исходный и Каждую секунду регистрирует как ограничивающую рамку со скоростью 55 кадров.

существоватьэтот,Воля Сиамскийсетьиз简один互Связанныйзаменятьдляглубина Связанный,Чтобы сгенерировать несколько рядов ответов, изображение:

  • использовать简одиниздваслой1 x 1сверточная нейронная сетьhfдизайнw x hдва元маска(Каждыйиндивидуальныйкарта объектоводининдивидуальный)。 Нет.Один слойиметь 256 индивидуальныйряд,Нет.Второй этажиметь1 x 1ряд。
  • ResNet-50 Используйте В CNN,До конца трех этапов,наконецк1 x 1сверткаслой结束。 Обратите внимание, что ResNet-50 иметь четыре индивидуальных этапа, но учитывались только первые три индивидуальных этапа, и верношагать 1 из Конволюция была изменена, чтобы уменьшить количество выходных данных Воли шагать за счет приезжать 8。
  • существовать DeepLab серединаиспользовать Понятно扩张из(бессмысленныйиз)свертка(существовать “Нет. 8 Глава», «Семантическая сегментация и нейронный перенос стилей» середина подробно описана) для увеличения рецептивного поля. ResNet Нет.Окончательный результат трех этапов был добавлен. 256 индивидуальныйвыходиз1 x 1свертка。

Можетсуществоватьздесь Искать наприезжатьсвязанный SiamMask выполнитьа такжетренироватьсяиз Подробнее. SiamMask также Можетксуществоватьэтотиндивидуальныйстраницаначальствоиспользовать。 Обратите внимание: для успешной работы видеофайл должен начинаться с портрета.

Подвести итог

существовать本главасередина,ты Воляотголоваприезжать尾全лапшаучиться Различный Обнаружение объектовустройствометода такжеиспользовать Собственныйизсопределениеизображениетренироваться Обнаружение объекты из практических методов. Некоторые ключевые концепции для изучения возможности трудоустройства включают в себя: как и Google Cloud Вместеиспользуйте для оценки Обнаружение объектовустройство,какиспользоватьlabelImgсоздаватьотметкадокумент,как Воля Google Drive 链ловитьприезжать Google Colab Блокнот для чтения файлов, как создать TensorFlow .xmlи.jpgдокументсерединаизtfRecordдокумент,Как начать процесс тренироваться существовать и процесс тренироваться середина мониторит показания,Как использовать TensorBoard для наблюдения за точностью тренироваться,каксуществоватьтренироватьсяназад保жить Модельа Также Как сохранить из Модель для вывода. использоватьэтот种метод,ты Даыбиратьвернослондобрыйисоздавать Используйте Врассуждениеиз Обнаружение объектов Модель. Вы также изучили различные методы надежного контроля, такие как Kalman Фильтрация на основеNeural Networkизотслеживать, например DeepSORT ина на основе сиамской сети изверно похоже на метод отслеживания. Следующим шагом вы можете Воля Обнаружение объектов Модельсоединятьприезжатьотслеживатьметодкотслеживать Обнаружениеприезжатьизвернослон。

существовать Внизодинглавасередина,нас Воляпроходитьсуществоватьпериферийное устройство(Напримерсотовый телефон) середина оптимизация и развертывание нейронной сети Модель для изучения границ компьютерное зрение。 Еще мы Воля научимся пользоваться Raspberry Pi Сделать в режиме реального времени объектов。

Раздел 4. Реализация TensorFlow на периферии и в облаке

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

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

  • Изучите, как периферийные устройства используют различные технологии аппаратного ускорения и оптимизации программного обеспечения. на основе Модель нейронной сети выполняет вывод с минимальной задержкой (Net. 11 глава)
  • учиться MobileNet Модельиз теории, из-за ее скорости обычно используются существующие периферийные устройства середина (Net. 11 глава)
  • использовать Intel OpenVINO набор инструментови TensorFlow Lite существовать RaspBerry Pi середина Развертывание модели нейронной сети для обнаружения объектов(Нет. 11 глава)
  • проходитьсуществовать Android Studio и Xcode серединаиспользовать TensorFlow Lite развертывать Модель Приходитьсуществовать телефон Андроиди iPhone начальствоосуществлять Обнаружение объектов(Нет. 11 глава)
  • использовать Create ML тренироватьсясопределение Обнаружение объектовустройство,ииспользовать Xcode и Swift Воля Чторазвертыватьсуществовать iPhone начальство(Нет. 11 глава)
  • верно Различный Облачная платформаиз База结构有одининдивидуальныйобщийтелоучиться- Облачная платформа GoogleGCP), Amazon Web ServicesAWS) ,а также Облачная платформа Microsoft Azure(Нет. 12 глава)
  • дляиспользовать GCP,AWS и Azure изсопределение Обнаружение объектовразвиватьконецприезжатьконецмашинное обучениеплатформа(Нет. 12 глава)
  • учитьсякакиспользовать TensorFlow Провести масштабную тренированную упаковку (Нет. 12 глава)
  • использовать GCP,AWS и Azure Выполните визуальный поиск (Нет. 12 глава)

В этот раздел входят следующие главы:

  • «Нет. Глава 11», «проходить оптимизацию CPU/GPU существует глубокое обучение на периферийных устройствах»
  • “Нет. 12 глава",“Используйте Вкомпьютерное зрениеизоблаковычислитьплатформа”

11. Глубокое обучение на периферийных устройствах с оптимизацией ЦП/ГП

приезжатьглаз前дляконец,Мы научились предварительно обрабатывать данные,Модель обученияа такжеиспользовать Python PC Генерация среды приводит к развитию модели глубокого обучения.

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

Специальный да,использовать TensorFlow Lite и Intel открыть视觉сделать выводинервсеть优изменятьVINO)Архитектура,и развернуть приезжать Raspberry Pi,Android и iPhone。 Хотя эта глава в первую очередь посвящена Raspberry Pi,Android и iPhone начальствоиз Обнаружения объектов,Но наше введение в метод Воли может расширить классификацию изображений.,Миграция стилей рассматривается с любого периферийного устройства при распознавании действий.

Эта глава разделена на следующие разделы:

  • Обзор глубокого обучения на периферийных устройствах
  • Технологии оптимизации GPU/CPU
  • Обзор Мобилнет
  • использовать Raspberry Pi Выполнить обработку изображения
  • использовать OpenVINO руководить Модель Конвертироватьирассуждение
  • Приложения TensorFlow Lite
  • использовать TensorFlow Lite существовать Android начальстворуководить Обнаружение объектов
  • использовать TensorFlow Lite существовать Raspberry Pi начальстворуководить Обнаружение объектов
  • использовать TensorFlow Lite и Create ML существовать iPhone начальстворуководить Обнаружение объектов
  • Различныйотметкаметодиз摘хотеть

Обзор глубокого обучения на периферийных устройствах

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

В зависимости от аппаратной и программной платформы Edge AI может выполнять три независимые комбинации функций:

  • Аппаратное ускорение заставляет ваше устройство работать быстрее
  • Оптимизация программного обеспечения уменьшает размер и удаляет ненужные компоненты.
  • Взаимодействие с облаком для пакетной обработки изображений и тензоров

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

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

  • NVIDIA Jetson Nano
  • Raspberry Pi + Intel Neural Network Stick
  • Coral развиватьтарелка + Coral USB ускоритель
  • Orange Pi + Intel Neural Network Stick
  • ORDOID C2
  • телефон Андроид
  • телефон iOS

Внизповерхность Подвести Характеристики производительности различных периферийных устройств перечислены выше. ты Даспользоватьэтотповерхность Приходить确Конечновыбиратьпроцесс:

устройство

GPU

CPU

Память

ускоритель

NVIDIA Jetson Nano 69 x 45 мм

128 ядер NVIDIA Максвелл

Четырехъядерный процессор ARM Cortex A57

4 ГБ ОЗУ, 16 ГБ встроенной памяти

параллельный процессор

Raspberry Pi 4 85 x 56 мм

ARM Cortex A72 на частоте 1,5 ГГц

4 ГБ ОЗУ, 32 ГБ встроенной памяти

Макетная доска Coral 48мм x 40мм

набор成из GC7000 Lite графика

Четырехъядерный процессор Cortex-A53 плюс Cortex-M4F

1 GB LPDDR4

Google Edge TPU ML ускоритель сопроцессора

Оранжевый Пи 85мм х 55мм

ARM Mali-400 MP2 GPU @ 600MHz

4 Cortex-A7 @ 1,6 ГГц

1 GB DDR3 SDRAM

Одроид C2 85 мм x 56 мм

Mali 450MP3

Четырехъядерный процессор ARM Cortex-A53 с частотой 1,5 ГГц

2 GB DDR3 SDRAM

Intel нейронная сеть Stick

Интел Movidius Myriad X Блок визуальной обработки (ВПУ), иметь 16 индивидуальныйиметь дело сядерный Сердцеиодининдивидуальныйсетьаппаратное обеспечениеускоритель

Интел OpenVINO набор инструментов

Coral USB ускоритель

Google Edge TPU ML ускоритель сопроцессора, поддержка AUTOML Vision Edge

TensorFlow Lite Модельподдерживать

Android Pixel XL: 155 x 76 мм

Ardeno 530

2 индивидуальный 2.15 GHz Kryo и 2 индивидуальный 1.6 GHz Kryo

4 GB Память

iPhone XR 155 x 76 мм

бионический чип A12

бионический чип A12

3 GB Память

Технологии оптимизации GPU/CPU

середина ЦПCPU)хозяинхотетьосуществлять串ХОРОШОиметь дело с,играфический процессорGPU)и ХОРОШО运ХОРОШО进程и且Можеткодин次осуществлятьбольшой量действовать,оти加быстрый Понятноиметь дело сскорость度。 GPU серединаизданныесказатьдля Проволока程。 использоватьВычислить унифицированную архитектуру устройствCUDA)иоткрытый компьютерный языкOpenCL)верно GPU программировать. CPU Выполните множество различных видов извычислить, при этом GPU Специализируйтесь на обработке определенного извычислить, например на обработке изображений. для Чтобы периферийные устройства обеспечивали результаты без задержек, они должны сопровождаться ускорителем, графическими процессорами. Оптимизация программного обеспечения.

к Вниздаодин些в целом Используйте В GPU/CPU Метод оптимизации:

  • Оптимизация моделиметод,Напримеризображениебольшой小,пакетная нормализация,градиент Внизуронитьждать。
  • на ОснованиеMagnitude из Обрезание веса приводит к изменению веса модели. Веса модели очищаются, чтобы сделать модель более разреженной и облегчить ее сжатие. Пожалуйста, смотрите ниже链ловитькучиться修剪технология
  • GPU Память раздел, например NVIDIA Jetson Nano。
  • использовать Используйте ВIntel нейронная сеть Стикиз Универсальный API,существовать CPU,GPU и FPGA На неоднородном вычислить.
  • SWAP пространство для RAM Памятьраспространятьдисккосмос。
  • Волятензорный процессорTPU)и CPU или GPU объединитьиспользовать。 CPU арифметические действия выполняются последовательно, при этом GPU Выполняйте несколько арифметических операций одновременно. TPU Зависит от Google развивать,Используйте В加скоростьнервсетьиметь дело с。 существовать TPU середина,Арифметические операции напрямую связаны друг с другом.,и无需использоватьлюбой Память。
  • 量изменять,Прямо сейчас Волямассаот 32 Кусочек Конвертироватьдля 8 Кусочек.
  • телефон iOSиспользоватьдругойиз金род Приходитьдоступ Графический процессор для увеличения скорости обработки изображений. связанный Дажемного Подробности,пожалуйста参阅здесь
  • верно В телефон Андроид,Пожалуйста, обратитесь к VR Тесты производительности доступны в исследованиииз GPU/CPU Метод оптимизации

Обзор Мобилнет

Google изодининдивидуальныйкомандасуществовать CVPR 2017 серединаизтитулдля 《MobileNets: действительно эффективное и надежное мобильное приложение для машинного зрения нейронная сеть》серединапредставлять Понятно MobileNet。 ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжатьэтот MobileNet бумага.

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

  • Глубоко отделимая свертка
  • 逐точка1 x 1свертка

пожалуйста, обрати внимание,нассуществовать“Нет. 4 Глава», «Глубокое обучение изображений» и «Нет. 5 глава",“нервсеть Архитектураи Модель”серединаописывать Понятно1 x 1сверткаиз重хотетьсекс。 Вы можете нуждаться, перечитав главу «Эти».

Как работает глубокая свертка:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-2izNPwOe-1681784662640) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/08af9c03-40d5-4011-b437-39eb0e08a60c.png)]

существовать Изображение вышесередина,мы можем посмотреть приезжатьк Внизсодержание:

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

Обработка изображений с помощью Raspberry Pi

Raspberry Pi да Нет GPU Одноплатная микровычислительная машина, может быть подключена к внешней камере и другим сенсорным модулям и может использоваться Python Программирование для выполнения компьютерного визуальные работы, такие как целевое Обнаружение. Raspberry Pis иметьвстроенныйиз Wi-Fi, поэтому они могут беспрепятственно подключаться к Интернету для получения и передачи данных. Зависит от ВБлагодаря своей тонкой форме и мощным вычислительным возможностям Raspberry Pi да Используйте ВИнтернет вещейикомпьютерное Работа зрения с помощью краевого устройства — идеальный пример. МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжатьсвязанный Raspberry Pi из Подробности. На рисунке ниже показано Raspberry Pi из完всенастраивать:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-KvYBmKz0-1681784662640) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/2dab1ebe-b2b9-4fb6-b3f4-948c143b26cd.png)]

В следующих разделах будут представлены Raspberry Pi изподробныйаппаратное обеспечениенастраивать。

пожалуйста, обрати внимание,этотизображение Волясуществоватьк Внизнастраиватьчастьсерединамного次Список出。

Настройка оборудования Raspberry Pi

к Внизданачинать Raspberry Pi настройки Некоторые важные моменты, которые следует учитывать перед началом работы:

  • Заказать последнюю версиюиз Raspberry Pi 4 – Вы можете напрямую от Raspberry Pi илиот любого существующего интернет-магазина, чтобы получить.
  • Получить иметь 4 GB RAM и 32 GB MicroSD Картаиз Raspberry Pi。 существоватьбольшинство Состояние Вниз,Raspberry Pi Все полезны NOOBS Программирование MicroSD Карта. 订购前пожалуйстаисследоватьодин Вниз。
  • Если ты Raspberry Pi Не поставляется с программированием MicroSD карта, пожалуйста, купите 32 GB из MicroSD Карта,Затемпроходитьизменятьприезжатьздесьсуществовать Чтоначальство Установить NOOBS。 дляэтот,ты必须существовать Используйте В PC из MicroSD 适配устройствосередина Установить MicroSD карту, затем используйте обычную PC Воля NOOBS скачатьприжаз на карту. После программирования снимите адаптер середина. MicroSD карту, а потом Воля вставь ее Raspberry Pi MicroSD слот, слот В Raspberry Pi Внизнаправление,существовать USB Слот расположен в углу, возле кнопки питания. связанный Подробнее смотрите в предыдущем разделе середина ШОУ из фотографий.
  • большинство Raspberry Pi Ни один из них не поставляется с модулем камеры, поэтому заказывайте его отдельно. Расположение порта модуля камеры В HDMI Рядом с портом HDMI На порту имеется черный пластиковый зажим. В комплект поставки камеры входит белый ленточный кабель. Вы можете вытянуть черный пластиковый зажим модуля камеры и полностью вставить в него белый шлейф так, чтобы блестящая поверхность была направлена ​​в сторону. HDMI порт. Вставив ленточный кабель, полностью нажмите на пластиковый зажим, чтобы закрыть его и надежно присоединить ленточный кабель к модулю камеры. связанный Для получения дополнительной информации смотрите фотографии серединаиз в предыдущем разделе.
  • Воля кабель мыши, кабель клавиатуры и HDMI Кабельное подключение позволяет получить внешний монитор. Обратите внимание, что это не является обязательным, поэтому вы можете использовать PC проходить Wi-Fi подключиться, чтобы подключиться Raspberry Pi。
  • Купить Intel Neural Network Stick 2 И Воля его вставка USB Один из портов. Обратите внимание, что Intel нейронная сеть Палка занимает дополнительную ширину, поэтому вам придется иметь каждый индивидуальный USB порт(палка нейронной сети,Используйте Вклавиатураиз USB и Используйте Мышьиз USB) из творчества.
  • все После завершения подключения подключите источник питания. Raspberry Pi серединаиз Красный свет загорится, а зеленый свет рядом с ним будет время от времени мигать, указывая на то, что microSD Карта включена. Это указывает на то, что все в порядке. Внизодин Фестиваль Воляобсуждатькакнастраивать Взаимно机。

Настройки программного обеспечения камеры Raspberry Pi

существовать本Фестивальсередина,нас Воля Исследоватьдля Понятно Учреждать Используйте Вкомпьютерное зрениеиз Raspberry Pi «нужен» Python серединаизкаждыйиндивидуальныйкодчасть。

Мы можем воля настроить камеру для видеоплеера. существовать Raspberry Pi Терминал серединаиспользует следующие команды. Эта команда Воля выполняет необходимые обновления пакета и запускает новый Raspbian Установить:

Язык кода:javascript
копировать
$sudo apt update
$sudo apt full-upgrade
$sudo raspi-config

После ввода последней индивидуальной команды Raspberry Pi Появятся некоторые диалоговые окна. Выберите «Необходимо» из опции интерфейса, выберите индивидуальную камеру и нажмите «да» да «Нет», чтобы дать. Возможность интерфейса камеры? Затем перезапустите Raspberry Pi,исуществоватьзапускатьназадсуществовать Терминалсерединавходитьк Вниз Заказ:

Язык кода:javascript
копировать
$raspivid -o video.h264 -t 10000

ты会Уведомлениеприезжатьвидео录制Понятно 10 秒钟икvideo.h264Формат保жить。 Нет.Сделав это один раз, вы обнаружите, что камера не в фокусе. настраиватьвсе Взаимно机начальствоизкруглая шляпа(Выбирать Вниз盖ребенокназад),прямойприезжать Чтоверно Точная фокусировкаточка.

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

Установите OpenCV на Raspberry Pi.

связанный Подробнее,пожалуйстаизменятьприезжатьздесь

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

к Вниз Каждыйодин ХОРОШОВседаодин独изинструкция。 этот意味着хотетьвходитьодининдивидуальный Заказ,пожалуйстав соответствии сEnterиждать待Чтопоказыватьсуществоватьконсольсередина,указывает на завершение,Затем再входить Внизодининдивидуальный Заказ。

  1. существовать Терминалсерединавходитьк Вниз Заказк Установить OpenCV Необходимые компоненты:
Язык кода:javascript
копировать
$sudo su
$apt update && apt upgrade –y
$apt install build-essential
  1. Установить CMake Для управления процессом сборки:
Язык кода:javascript
копировать
$wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
$tar xvzf cmake-3.14.4.tar.gz
$cd ~/cmake-3.14.4
  1. Удалите любые другие зависимости,Напримерbootstrap
Язык кода:javascript
копировать
$./bootstrap
$make –j4
$make install
  1. от Raspberry Pi 驱动устройствосерединаизисточниккод Установить OpenCV:
Язык кода:javascript
копировать
$git clone https://github.com/opencv/opencv.git
$cd opencv && mkdir build && cd build
$cmake –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=/usr/local ..
$make –j4
$make install

начальстволапшаиз Заказ Воля Установить OpenCV。

  1. Чтобы проверить процесс установки,Пожалуйста, сохраните текущий терминал Открытьиз, пока Открыть другой терминал.,Затемвходитьк Вниз Заказ:
Язык кода:javascript
копировать
$python3
>>> import cv2
>>> cv2.__version__

Это должно отобразить последнюю версию установки OpenCV в вашей системе.

Установите OpenVINO на Raspberry Pi

OpenVINO от Intel из торговой марки,представлять Open Visual Inference и Neural Network Optimization набор инструментов。 этодляразвиватьлюдичленпредоставилна основе Intel Набор аппаратного ускорения глубокого обучения инструментов,Например CPU(Intel Core и Xeon процессор),графический процессор (Intel Iris Pro графикаи HD графика),VPU(Intel Movidius нерввычислить Большой)и FPGA(Intel Arria 10GX)。 。

хотетьсуществовать桌лапшаначальствоскачать OpenVINO,пожалуйстаизменятьприезжатьздесь

скачать OpenVINO После этого Воля должен ввести свое имя и адрес электронной почты. Тогда ты Воля сможешь скачать OpenVINO。 Следуйте инструкциям, чтобы разархивировать файл и установить зависимости. Обратите внимание, что этот процесс не является приоритетным. к Raspberry Pi。 Поэтому верно В Raspberry Pi,пожалуйстаиспользоватьк Вниз Заказ:

Язык кода:javascript
копировать
$cd ~/dldt/inference-engine
$mkdir build && cd build
$cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS='-march=armv7-a' \
-DENABLE_MKL_DNN=OFF \
-DENABLE_CLDNN=OFF \
-DENABLE_GNA=OFF \
-DENABLE_SSE42=OFF \
-DTHREADING=SEQ \
..
$make

Предыдущая команда Волясуществовать терминал середина возвращает серию отображений.

Установите компоненты набора инструментов OpenVINO.

хотеть Установите компоненты набора инструментов OpenVINO.,пожалуйстаизменятьприезжатьздесь

Следующие шаги перечислены для справки:

  1. Открытьодининдивидуальныйновыйиз Терминалокно,входитьsudo su,Затемв соответствии сEnter
  2. один击к Вниз链ловитьискачатьR3 l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz。 пожалуйста, обрати внимание,p_иbefore.tgzпослеизчисло字существовать Воля Приходитьиз Версиясередина Может能会Даже改
  3. Создайте Установитьдокумент夹:
Язык кода:javascript
копировать
$sudo mkdir -p /opt/intel/openvino
  1. Разархивируйте скачанный файл:
Язык кода:javascript
копировать
$sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz --
$strip 1 -C /opt/intel/openvino
  1. ловить Вниз Приходить,Установить CMake(нравиться果尚未Установить):
Язык кода:javascript
копировать
sudo apt install cmake

проходить Установить переменные среды, Каждый раз при запуске терминала, OpenVINO будет инициализирован. Это избавит вас от необходимости каждый раз запоминать командную строку.

Установить переменные среды

ты Можетксуществоватьк Внизшагизпомощь Внизместный Установить переменные средыилиобщая ситуация Установить переменные среды:

  1. хотетьсуществоватьместныйнастраиватьэто,пожалуйстасуществовать Терминалсередина运ХОРОШОк Вниз Заказ:
Язык кода:javascript
копировать
$source /opt/intel/openvino/bin/setupvars.sh
  1. хотетьсуществоватьобщая ситуациянастраиватьэто,пожалуйстасуществовать Терминалсередина运ХОРОШОк Вниз Заказ:
Язык кода:javascript
копировать
$echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
  1. Чтобы проверить внесенные вами изменения, установите новый терминал. ты Волясмотретьприезжатьк Вниз Выход:
Язык кода:javascript
копировать
[setupvars.sh] OpenVINO environment initialized
Pi$raspberripi: $
Type sudo su and you should get
root@raspberripi:

Добавить правило USB

нуждаться USB правилоталантсуществовать Intel Movidius Вывод на нейронном компьютере. В этическом порядке:

  1. к Вниз Заказ Воляпомощьты Волялюбойкогда前 Linux использовать户добавить вприжатьез Группу:
Язык кода:javascript
копировать
$sudo usermod -a -G users "$(whoami)"
  1. сейчассуществовать,重новыйзапускать Raspberry Pi и войдите снова:
Язык кода:javascript
копировать
sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

Запустите вывод, используя код Python

После завершения процесса все Установить,Внизодининдивидуальный Задачадаиспользоватьпроходить Взаимно机模кусоксоединятьприезжать Raspberry Pi из Intel Movidius Нейронные вычисления нужны для рассуждений. Здесь из модуля камеры дано периферийное устройство с Intel Movidius нерввычислить Большойиз Raspberry Pi дапроцессорный блок.

Обратите внимание, что малина Pi Сама нейронная сеть не может выполнить логический вывод, поскольку скорость обработки очень низкая. использовать Интел OpenVINO Нервно вычислив стержень, вы увидите, что приехать очень мало из-за задержки. делатьдля Сравниватьсравнивать,Пожалуйста, обратитесь к“использовать TensorFlow Lite существовать Raspberry Pi начальстворуководить Обнаружение объектов”,Чтосерединаиспользовать tflite существовать Нетпалка нейронной сетьизкейс Воля TensorFlow Модельразвертыватьприезжать Raspberry Pi。 ты会Уведомлениеприезжать,существоватьэтот种Состояние Вниз,Задержка очень большая.

Давайте посмотрим на следующую команду:

Язык кода:javascript
копировать
$mkdir build && cd build
$cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples
$make -j2 object_detection_sample_ssd
$wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.bin
$wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

运ХОРОШОopenvino_fd_myriad.pyдокументсерединапоставлятьиз Пример Код выглядит следующим образом:

Язык кода:javascript
копировать
python3 openvino_fd_myriad.py 

Пожалуйста, смотрите ниже GitHub страница с полным кодом。 кроме того,查смотретьout.pngдокументк查смотретьсуществоватьизображениеначальство绘制изограничивающая рамка

продвинутое рассуждение

приезжать В настоящее время для, мы просто используем OpenVINO набор инструментами выполняется уход за лицом Обнаружение. существовать本Фестивальсередина,нас Воляизучать习какиспользоватьсоединятьприезжать Raspberry Pi из Intel Movidius палка нейронной сетиосуществлять Различныйкомпьютерное задачи визуального контроля, такие как обнаружение пешеходов, транспортных средств и велосипедов, обнаружение номерных знаков, распознавание возраста и пола, распознавание ориентиров лица , распознавание эмоций, оценка позы, распознавание действий, распознавание взгляда и т. д.

Интел Технологии открытого кода середина Сердцепредоставил Мы Воляиспользоватьизвсеbinиxmlдокументиз Списокповерхность。 。

пожалуйста, обрати внимание,При нажатии на предыдущую индивидуальную ссылку,Волясмотретьприезжать ЧетыреиндивидуальныйотметкадляR1, R2, R3, and R4издокумент夹。 один击одининдивидуальныйиметьбольшинствоновыйдатаиздата,существоватьэтот种Состояние ВниздляR1。 существоватьк Вниз Экран截картинасередина Можетксмотретьприезжать:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-vXi2bz2M-1681784662640) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/1f5f007f-c2c0-46bc-8934-ac59097065c8.png)]

Затем,Нажмите на последнюю папку,существоватьэтот种Состояние Вниздляmodels_bin。 Это Воля Открытьодининдивидуальныйвернодиалоговое окно,показыватьFP16,FP32илиINT8。 верно Внекоторый Модель,НетпоставлятьINT8

сейчассуществовать,Давайте попробуем изучить Эти параметр по смыслу,к便нас Да соответствии с Ваше собственное приложение выбирает соответствующие параметры. FP16Воля 16 Немного, но не да 32 Кусочек Используйте ВFP32,от чего сокращается время тренирования рассуждений. с другой стороны,INT8использовать 8 Битовое целое число верно, нейронная сеть имеет веса, градиенты и активации итренироваться. поэтому,существоватьэтоттри种методсередина,INT8отвечать Должендабольшинствобыстрыйизодин种,Интел утверждает, что по-прежнему сохраняет точность.

нравиться果ты想учитьсясвязанный Интелиспользоватьиз 8 Метод бит-тренирования из Более подробную информацию смотрите в заголовке «Нейронные сети из 8 Кусочектренироватьсяиз Может Расширятьметод》избумага,Долженбумага发поверхностьсуществоватьздесь。 для Понятносуществовать Raspberry Pi ждатьпериферийное устройствоначальство Дажебыстрый地руководитьиметь дело с,предположениеизметоддаиспользоватьFP16илиINT8(нравиться果有)。

Первый前описыватьизоткрыть Модельзоопаркиметь Различныйпредварительно Первыйстроитьиз Модель,Например Используйте Влюди Лицо Обнаружение,люди Обнаружение,с ХОРОШО车Обнаружениеждатьиз Модель. Эти Модельуже过тренироваться,поэтомунас Волясуществовать本главасерединатолько出Врассуждениеглазизиспользовать Эти Модель. Если вы хотите учиться тренироваться методом, вы можете следить за «Нет. 10 глава",“использовать R-CNN,SSD,и R-FCN”。

Далее мы будем смотреть на некоторые Воля Модель, разделенные на четыре типа для из таблиц.

Обнаружение лиц, обнаружение пешеходов и обнаружение транспортных средств

Внизповерхностьописывать Понятно Различныйлицо Обнаружение,людичлен Обнаружениеа Также автомобиль и велосипед Обнаружение Модель. Пожалуйста, обратите особое внимание на список входов и выходов каждой отдельной модели в середине таблицы. Python кодсередина Введите эти данные для вывода:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-mPaWIfq-1681784662640) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/fe5c3606-c529-47cc-90c8-1fbb9a3cf358.png)]

мы можем посмотреть приезжать,Хотя типы моделей разные,новходить По сутида Взаимно同из。 Единственная разница — размер входного изображения. Выходные данные также одинаковы — они оба генерируют прямоугольную ограничивающую рамку.

модель ориентира

Внизповерхностьописывать Понятно Используйте ВГод龄секс别ираспознавание эмоций,распознавание логотипа лица,цвет автомобиляидобрый型识别а Также человек и атрибуты (например, рубашка, шляпа и рюкзак) и модель. Обратите внимание, что в середине таблицы мы перечисляем входы и выходы каждой отдельной модели, которые должны существовать. Python Введите код для вывода:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-YxYDuPfs-1681784662640) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/4bfb353a-f606-47ac-bced-ec27c98aea28.png)]

существоватьздесь,Тип да одинаковый из: разные Модели разные размеры,нодавыход却другой。 верные ориентиры, на выходе можно получить контуры лица 5 точкаили 35 точка. Верно В атрибутах персонала, выходными данными могут быть индивидуальные атрибуты середина Каждый индивидуальный атрибут из двоичного результата. Атрибуты транспортного средства могут быть цвета или типа, а эмоциональные атрибуты Воля подразделяются на пять индивидуальных категорий середина Каждыйиндивидуальные категории вероятностей.

модель распознавания действий

Внизповерхностьописывать Понятно Используйте Воценка позыи动делать识别из Модель. Обратите внимание, что в середине таблицы мы перечисляем входы и выходы каждой отдельной модели, которые должны существовать. Python Введите код для вывода:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-SZncke4q-1681784662641) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/ec8456e7-7202-4546-b63c-329915441c14.png)]

В приведенной выше таблице показано,входные структуры всех моделей одинаковы,Изменилась только форма изображения. Распознавание жестов на выходе показывает три отдельных ракурса: рыскание.,Перекат и подача.

Номерной знак, обнаружение взгляда и человека

наконец,Внизповерхностьпоказывать Понятнономерной знак,оценка взглядаилюдичлен Обнаружениеизмноговходить Blob:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-C7ZM5hnS-1681784662641) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/aab4bbfe-5f81-4980-aae3-a30bbeb9c4a4.png)]

к Внизкод Обзор Понятно前дваиндивидуальныйповерхностьизхозяинхотетькомпозициячасть; Прямо сейчас,Используйте Влицо Обнаружение,людивещь Обнаружение,машина Обнаружениеиориентир Обнаружение。 Давайте посмотрим:

  1. Пожалуйста, смотрите ниже GitHub Ссылка для извлечения кода
  2. импортировать OpenCV После захвата видео его можно загрузить с помощью следующей команды. Это Воля загружает человеческое лицо Обнаружение Модель:
Язык кода:javascript
копировать
cvNet = cv2.dnn.readNet('face-detection-adas-0001.xml', 'face-detection-adas-0001.bin')
cvNet.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
  1. к Вниз Заказ Может Используйте Внагрузкаориентир Обнаружение Модель. Вы можете использовать эту команду Открыть из любой другой Модели. Единственное, что важно помнить, это то, что вы должны сделать следующее Python Местосуществоватьизглаз录середина:
Язык кода:javascript
копировать
cvLmk = cv2.dnn.readNet('facial-landmarks-35-adas-0002.xml','facial-landmarks-35-adas-0002.bin')
cvLmk.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
  1. ловить Вниз Приходить,насиспользоватьк Вниз Заказ读Выбиратьвидеорамкаиопределение Долженрамкаиз ХОРОШОи Список:
Язык кода:javascript
копировать
  ret, frame = cam.read()
 rows = frame.shape[0]
  cols = frame.shape[1]
  1. ловить Вниз Приходить,насиспользовать OpenCV изblobFromImage函числоотданныйбольшой小иглубинаизрамкасерединаизвлекатьодининдивидуальный Четыреизмерениеместоточка. Обратите внимание, что размеры больших двоичных объектов должны быть равны указанным в таблице выше и соответствовать указанным входным размерам. верно Влюди Лицо Обнаружение,местоточкавходитьбольшой小для(672, 384),поэтомуместоточкаповерхность达式писатьнравиться Вниз:
Язык кода:javascript
копировать
  cvNet.setInput(cv2.dnn.blobFromImage(frame, size=(672, 384), ddepth=cv2.CV_8U))
  cvOut = cvNet.forward()

верно Вориентир Обнаружение,местоточкавходитьбольшой小для(60, 60),поэтомуместоточкаповерхность达Можеткповерхность示для:

Язык кода:javascript
копировать
  cvLmk.setInput(cv2.dnn.blobFromImage(frame, size=(60, 60), ddepth=cv2.CV_8U))
  lmkOut = cvLmk.forward()

После выполнения предыдущих шагов мы можем продолжить и построить вывод для визуализации. этотдапроходитьприносить有嵌套循环издваиндивидуальныйforзаявлениеосуществлятьиз:

  • Нет.одининдивидуальныйforзаявлениеиспользоватьxmin, ymin, xmax, and ymax查попытаться найтипрямоугольникограничивающая рамкакоординировать,нравиться果confidence > 0.5ноиспользоватьcv2.rectangleсоздаватьпрямоугольник。
  • Нет.дваиндивидуальныйforзаявлениесуществоватьлапшаограничивающая рамка内绘制 35 индивидуальныйкруглый,Чтоxиyкоординироватьнравиться Вниз:
Язык кода:javascript
копировать
x = xmin + landmark output (i) * (xmax-xmin)
y = ymin + landmark output (i) * (ymax-ymin)

сейчассуществовать,нас Даспользоватьcv2.circle绘制круглый。 Ниже изкод Подвести Итог имеет этот принцип: существование его середина рисует лицевые знаки. пожалуйста, обрати вниманиенас Переднийобсуждатьиздваиндивидуальныйforзаявление:

Язык кода:javascript
копировать
  # Draw detected faces on the frame.
for detection in cvOut.reshape(-1,7):
    confidence = float(detection[2])
   xmin = int(detection[3] * cols)
    ymin = int(detection[4] * rows)
    xmax = int(detection[5] * cols)
    ymax = int(detection[6] * rows)
    if confidence > 0.5 :
      frame = cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(255, 255, 255),thickness = 4)
  for i in range(0, lmkOut.shape[1], 2):
    x, y = int(xmin+lmkOut[0][i]*(xmax-xmin)), ymin+int(lmkOut[0][i+1]*(ymax-ymin))
    # Draw Facial key points
    cv2.circle(frame, (x, y), 1, color=(255,255,255),thickness = 4)

尽管этот处описыватьизкодобсуждать Понятнолицологотипилицо Обнаружение,Но я могу обновить то же самое из кода Python., чтобы мы могли выполнять любые другие действия из Обнаружения, такие как номерной знак, человек, велосипед и т. д. тынуждаться Делатьиз Сразудапроходить Даже改настраиватьизвходить Приходить Даже改входить,Затемнастраиватьвсеforзаявлениеценить。 этотлицо Ключевые моменты Обнаружение Примердаодининдивидуальныйс участиемлицоиориентир Обнаружениеиз复杂Пример,этот Сразудадля Чтоиспользоватьдваиндивидуальныйfor循环заявлениеиз原потому что。 Например,существоватьномерной знак Обнаружениесередина,ты Тольконуждатьсяиспользоватьодининдивидуальныйfor循环заявление。

сейчассуществовать,让насизучать习использовать OpenVINO Сделайте выводы.

Преобразование модели и вывод с использованием OpenVINO

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

  1. использовать Приходитьс ncappzoo изпредварительно Модель обучения Сделайте выводы.
  2. Воля Конечно制Модель Конвертироватьдля IR Форматкруководитьсделать вывод。
  3. Блок-схема середина включает в себя все шаги из краткого описания.

к Внизкаждый小Фестиваль Воляподробныйобсуждать Этишаг。

Запустите вывод в терминале с помощью ncappzoo

Как упоминалось ранее, OpenVINO для Raspberry Pi Установитьизнабор инструментовисуществоватьобычно PC Есть разные способы добраться из Установить. Raspberry Pi из Установитьне включено Model Optimizer。 Зоопарк приложений нейронных вычисленийNCPAppZoo)даодининдивидуальныйоткрытьисточниккодхранилищебиблиотека. Давайте посмотрим, как использовать ncappzoo:

  1. хотетьиспользовать ncappzoo, пожалуйста, клонируйте OpenVINO из开источник Версияиглубокое обучениеразвиватьнабор инструментовDLDT),Затем измените PYTHONPATH. так,Оптимизация моделиустройство Воля Установитьсуществовать Raspberry Pi середина。 к Внизкодкусокпоказывать Понятно Этишаг:
Язык кода:javascript
копировать

cd ~ git clone https://github.com/opencv/dldt.git dldt/model-optimizer pip3 install -r requirements_tf.txt

Язык кода:javascript
копировать
  1. сейчассуществовать,использоватьк Вниз Заказклонироватьrepo
Язык кода:javascript
копировать
$git clone https://github.com/movidius/ncappzoo.git
  1. изменятьприезжать/ncappzoo/apps/,попытаться найтиприезжать Связанныйизappдокумент夹глаз录,Затемосуществлятьк Вниз Заказ:
Язык кода:javascript
копировать
$make run

Это Воля Открытьодининдивидуальныйокно,Мы можем существовать в этом окне.

Конвертироватьпредварительно Модель обучения Приходитьруководитьсделать вывод

В этом разделе описывается Конвертировать из определения. TensorFlow Модельизшаг,это们использоватьнассуществовать“Нет. 6 Глава", "использовать трансферное обучение из визуального поиска"серединаразвиватьиз TensorFlow Keras вернослон分добрый Модель,илииспользовать TensorFlow Обнаружение объектов API,нравитьсянассуществоватьначальствоодинглавасередина Место Делатьиз Таким образом。 Если вы запланировали Модель из технологии середина с открытым исходным кодом Интел после предварительной оптимизации тренирования, то шаги Воля, описанные в предыдущем разделе середина, будут работать. В следующем разделе середина мы Воля опишем, как использовать два типа из TensorFlow Модельосуществлять Конвертировать。

Преобразование модели TensorFlow, разработанной с помощью Keras

В этом разделе описывается, как TensorFlow Модель Конвертироватьдля OpenVINO IR Формат。 связанный Дажемногоинформация,Пожалуйста, обратитесь кк Вниз链ловить

Этишаг Можетк Подвести итогнравиться Вниз:

  1. Конфигурация Оптимизация моделиустройство。 Как упоминалось в начале этой главы, любая Модель, развернутая на периферийных устройствах, должна быть оптимизирована, что предполагает удаление ненужных компонентов без ущерба для Точности. к Внизкодсуществоватьобщая ситуация范围内осуществлятьэтот Задача:
Язык кода:javascript
копировать
<INSTALL_DIR>/deployment_tools/model_optimizer/install_prerequisites directory and run: $install_prerequisites.sh
  1. Конвертироватьдлязаморозить Модель。 пожалуйста, обрати внимание,нассуществовать“Нет. 6 Глава", "использовать трансферное обучение из визуального поиска"серединаразвиватьиз Модельи未заморозить。
  2. Волязаморозитьиз TensorFlow Модель Конвертироватьдля IR форма。 рассуждениедвигатель读Выбирать МодельизсерединаинтерпретацияIR)。 IR да OpenVINO Специфическое представление изграфики. IR поверхность示извыходданасуже熟悉изxmlдокументиbinдокумент. Конвертироватьдапроходитьmo.pyработа具Заканчиватьиз,нравитьсяк Внизкод Место示:
Язык кода:javascript
копировать
Go to the <INSTALL_DIR>/deployment_tools/model_optimizer directoryin the Terminal and execute
$python3 mo_tf.py --input_model <INPUT_MODEL>.pb

существоватьзаморозить Модельразвиватьпроцесссередина指Конечнок Вниз参числои理解это们Нет常重хотеть,потому чтодляmo.pyработаиметьчас会существоватьзаморозить Модельсерединапопытаться найти Нетприезжатьчаспроизводитьошибка:

  • input_model:толькосуществоватьиспользоватьизпредварительно Модель обученияизимясказать
  • input_shape:Например[1,300,300,3]

Преобразование модели TensorFlow, разработанной с использованием API обнаружения объектов TensorFlow.

В этом разделе объясняется, как конвертировать TensorFlow Обнаружение объектов API создать картинку. нравиться果использовать TensorFlow Обнаружение объектов API Модель развития, подробный процесс и наш предыдущий раздел «Введение в процесс» отличаются. Можетксуществоватьздесьсерединапопытаться найтиприезжать Дажемногоинформация。

насужезаморозить Понятноиспользовать TensorFlow Обнаружение объектов API существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”руководить Обнаружение объектовиз Модель. Для конвертации выполните следующие действия:

  1. Конвертировать До,Пожалуйста, обратитесь Следующая ссылка для настройки Оптимизации моделиустройство
  2. Сейчас существуют, мы готовы осуществить Конвертировать. Подготовьте три индивидуальных файла следующим образом:
  • Модельиззаморозитьрассуждениекартина:этотдаодининдивидуальныйприносить有.pbРасширятьимяиздокумент,дапроходитьиспользоватьсопределениеизображение Модель обучения(R-CNN,SSD или R-FCN) для генерации из. существоватьэтот Примерсередина,этодаfrozen_inference_graph_fasterRCNN.pb
  • Конфигурацияjsonдокумент:этотда Взаимноотвечатьизjsonдокумент,Этот файл описывает замороженный граф TensorFlow для самостоятельного определения свойств.,узел,порт,Конечная точка иточка.
  • Используйте Вгенерировать Модельиз Конфигурациядокумент:Должендокументисуществовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”。 Например, верно В R-CNN,насиспользовать Понятноfaster_rcnn_inception_v2_pets.config.

После выполнения вышеуказанных шагов,существовать Терминалсерединаосуществлятьк Вниз Код:

Язык кода:javascript
копировать
$python3 mo_tf.py --input_model frozen_inference_graph_fasterRCNN.pb --transformations_config faster_rcnn_support_api_v1.14.json --tensorflow_object_detection_api_pipeline_config faster_rcnn_inception_v2_pets.config 

существоватьздесь,тынуждаться Воля Расширять​​имядля.pbиздокументзаменятьдля Расширятьимядля.pbиз特Конечно Модельдокументимя。 Конвертироватьизрезультат Волядаxmlиbinдокумент.

有Понятноxmlиbinдокументназад,нас Сразу Даспользовать Python Документ и раздел «Расширенный вывод» представляют собой инструкции по тестированию Модели.

Если у вас возникли проблемы с переездом при окрашивании,Даспользовать Внизлапшаиз linbke серединапоказыватьиз OpenVINO форум,чтобы увидеть ответы на похожие вопросы из,Вы также можете оставить свои вопросы

OpenVINO Модельсделать выводпроцесс Подвести итог

Описанный ранее процесс вывода можно представить в виде блок-схемы:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-RiTXuWNQ-1681784662641) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/07f2001b-42f3-4d51-9779-d69cb44501e8.png)]

На рисунке выше показано, что процесс можно разделить на три ключевые части:

  1. Этапы предварительной обработки:существоватьздесь,нас Установить OpenCV и Установить переменные среды。
  2. Подготовка модели:существоватьздесь,Наша модель Воля Конвертировать для оптимизации и изменения формата модели.
  3. вывод:этот Можетк分длядва种независимыйизметод–проходитьсуществовать Терминалначальствоосуществлятьвывод,методдаизменятьприезжать Взаимноотвечатьиз控制устройствоиосуществлятьmake runилииспользовать Python код — заключение. я发сейчассуществовать Intel PC На самом деле, все Эти шаги легко изучить. нода,существовать Raspberry Pi средасередина,использоватьmake RunЗаказсуществовать Терминалсерединаруководитьдействовать会привести кдругойдобрый型изошибка。 Например,有часпопытаться найти Нетприезжать.binили.xmlдокумент. Что他час间,среда变量未исходныйизменятьилипопытаться найти НетприезжатьCMakeLists.txtдокумент. Оферта исполнения из Python код Нет会существовать Raspberry Pi середина порождает любую этическую проблему. Это также делает нас вернымкомпьютерным Среда зрения стала лучше изучаться, потому что для этого нам нужно сделать только да, чтобы получить Модель, изучить входные и выходные данные, а затем сгенерировать некоторый код, чтобы мы могли отобразить результат.

существуют Прежде чем перейти к следующему разделу, давайте Подвести итогприезжатьглаз前дляконец Местоизучатьиз Оптимизация моделитехнология:

1)пакетная нормализациядействоватьисверткадействовать融合-OpenVINO использоватьэто

2) Воля поднимается В 1 И размер фильтра для 1 из сверточного перемещения добраться до верхнего слоя свертки. Добавьте слой объединения,чтобы выровнять входную форму - OpenVINO использоватьэто

3) Замените большой фильтр двумя маленькими фильтрами.,Например Воля3 x 3 x 3заменятьдля#32,Воля3 x 3 x 1заменятьдля#3,Воля1 x 1 x 3заменятьдля#32-MobileNet использоватьэто。

Приложения TensorFlow Lite

TensorFlow Lite да Используйте Впериферийное устройстворассуждениеиз TensorFlow Структура глубокого обучения. и OpenVINO Аналогично, TensorFlow Lite иметь встроенный претренированный модуль глубокого обучения. или ВОЗ,Можетк Волясейчас有Модель Конвертироватьдля TensorFlow Lite Формат для вывода на устройстве. В настоящее время TensorFlow Lite иметь встроенную или внешнюю камеру из PC,Android Устройство, iOS Устройство, Малина Pi Крошечный микроконтроллер обеспечивает поддержку вывода. доступздесьучитьсясвязанный TensorFlow Lite из Подробности.

TensorFlow Lite Конвертер использует TensorFlow МодельигенерироватьFlatBuffer tfliteдокумент. FlatBufferFiledaefficiencyиз跨платформа库,Может Используйте Вдоступдва进制последовательностьизменятьданныеи无需解析。 Сериализация обычно представляет собой текстовую строку. Данные двоичной сериализации записываются как строка Формат двоичных данных. связанныйFlatBufferиз Подробности,Пожалуйста, обратитесь кк Вниз链ловить

TensorFlow выход Модель Можеткдак Вниздобрый型:

  • SavedModel Форматtf.saved_modelосуществлять Сохранить из Модель,выходдляsaved_model.pb。 Это завершено TensorFlow Формат, который включает в себя изучение весов и графовых структур.
  • tf.kerasМодель Форматtf.kearsМодельдаtf.keras.model.compileдокумент,нассуществовать“Нет. 4 Глава», «Глубокое обучение изображений» и «Нет. 6 Глава», «использовать трансферное обучение из визуального поиска».
  • Конкретная функция:иметьодининдивидуальныйвходитьивыходиз TensorFlow картина.

Преобразование модели TensorFlow в формат tflite

В этом разделе описывается, как TensorFlow Модель КонвертироватьдляtfliteФормат。 Если мы этого не сделаем, то мы развиваемся Модель может существовать на местном уровне. PC середина Используйте Врассуждение,Но приезжающие периферийные устройства не могут быть развернуты для вывода в реальном времени. Для этого преобразования будут описаны три метода:

  • Python API,существоватьместный PC середина Используйте ВtfliteКонвертировать
  • использоватьtfliteКонвертироватьиз Google Colab
  • Google Colab использоватьtoco

Зависит от Вэтотда Обнаружение объектов Конвертировать,поэтомунасиз Модельдав соответствии с TensorFlow Обнаружение объектов API развиваемся, поэтому мы Волясуществова Google Colab серединаиспользоватьtocoметод。

Python API

Python API Чтобы мы могли легко использовать TensorFlow Lite преобразователь. существовать本Фестивальсередина,нас Воляописыватьиспользовать tflite Конвертироватьустройствоиз Python API。 связанный Дажемногоинформация,Пожалуйста, обратитесь кк Вниз链ловить

в соответствии сиспользоватьиз Конвертировать, предлагаются три метода — Сохранить из Модель, Keras. Модельили Конкретная функция。 Следующий код показывает, как Python API настраиватьиспользоватьtf.lite.TFLiteConverterПриходить Конвертироватьтрииндивидуальный Модель(保жить Модель,Keras Модельили Конкретная функция)серединаиз Каждыйиндивидуальный Модель:

Язык кода:javascript
копировать
$import tensorflow as tf
$converter = tf.lite.TFLiteConverter.from_saved_model(export_dir)
$converter = tf.lite.TFLiteConverter.from_keras_model(model)
$converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
tflite_model = converter.convert()

Далее мы будемизучать习какиспользовать TensorFlow Обнаружение объектов API Конвертироватьсуществовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN из Обнаружение объектов”серединаразвиватьиз Модель обучения。 Google Colab использоватьдва种другойизметод-tflite_convertиtoco

TensorFlow Обнаружение объектов API – tflite_convert

существоватьк Внизкодсередина,насопределение Понятнозаморозить Модель.pbдокументи Взаимноотвечатьизtfliteдокументиз Расположение。 Затем,нас Волятрииндивидуальный RGB осьиз Каждыйодининдивидуальныйизвходить彩色изображениеизбольшой小настраиватьвседля(300, 300),И Воля изображение Конвертировать для нормализованного тензора,Тогда Воля становится для Конвертировать входной массив. Имеется четыре выходных массива,это们изопределениенравиться Вниз:

  • TFLite_Detection_PostProcess —Обнаружениекоробка
  • TFLite_Detection_PostProcess:1-Обнаружениедобрый别
  • TFLite_Detection_PostProcess:2-Обнаружение分число
  • TFLite_Detection_PostProcess:3-Обнаружение次число
Язык кода:javascript
копировать
!tflite_convert \
--graph_def_file=/content/models/research/fine_tuned_model/tflite_graph.pb \
--output_file=/content/models/research/fine_tuned_model/burgerfries.tflite \
--output_format=TFLITE \
--input_shapes=1,300,300,3 \
--input_arrays=normalized_input_image_tensor \
--output_arrays= 'TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3' \
--change_concat_input_ranges=false \
--allow_custom_ops

TensorFlow Обнаружение объектов API – TOCO

TOCO представлять TensorFlow 优изменятьпреобразователь. Чтобы понять TOCO изподробныйучиться,Посетите следующую страницу GitHub.

к Внизкодописывать Понятнокакиспользовать TOCO Конвертировать TensorFlow Модель. 除Понятноиспользоватьtocoи Нетдаtfliteснаружи,кодиз Нет.одинчастьи Доизсодержаниетакой же. В следующей части используется тип количественного вывода. 量изменятьдаодининдивидуальныйпроцесс,Используйте Вуменьшать Модельбольшой小,Также улучшает задержку аппаратного ускорения. Существует множество количественных методов.,нравитьсяэтотиндивидуальныйстраницасередина Место述。

существоватьэтот种Состояние Вниз,насиспользовать Полныйвсечисло量изменять。 Нетиспользовать反量изменять,нода平всеценитьи标准差ценить Используйте В确Конечнорассуждениекодсерединаиз Конечноточка乘число:

Язык кода:javascript
копировать
"!toco \\\n",
 "--graph_def_file=\"/content/models/research/fine_tuned_model/tflite_graph.pb\" \\\n",
 "--output_file=\"/content/models/research/fine_tuned_model/burgerfries_toco.tflite\" \\\n",
 "--input_shapes=1,300,300,3 \\\n",
 "--input_arrays=normalized_input_image_tensor \\\n",
 "--output_arrays='TFLite_Detection_PostProcess','TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3' \\\n",
 "--inference_type=QUANTIZED_UINT8 \\\n",
 "--mean_values=128 \\\n",
 "--std_dev_values=128 \\\n",
 "--change_concat_input_ranges=false \\\n",
 "--allow_custom_ops"

Можетксуществоватьк Вниз GitHub 链ловитьсерединапопытаться найтиприезжать Используйте Втренироватьсяи Конвертироватьиз Google Colab блокнотиз Подробнее

Уведомление,существоватьдваиндивидуальный между Моделью,насиспользовать Понятно TOCO。 причина использовать tflite час,Конвертироватьназадиз Модель Нет会существовать телефон Андроидначальство Обнаружениеприезжатьограничивающая рамка。

TensorFlow Модель может означать для сохраненных из Модели. Keras Модель. Следующий код показывает, как Воля Модель сохраняет для сохранения и з Модели. Keras Модель:

  • Сохранить из Модель:Сохранить из Модель Сумка括 TensorFlow Вес иисследовочка. это Зависит отmodel.save函числозапускать:
Язык кода:javascript
копировать
tf.saved_model.save(pretrained_model, "/tmp/mobilenet/1/")
tf.saved_model.save(obj, export_dir, signatures=None, options=None)
  • Keras Модель:к Внизкодописывать Понятнокакиспользоватьhistory.fitЗаказ编译 Keras Модельи Подготовитьруководитьтренироваться. пожалуйста, обрати внимание,нассуществовать“Нет. 4 Глава», «Глубокое обучение изображений» и «Нет. 6 Глава", "использовать трансферное обучение из визуального поиска"серединаверно Это упражнение по программированию. :
Язык кода:javascript
копировать
model.compile(loss='sparse_categorical_crossentropy', optimizer=keras.optimizers.RMSprop())
history = model.fit(x_train, y_train, batch_size=64, epochs=20)
model.save('path_to_my_model.h5')

Оптимизация модели

Вы можете выполнить оптимизацию после квантования. модели (также называемые для количественной оценки) для улучшения CPU/GPU производительность без ущерба для точности. Даспользоватьк Внизметодосуществлять优изменятьпроцесс:

  • 8-битная Точность с плавающей запятой (оптимизирована для правильного размера)
  • использовать микроконтроллер с целочисленным вводом и выводом с полным квантованием
  • Оба - Динамическое квантованиедля 8 бит, но любой вывод имеет формат хранилища с плавающей запятой.
  • Обрезать другой динамический метод оптимизации,Можетсуществоватьтренироватьсяпроцесссерединаотнервсетьсередина消除低ценитьмасса。 Можеткпроходитьк Внизкод ХОРОШОзапускатьэто:
Язык кода:javascript
копировать
from tensorflow_model_optimization.sparsity import keras as sparsity
pruning_params = {
   'pruning_schedule': sparsity.PolynomialDecay(initial_sparsity=0.50,
                                final_sparsity=0.90,
                                begin_step=end_step/2,
                                end_step=end_step,
                                frequency=100)
}

l = tf.keras.layers
sparsity.prune_low_magnitude(l.Conv2D(64, (3, 3), activation='relu'),**pruning_params

связанный Подробнее,Пожалуйста, посетите веб-сайт TensorFlow.

пожалуйста, обрати внимание,существоватьначальствоодин Фестивальсерединаобсуждать Понятноиспользовать Google Colab верноиспользовать TOCO из Обнаружение объектов Модельруководитьиз Оптимизация модели。

существоватьк Внизкодсередина,Мы существуем, оптимизируя, сохраняя размер модели.,от А Воля конечный результат Модель уменьшена, приезжая в исходный размер из 1/3 или 1/4:

Язык кода:javascript
копировать
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()

к Внизкодописывать Понятно Полныйвсечисло量изменятьа также оптимизация размера:

Язык кода:javascript
копировать
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8

converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()

использовать TensorFlow Lite из телефон Андроидначальствоиз Обнаружения объектов

В этом разделе будет представлено развертывание TensorFlow lite Модель необходимые преобразования шагов. или ВОЗ,ты Можеткв соответствии с В соответствии сэтотиндивидуальныйстраницаначальствоизиллюстрировать Приходитьстроить Примеротвечатьиспользовать。 связанный телефон Андроидначальство Обнаружение объектовизподробныйпроцесскартинанравиться Вниз:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-hJgTizD0-1681784662641) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/20e25d76-69c4-408e-959e-e79140a129bb.png)]

наснуждатьсядваиндивидуальныйдокумент:

  • TensorFlow Lite Конвертироватьдля.tfliteФорматиздокумент
  • Обновление из labelmap .txtдокументпоказывать Понятно Должендобрый

нравиться果нас Экспорт.tfliteдокумент,нопрямойловить Приходитьс Google Colab, например «TensorFlow Обнаружение объектов API – раздел ТОКО». lablemap.txtдокумент Приходитьсlabel_map.pbtxtдокумент,В списке указаны только имена классов.

Можетксуществоватьк Вниз GitHub Найдите образцы файлов на странице

существовать телефон Андроидсередина采использоватьtfliteМодельигенерироватьрассуждениеизшагнравиться Вниз:

  1. существовать Гамбургерикартофель фри Примерсередина,.txtдокумент Воляиметьодин Списокидва ХОРОШО,нравиться Вниз Место示:
Язык кода:javascript
копировать
   burger
   fries
  1. Воляэтотдваиндивидуальныйдокумент放существовать PC из того же каталога середина. Открыть Android Studio。 Если вы не были там раньше Android Studio,но必须отздесьскачать。 Пожалуйста, следуйте инструкциям, представленным на веб-сайтизскачать.
  2. скачатьназад,существовать Mac или Windows на Открыть дважды щелкните по нему. верно В Linux,ты必须изменятьприезжать Терминалинавигацияприезжатьandroid-studio/binглаз录итип./studio.h
  3. проходитьсуществовать Терминалсерединатипк Внизсодержание Приходитьскачатьодин些Пример Пример:git clone https://github.com/tensorflow/examples
  4. Открыть Android Studio и Открытьодининдивидуальныйсейчас有项глаз,Волядокумент夹настраиватьдляexamples/lite/examples/object_detection/android
  5. существовать Android Studio Проект середина, приложение «Передача прибытия», а затем передача активов «Прибытие», как показано на следующем снимке экрана:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-phCuhJkE-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/780b2705-5d24-4741-9bdc-51821712e470.png)]

  1. Щелкните правой кнопкой мыши по «Активы».,Затемот菜один Списокповерхностьсерединавыбиратьсуществоватьдокументсерединапоказывать。 Волянассуществовать Нет.один步серединасоздаватьиз.tfliteи.txtдокументперетащить и оставитьприезжать资产глаз录середина。 Закройте папку и вернитесь Android Studio。
  2. двойной щелчок.txtдокумент Воля Что Открыть,исуществоватьвершинадобавить вновый ХОРОШО。 использовать???наполнениеэто。 поэтому,.txtдокумент Волядляэтотдваиндивидуальныйдобрыйпоставлятьтри ХОРОШО:
Язык кода:javascript
копировать
???
Burger
fries
  1. выбиратьJava,Затемвыбиратьотслеживать,Затемдвойной щелчокDetectorActivity。 Воля.tfliteи.txtдокументизимясказать Изменить для Чтодействительныйимясказать,нравитьсяк Вниз Экран截картина Место示。 Затем,точка击build gradle

пожалуйста, обрати внимание,верно В.txtдокумент,Пожалуйста, держите путь,Прямо сейчасfile:///android_asset/burgerfries_labelmap.txt。 稍назад,нас Волянестиприезжать,нравиться果未использоватьtocoгенерировать.tfliteдокумент,Тогда сохранение предыдущего пути Воли приведет к сбою приложения. для предотвращения сбоев,ты Можетктолько保留документимя(Напримерburgerfries_labelmap.txt)。 нода,пожалуйста, обрати внимание,Это не будет способствовать созданию ограничивающей рамки изображения для Обнаружениеприезжать.

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-lhXbaHE7-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/91b37b72-690b-46c9-b2d8-7dbb92c321db.png)]

  1. Комментировать///apply from download_model.gradle。 Убедитесь, что зависимость появилась, как показано на предыдущем снимке экрана.
  2. сейчассуществовать,использовать USB Кабель Воля Android Подключение устройстваприжаез PC。 Включите перемещение с вашего устройства, а затем нажмите «Развивать параметры людей» в разделе «Настройки», чтобы убедиться, что это Открыть. Затем,Открыть USB отлаживать. верно Вмногие телефон Android, эта опция появится автоматически.
  3. Нажмите «Создать» вверху, а затем «Создавать проект». существовать Android Studio После завершения компиляции (посмотрите в нижней части экрана, чтобы узнать, завершилось ли действие), нажмите «Выполнить», затем «Запустить приложение». Долженотвечать Используйте Воляскачатьприезжатьтыизна устройстве. На вашем устройстве появится индивидуальное поле опций. выбиратьokПрямо сейчас Может运ХОРОШОДолженотвечатьиспользовать。 Следующие да приложение работает с изображениями:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-NTZ2j6Sn-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/ae5a9279-2ad0-40da-869f-8e2738873476.png)]

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

использовать TensorFlow Lite из Raspberry Pi начальствоиз Обнаружения объектов

TensorFlow Lite Перечислено ниже Python quickstartСумкаописывать Понятнокакдля Raspberry Pi Установить TensorFlow Lite Сумка. Но да, есть несколько исключений, заслуживающих внимания. поэтому,Мы перечислили весь процесс здесь:

  1. первый,пожалуйста Установить TensorFlow Lite устный переводчик. Raspberry Pi уже Установить ARM7 и Python3.7,поэтомусуществовать Терминалсередина运ХОРОШОк Вниздваиндивидуальный Заказ:
Язык кода:javascript
копировать
$sudo su
$pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl
  1. в соответствии с TensorFlow Lite 官направление文档,нуждатьсясуществоватьlabel_image.pyдокументсерединаруководитьодин些Даже改
Язык кода:javascript
копировать
$import tflite_runtime.interpreter as tflite,
$interpreter = tf.lite.Interpreter(model_path=args.model_file)

пожалуйста, обрати внимание,когдасуществовать Raspberry Pi 4 серединаруководить Понятно Эти Даже改и且существовать Терминалсерединапроходитьтипpython3 label_image.pyосуществлятькодчас,Произошла ошибка в Воля,指出Прямо сейчас使Установить Понятно Питон, тоже не могу найти место TensorFlow Lite устный переводчик. верно Raspberry Pi 3 Повторил вышеописанные действия, ошибок не возникло.

  1. ловить Вниз Приходить,в соответствии с В соответствии ск Вниз链ловитьпоставлятьизшаг Установить TensorFlow Lite каталог и файл
  2. если все пойдет хорошо,ноотвечать Долженсуществовать Raspberry Pi середина有одининдивидуальныйимядляpi/examples/lite/examplesизглаз录。 существоватьэтотдокумент夹середина,тыотвечать Должениметь诸нравитьсяimage_classification,object_detection,image_segmentation,posenetиstyle_transferждатьглаз录。
  3. Далее мы будемсуществовать Raspberry Pi начальствоосуществлятьдваиндивидуальный Пример-одининдивидуальный Используйте Визображение分добрый,另одининдивидуальный Используйте ВОбнаружение объектов。

Классификация изображений

сейчассуществовать,让насосуществлятьк Внизшагруководитьизображение分добрый:

  1. использоватьдокументуправлятьустройствоизменятьприезжатьimage_classificationглаз录,Прямо сейчасpi/examples/lite/examples/image_classification/raspberry_pi。 ты Волясмотретьприезжатьодининдивидуальныйимядляclassify_picamera.pyиздокумент.сейчассуществовать,изменятьприезжатьздесьискачать Обнаружение объектов Модельа такжеимядляmobilenet_v2_1.0_224.tfliteиlabels_mobilenet_v2_1.0_224.txtизlabelдокументдокумент夹。 Воля Этидокументкопироватьприезжатьpi/examples/lite/examples/image_classification/raspberry_piсередина。
  2. ловить Вниз Приходить,использоватьpi/examples/lite/examples/image_classification/raspberry_piиспользовать Терминализменятьприезжатьглаз录иосуществлятьк Вниз Заказ:
Язык кода:javascript
копировать
$Python3 classify_picamera.py –model mobilenet_v2_1.0_224.tflite –labels labels_ mobilenet_v2_1.0_224.txt 
  1. Вам стоит посмотреть приезжать Raspberry Pi Модуль камеры загорится и начнет классифицировать изображения.

Обнаружение объектов

существовать Raspberry Pi начальство Установить TensorFlow lite После этого мы теперь существуем и можем выполнить Обнаружение. объектов。 В этическом порядке:

  1. использовать файловый менеджер, введите Обнаружение объектовглаз录,Прямо сейчасpi/examples/lite/examples/object_detection/raspberry_pi。 ты Волясмотретьприезжатьодининдивидуальныйимядляdetect_picamera.pyиздокумент.
  2. сейчассуществовать,изменятьприезжатьздесьискачатьимядляcoco_ssd_mobilenet_v1_1.0_quant_2018_06_29из Обнаружение Папка с файлами меток объектов Модели. существоватьэтотдокумент夹середина,ты Волясмотретьприезжатьдваиндивидуальныйдокумент:detect.tfliteиlabelmap.txt
  3. Воля Этидокументкопироватьприезжатьpi/examples/lite/examples/object_detection/raspberry_piсередина。
  4. ловить Вниз Приходить,использоватьpi/examples/lite/examples/object_detection/raspberry_piиспользовать Терминализменятьприезжать Обнаружение объектовглаз录,иосуществлятьк Вниз Заказ:
Язык кода:javascript
копировать
$Python3 detect_picamera.py –model detect.tflite –labels labelmap.txt 

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

  1. ловить Вниз Приходить,Воляburgerfries.tfliteиlabelmapдокументкопироватьприезжатьдокумент夹середина。 Затем измените предыдущую командную строку середина на отображение Python Путь для отражения вашего нового имени файла и его выполнения. к Внизизображениеда Используйте Вobject_detectionизизображение:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-paeP5Qz6-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/c324b898-4e23-407f-aa23-2a59ee6f2915.png)]

Вот несколько вещей, на которые следует обратить внимание:

  • У меня широкоугольная камера, и я не могу правильно снимать еду.
  • Я перенес обычное сообщение о прибытии с камеры Raspberry Pi и смог Обнаружениеприезжать на изображении середина, чтобы просмотреть контент о прибытии.
  • Показанное здесь из Обнаружение не так эффективно, как использованиесотового. Телефон хорош, когда пришло время, и когда пришло время спасать существование, время отстает.

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

существовать 2020 TensorFlow На саммите разработчиков TensorFlow Инженеры объявляют о значительном улучшении задержки — с плавающей запятой CPU Выполнять 55 ms к 37 мс, количественная фиксированная точка CPU Выполнять 36 ms к 13 ms,OpenCL для 20 ms к 5 ms плавать 16 GPU исполнение, 2 ms Используйте В量изменять Конечноточка Edge TPU осуществлять. существование До внесения этого изменения верно было только иметь CPU из Raspberry Pi Протестировано. поэтому,Зависит от Вышеуказанные изменения должны существовать Raspberry Pi См. улучшение производительности приезда. TF Lite 2.3 Воля приносит дальнейшие улучшения.

использовать TensorFlow Lite и Create ML из iPhone начальствоиз Обнаружения объектов

приезжать В настоящее время мы научились Преобразованию модели TensorFlow в формат tfliteисуществовать телефон Андроиди Raspberry Pi начальство Сделайте выводы. существовать本Фестивальсередина,Мы Воляиспользовать tflite Модельисуществовать iPhone Выполните рассуждение дальше. iPhone или iPad начальствоиз Обнаружения объектов Можеткследоватьдва种другойизпуть,нравитьсяк Вниз小Фестиваль Место述。

Применимо к iPhone из TensorFlow Lite Модель трансформации

существовать本Фестивальсередина,нас Воляописыватькаксуществовать iPhone начальствоиспользовать tflite Модельруководить Обнаружение объектов。 связанный Подробнее,Пожалуйста, смотрите ниже GitHub страницаначальство Обзоризшаг

По сути,Долженпроцесс Можетк分дляк Внизшаг:

  1. Этот процесс должен быть установлен с последней версией. Xcode из macOS Законченный. Вы также должны иметь Apple Developer Сертификат.
  2. существовать Терминалсередина,运ХОРОШО Xcode из Заказ ХОРОШОработа具(run xcode-select --install)。 Обратите внимание, что даже если у вас уже есть Установить Xcode, также нуждаться в выполнении этого шага.
  3. существовать Терминалсерединавходитьgit clone https://github.com/tensorflow/examples.git
  4. проходитьсуществовать Терминалсерединавходить$sudo gem install cocoapodsПриходить Установитьcocoapods
  5. настраивать Используйте Воля Установить TensorFlow Примеризбольшинство终глаз录examples-masterилиexamples。 Взаимноотвечать地Даже改к Вниздокумент夹адрес.
  6. существовать Терминалсередина,типк Вниз Заказ:
Язык кода:javascript
копировать
$cd examples-master/lite/examples/object_detection/ios
$pod install
  1. Предыдущий из процесса Воля выполняет три индивидуальные основные задачи:
  • существовать Xcode середина Установить TensorFlow Lite
  • существоватьдокумент夹середина СоздайтеимядляObjectDetection.xcworkspaceиздокумент
  • автоматический запуск Xcode и ОткрытьObjectDetectionдокумент

к Вниз Экран截картинапоказывать Понятносуществовать pod Установитьпроцесссерединаты Волясуществовать Терминалсерединасмотретьприезжатьизаннотация:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-cMdbINQu-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/adf11341-f850-4b43-a95a-f7e54b7ce588.png)]

  1. существовать Xcode из签имячасть,выбиратьтыизразвиватькоманда。
  2. верноотвечатьиспользоватьруководитьк Вниз Даже改:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-ipjCfFni-1681784662642) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/2656ddf2-bd05-41dc-9d0b-66ffe9300a5a.png)]

Переднийиз Экранбыстрый В соответствии ссерединаописыватьиз Даже改иллюстрировать Понятнокакиспользоватьтыиз Даже改заменять基Проволокаdetect.tfliteиlabelmap.txtдокумент. Обратите внимание, что если вы не вносите никаких изменений и не дапроходите Волясотовый телефонсоединятьприезжать macOS бежать Xcode,Затем Воля показывает индивидуальное штатное устройство Обнаружение.,нравиться Внизкартина Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-psdOCr0e-1681784662643) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/a50bc42d-3a36-4c41-a6b6-6ad55a96cc2c.png)]

Чтобы изменить вашу конкретную модель,Пожалуйста, щелкните правой кнопкой мыши, чтобы удалить старую модель.,Затемпроходитьперетащить и оставить Установитьновый Модель. верныйкод Внесите необходимые изменения в имя файла, как показано в «Шаги». Показан 4". к Вниз Экран截картинапоказывать Понятноты Волясмотретьприезжатьиз Выход:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-mV00ejfG-1681784662643) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/364bb991-2fdb-4ba9-9877-5b59a39d0714.png)]

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

Core ML

Core ML да Apple измашинное система обучения, которая объединяет TensorFlow и другие различные источники из нейронной сети. Модель существует и при необходимости Конвертирует, а затем оптимизирует. GPU/CPU производительность для вывода на устройстве при минимизации размера приложения и энергопотребления. существовать WWDC 2019 серединапредставлятьиз Core ML 3 Обновлена ​​модель нейронной сети данных, специфичная для пользователя, которая исключает взаимодействие устройства с облаком и максимизирует конфиденциальность пользователя. связанный Дажемногоинформация,пожалуйстадоступздесь。 Core ML сама по себе строю существование, такое как Accelerate и BNNS а также Metal Performance Shaders Например, поверх примитивов низкого уровня. все Core ML Модельвсеиметь.mlmodelРасширятьимя。

Core ML изядерный Сердцечастьда Create ML,этода Используйте Визображение分добрыйи Обнаружение объектовиз Apple Фреймворк машинного обучения. Система аналогична В TensorFlow, но проще сгенерировать Модель без кодирования. существовать macOS включи, открой Xcode ивходить.mlmodel,нравитьсяк Вниз Экран截картина Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-xVezoIcL-1681784662643) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/6612fd63-f175-4a05-950b-6c9880a8387c.png)]

сейчассуществовать,Create ML серединаизвсеиндивидуальный Модельразвиватьпроцесстолькос участиемтрииндивидуальныйшаг:

  1. Подготовитьданные – то есть входной файл
  2. Воляданныетащитьприезжать Core ML середина,Затемодин击“тренироваться”
  3. 保жить Модель(пожалуйста, обрати внимание,Я не могу найти место проживания. Найти место проживания. Сохранить место проживания. Метод Desktopiz.,поэтомуяпроходитьэлектронная почта Воля Что发送给Собственныйи保жить Понятнодокумент)ианализировать Понятноданные

к Вниз Экран截картинапоказывать Понятно“создавать ML”серединаизтренироватьсяпроцесс:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-uipAowNB-1681784662643) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/157a82ce-0a7f-4cab-a372-d87cb608f1b5.png)]

связанныйначальство述Экран截картинаизодин些关键хотетьточканравиться Вниз:

  • финал изтренироватьсяпотерядля 0,83, что показывает, что результаты очень хорошие – любое низкое В 1 Оба из значения указывают на то, что Обнаружение – это хорошо. Обратите внимание, что использовать только 68 张изображение Прямо сейчас Можетполучать Долженизображение,этотпоказыватьнас Нетнуждатьсябольшой量изображение Прямо сейчас Можетразвивать Из хорошегоизнервсеть Модель.
  • пожалуйста, обрати внимание,и TensorFlow Взаимно Сравнивать,использовать Create ML Расширение Модель очень проста - абсолютно никакого кодирования, никаких конвертаций и необходимости заходить на отдельный сайт для просмотра диаграммы. Все компактно и удобно в использовании.

развивать Модельназад,Воля Что移植приезжатьк Внизиспользовать Swift Написание визуальных фреймворков. Это Воля Обнаружениес рамкой изверно значок

к Вниздасвязанныйотвечатьиспользоватьразвиватьизодин些Уведомлениеиметь значение:

  • Вы должны иметь Apple просмотреть личный кабинет и команда может войти в систему Xcode。
  • тынуждатьсяудалитьсейчас有Модельи Волябольшинствоновый Модельтащитьприезжать Xcode середина,нравитьсяк Вниз Экран截картинаизлевый侧Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-yTkQDwzL-1681784662643) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/3d776c62-9329-4302-9faa-20f56dffad73.png)]

  • После завершения этой операции,изменятьприезжатьViewController.swift,И Воля по умолчанию Имя модели переименовывается для вашего и з Модель имя,Как показано в правой части изображения выше. наконец,Учреждать Модельисуществовать iPhone беги дальше。

к Вниз Экран截картинапоказывать Понятно Модельвыход。 это показывает нам использовать Create ML развиватьиз Модельинасиспользовать TensorFlow развиватьи Конвертироватьдля.tfliteформаиз Модельпредоставлено Обнаружениемрезультатиз Сравниватьсравнивать:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-lJ6QyFKb-1681784662644) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/a67c4a1b-181e-4def-942f-cbf53fa7f94f.png)]

Преобразование модели TensorFlow в формат Core ML

Конвертироватьустройствотолько Конвертировать TensorFlow Модельиз часть. Полный MobileNet-SSD TF Модель Включать Четыреиндивидуальныйребеноккартина:Preprocessor,FeatureExtractor,MultipleGridAnchorGeneratorиPostprocessor。 Core ML Только инструменты Модель трансформациисерединаизFeatureExtractorребеноккартина; Остальные задачи необходимо выполнить отразвиватьлюдичленс ХОРОШОКонвертировать。

Различныйотметкаметодиз摘хотеть

изображениеотметкада Обнаружение объектовилиразделениеизядерный Сердцечасть。 Эта часть самая утомительная с точки зрения ручной работы с нейросетями. Первый前,насописывать Понятно Используйте Вотметкаизтрииндивидуальныйработа具:LebelImg,VGG Image AnnotatorиRectLabel。 Но да, есть много других инструментов, таких как Supervisely и Labelbox。 Некоторые из этих инструментов выполняют полуавтоматическое аннотирование. МАКСИМАЛЬНЫЙ ВЫЗОВ дасоздавать 100,000 индивидуальная аннотация и существование Точность на уровне пикселей, правильно аннотированная. Если аннотация неверна, то разработкаиз Модель Воля неверна и существует. 100,000 Изображение середина найти место неправильно из тега нравитьсясуществовать стог сена середина найти иголку. верно Вбольшой型项глазработаделать,отметкаработаделать流Можетк分длядвадобрый:

  • Передайте работу по аннотированию третьей стороне
  • Автоматическая или полуавтоматическая маркировка

существовать Внизодин Фестивальсередина,Мы с Волей обсуждаем оба метода.

Передайте работу по аннотированию третьей стороне

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

  • Google Cloud –данные Этикетка。 связанный Подробнее,пожалуйстаизменятьприезжатьздесь
  • Amazon Sagemaker реальная ситуация–использовать Amazon Mechanical Turk Сделайте отметку данных. связанный Подробнее,пожалуйстаизменятьприезжатьздесь
  • Hive AI служба маркировки данных. связанный Подробнее,пожалуйстаизменятьприезжатьздесь
  • Cloud Factory служба маркировки данных. связанный Подробнее,пожалуйстаизменятьприезжатьздесь

Стоимость услуг по маркировке данных может быть высокой.

Автоматическая или полуавтоматическая маркировка

существовать本Фестивальсередина,Мы, Воля, обсуждаем индивидуальный совершенно бесплатный инструмент автоматического аннотирования.,Долженработа具отвечатьуменьшатьлюдиработаотметкаизстепень。 этотда ИнтелизИнструменты аннотирования компьютерного зренияCVAT)работа具,это очень многообещающе,толькопроходитьнагрузка Модель Прямо сейчас Можетосуществлять Полныйс动отметкаделатьдляростточка. ты Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжатьсвязанный Долженработа具из Дажемногоинформация。 。

Этот инструмент способен создавать ограничивающую рамку.,Полигональная и семантическая сегментация создаёт аннотацию,и且возвращаться Можеткосуществлятьс动отметка。 Инструмент может аннотировать вывод для VOC XML,JSON TXT или TFRecord документ. Это означает, что если вы используете этот инструмент, вам не нужно воля изображений Конвертироватьдля TFRecord Форма. Вы можете напрямую обучать нейронную сеть. пожалуйстав соответствии с В соответствии ск Внизшагизучать习какиспользовать Долженработа具:

  1. Исполнение необходимо из Установить. всеиллюстрироватьвсесуществовать Терминалсерединаосуществлять,Сумка括Установить Докер, сборка Docker изображение также клонировать CVAT исходный код. Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Дажемногоинформация。
  2. проходитьизменятьприезжатьздесь,Установитьужесуществовать coco данныенаборначальствотренироватьсяиз Faster R-CNN ResNet исходный Atrous Модель.
  3. Установить OpenVINO Модель. Если вы используетеизда TensorFlow,но无需Установить OpenVINO Модель - Просто перейдите непосредственно к шагу «приехать». 4”。 Но да, если хочешь использовать Intel Open Model Zoo серединаиз Модельилиты Собственныйизсопределение Модель,Пожалуйста, объясните по этой ссылке
  4. ОткрытьGoogle Chrome,Затемвходитьlocalhost:8080。 Это Воля Открыть CVAT。 Обратите внимание, что НДС когда前только Можетсуществовать Google Chrome использовать в своем браузере.
  5. от Вниз拉Списокповерхностьсерединавыбирать Модель,нравитьсяк Вниз Экран截картина Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-KfTatTT0-1681784662644) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/e1fb61bb-7fa6-41d3-ad83-b03c9723a6e1.png)]

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

  1. выполнитьназовите его для создания квеста. Затем назовите класс все и добавьте ввсеизображение,нравитьсяк Вниз Экран截картина Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-9AgA9JNS-1681784662644) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/80fc9121-fc2a-4d57-8659-2dc90d4c28e8.png)]

Как показано на предыдущей фотографии изScreenбыстрый, было загружено девять изображений. Затем нажмите кнопку «Отправить» для этой задачи Воясоздавать. ты Можетк Волядругойизлюдираспространять给другойиз Задача。

  1. существовать“Задача”Вниз,существуют Действие Далее из Щелкните левой кнопкой мыши по новой строке меню.,Затем выберите «автоматическая метка». Ваш вид Воля приезжает индивидуальная строка меню,Покажите его прогресс.
  2. После завершения автоматической маркировки нажмите «Номер задания» – Вы заметите, что все изображения снабжены примечаниями. к Вниз Экран截картинапоказывать Понятновсеначальство传из九张изображениеизс动отметка Отчет:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-Tw3lM5C6-1681784662644) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/cbcf29f5-1fe4-4588-952f-56e2e5b75956.png)]

существовать Переднийиз Примерсередина,Мы загружаем все отдельные изображения одновременно,к Демос动изменятьпроцессиз有效секс。 Это правильно Обнаружение всех объектов (автомобилей, людей, грузовиков и мотоциклов). существуют. В некоторых случаях Модель не рисует светофоры и знаки остановки. Таким образом, в этом примере существует середина, только светофоры и знаки остановки нуждаются в аннотациях вручную; нас Можетк Воляработа具Используйте Ввсе Что他вернослон。 Далее мы используем VOC XML Формат Получить инструмент вывода и изображение Воля также.xmlдокументнагрузкаприезжать Этикеткаограничивающая рамкаизlabelImgработа具середина。 На следующем снимке экрана показаны результаты. пожалуйста, обрати внимание,этотданачальство述Экранбыстрый В соответствии сизлевый Внизкартина:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-865cnxPA-1681784662645) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/94644d6e-9a04-4733-b4b8-7dc42b806a4e.png)]

Данные показывают, что работа по маркировке очень точна. Инструмент постоянно обновляется. и Что他любойработа具один样,Если у вас возникли проблемы, которые не описаны здесь,Пожалуйста, отправьте заказ на работу.

Я обнаружил проблему с этим проектом: непоследовательный вывод для некоторых изображений.,Это Воля рисует аннотации в ограничительной рамке.,И правда, другие изображения,но Нет会。 перехожу в другой Linux PC и重новый Установить CVAT чтобы решить эту проблему. хотетьсуществоватькогда前 PC Чтобы решить эту проблему, вы можете существовать в настоящее время CVAT Удалить из каталога Докер, удалить CVAT документ夹,и确保порт8080Нет被Что他程序настраиватьиспользовать。 Потом можно заново Установить CVAT。

Подвести итог

существовать本главасередина,тыизучать习Понятнокаксуществоватьсетьизбольшинство远конецразвиватьи优изменятьсверточная нейронная сеть Модель. Нейронная сеть изнуряет тренироваться из большого количества данных, но, в конце концов, Для выполнения своих задач не требуется вмешательство человека. существовать Переднийизглава Фестивальсередина,насучиться Понятно必хотетьизтеорияивыполнитьизмодель, ноот Никакой реальной практики не проводилось. существоватьупражнятьсясередина,摄像机Можетк Используйте Вмонитор,монитор机устройствосекс能или评估рука术процесс。 существовать Каждый种Состояние Вниз,嵌入式视觉Все Используйте В实час设备начальстводанныеиметь дело с,Это нуждаться в существовании меньше для развертывания на периферийных устройствах.,Более эффективно из Модель.

существовать本главасередина,Вы изучите различные шпоны, вычислите производительность машины иускорительиз.,Это позволяет вам принимать обоснованные решения о том, какое устройство использовать для конкретного приложения. Затем,Мы научились использовать OpenVINO набор инструментови TensorFlow Lite Приходитьнастраивать Raspberry Pi И существуют развернуть на нем нейронную сеть. Мы делаем это, делая выводы на устройстве. После этого мы узнали, как TensorFlow Модель Конвертироватьдля TensorFlow Lite Модельи Воля Чторазвертыватьсуществовать Android и iOS на устройстве. Мы также узнали Apple из Core ML платформа,ииспользовать Create ML тренироватьсянервсетькразвивать Обнаружение объектовустройство Модель. Тогда мы Воляици TensorFlow Lite Обнаружение объектовустройство Модельруководить Понятно Сравниватьсравнивать。 нассуществовать本глава结束час Обзор Понятноизображениеотметкаис动отметкаметод。

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

двенадцать、Используйте Вкомпьютерное зрениеизоблаковычислитьплатформа

Облако вычислитьиспользовать Интернет с удаленного оборудования с универсальным доступом. этотдобрыйданныехранилищедаиспользовать Облачная платформа Заканчиватьиз。 верно Вкомпьютерное зрение, данные основные да изображения, файлы аннотаций и результаты Модель. Облачная платформа Неттолькохранилищеданные,А также выполнять тренироваться,развертыватьианализировать。 облаковычислитьикрайвычислитьиздругой之处существовать В,Нам не нужно инвестировать в инфраструктуру,Вы можете иметь почти мгновенную скорость.

существовать本главасередина,ты Воляизучать习каксуществовать Google Cloud PlatformGCP), Amazon Web ServicesAWS)и Облачная платформа Microsoft Azureсередина打Сумкаотвечатьиспользоватькруководитьтренироватьсяиразвертывать。 Вы, Воля, научитесь готовить данные, загружать приезжать в облачное хранилище данных. такжекакмонитортренироваться. Вы также Воля узнаете, как отправить изображение Воля или векторное изображение прие зжать Облачную. провести анализ и получить JSON ответ. Лист обсуждения данной главы индивидуальное приложение такжекаксуществоватьвычислитьдвигательбеги дальшераспределенный TensorFlow。 Тренироваться заканчивается, в этой главе Воля обсуждается, как оценить Модель и Воля, ее интеграцию приложений прибытия середина для крупномасштабных операций.

Эта глава разделена на следующие разделы:

  • существовать GCP серединатренироваться Обнаружение объектовустройство
  • существовать AWS SageMaker Облачная платформасерединатренироваться Обнаружение объектовустройство
  • существовать Облачная платформа Microsoft Azureсерединатренироваться Обнаружение объектовустройство
  • Крупномасштабная тренироваться упаковка
  • Идея на основеCloud изVisual Search изобщий
  • анализировать Различный Облачная платформасерединаиз изображения и механизм поиска

существовать GCP серединатренироваться Обнаружение объектовустройство

существовать前дваглавасередина,Мы узнали, как настроить Google Colab для использования SSD,R-CNN и R-FCN а также Inception и MobileNet делатьдля骨干предварительнотренироватьсясеть Приходитьтренироватьсясопределение Обнаружение объектовустройство。 насизсеть Используйте ВОбнаружение Гамбургерикартофель фри。 существовать本Фестивальсередина,нас Воляизучать习какиспользовать GCP Выполняйте те же задачи. тытакже Можетксуществоватьздесь

Моя предыдущая статья началась,Но я обнаружил, что многие части необходимо упростить.,и且нуждатьсядобавить в дополнительных деталях, чтобы сделать его существующимiiz Ubuntu PC беги дальше。 к Вниз小Фестивальпредоставилиспользовать GCP тренироваться детектор целей из пошагового процесса.

пожалуйста, обрати внимание,本Фестивальс участием许много Воляместный Терминальное соединение приезжать GCP Большие шаги, иногда поток информации может сбить с толку. Прежде чем приступить к работе с этим разделом, рекомендуется внимательно прочитать процедуры, приведенные в конце этого раздела. существовать AWS Sagemaker Облачная платформаначальствотренироваться Обнаружение объектов, изучать общее из информационных потоков.

существовать GCP Создать проект в

существовать本Фестивальсередина,Волясуществовать GCP середина Создайтепроект. Проект включает в себя выставление счетов, хранилище данных, API, сертификаты и информацию о членах команды, чтобы начать вашу работу. GCP да Google измашинное обучениеплатформа,Используйте Вхранилище,строить,тренироватьсяиразвертывать Модель. проходитьизменятьприезжатьздесьАвторизоватьсяприезжать GCP консоль.

первый,Используйте Ваш идентификатор Gmail и пароль для входа,ты Волясмотретьприезжатьк Внизконсоль:

[Передача изображения по внешней ссылке не удалась. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-yHgep4kW-1681784662645) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/e8a37646-4f8b-4083-b963-59c1bc6ce5a4.png)]

Как только вы окажетесь в консоли, потратьте некоторое время, чтобы ознакомиться с опциями. Специально да, вы должны заполнить связанный счет, API Информация о проекте настройки. к Вниз小Фестиваль Обзор Понятноподробныйизиллюстрировать。

Настройки GCP

изменятьприезжатьздесьнастраивать GCP ииспользоватьтыиз Gmail Вход в аккаунт. существоватьначальствоодин Фестивальиз Экранбыстрый В соответствии ссередина,Есть три прямоугольные коробки.,В них вам необходимо настроить три отдельные основные части.

  1. Сначала нажмите «Свернуть проект на благоустройство», чтобы дать название проекту и назначить членов команды (если хотите). отмногоиндивидуальныйлюдиот事Должен项глаз)。
  2. Затем нажмите «Оплата» слева и укажите данные своей кредитной карты. существовал на момент написания, Google предоставил 300 долларов США из бесплатного пробного кредита, но вы все равно предоставляете данные кредитной карты.
  3. Как только вы это сделаете, нажмите API. и Услуги» и нажмите «предоставить возможность API и Сервис»,Затемсуществовать“машинное обучение”Внизвыбирать“AI платформатренироватьсяипредсказывать API”。
  4. один击“давать возможность”,Волядавать возможность API。 На следующем снимке экрана показано предоставление возможностьназадиз AI Platform Training&Prediction API:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-2dlZt6CS-1681784662645) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/de81e552-ecaf-4070-8cbd-63f8c8b1072c.png)]

Настройки сегмента Google Cloud Storage

ведрода保житьданныеиз容устройство。 У всех поставщиков облачных услуг есть ведро. ведроиз Формати PC изструктуры каталоговтакой же. ведро Можетк Включатьизображение(.jpgдокумент),отметка,TFRecord,исследоватьточкадокументи Модельвыход。 существовать本частьсередина,нас Воляизучать习как Установить Google Cloud StorageGCS)ведрокхранилищетренироватьсяитестданные。

использовать GCP API Настроить сегмент

хотетьиспользовать GCP API Настроить сегмент,пожалуйстав соответствии с В соответствии ск Внизшагдействовать:

  1. После регистрации для выставления счетов,КВниз滚动левый侧菜один,один击“хранилище”,Затем нажмите «создавать ведро»,И по его названию:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-aUN5tiuw-1681784662645) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/aace5356-40d0-4073-876f-b3e7d9dcc187.png)]

  1. создаватьведроназад,Внизодининдивидуальный Задачадасуществоватьведросередина Создайтеимядляdataиздокумент夹,Затем Воля загрузить файлприезжать Чтосередина。 пожалуйстасмотретьк Вниз Экран截картина,изучить Как это сделать:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-QXllbR9T-1681784662646) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/0ac81fac-f1a8-4470-bd25-2834d6b1c56e.png)]

Как показано на предыдущем изображении экрана,первый Создайтеимядляdataиздокумент夹。 Затем,один击“данные”,Нажмите «Загрузить файл»,Затемначальство载test.record,train.record,label_map.pbtxt,pipeline.configиmodel.ckpt*(трииндивидуальныйдокумент)。 нас Волясуществовать Внизодин Фестивальсерединапредставлятькакполучать Этидокумент.

использовать Ubuntu Терминал Настроить сегмент

Этот процесс предполагает приезд Настроить Google Cloud SDK, а затем Google Cloud Проект иведро ссылается на ваш терминал, чтобы вы могли постоянно загружать туда документы. пожалуйста, запомни,тренироваться Воля Зависит от команды терминала запускается, поэтому даже если вы используете перед из API настройки, вы все еще нуждаетесь выполните следующую часть середина с указанием шагов (от "Начать Настроить) Google Cloud раздел «SDK») на терминал «Воля», ссылка приезжать GCP。

Настройте Google Cloud SDK

Google Cloud SDK да Набор инструментов командной строки, которые позволяют PC Да Google Cloud взаимодействовать. Зависит от Всуществовать本Фестивальсередина,Мы Воляиспользовать Ubuntu Терминал Google Cloud взаимодействовать, чтобы мы нуждались в первую очередь в наладке SDK。 существовать Терминалсерединавходитьк Вниз Заказ:

Язык кода:javascript
копировать
$ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk
$ gcloud init

существовать Переднийизкодиз前три ХОРОШОсередина,Получаем список SDK,Затемиспользоватьapt-keyверно Сумкаруководить认证,Затем Установить SDK。 существовать Нет.Четыре ХОРОШОсередина,Мы Воляиспользоватьgcloud.initнастраиватьgcloudКонфигурация。

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

Далее мы мы ваш местный PC 链ловитьприезжать Google Cloud проект.

Волятыиз Конечная ссылка приезжать Google Cloud Проект иведро

существоватьначальствоодин Фестивальизшагсередина,наснастраивать Понятно Google Cloud SDK。 Сейчас существуем, мы нуждаемся в выполнении самых важных шагов, это да Воля Ubuntu Терминальное соединение приезжать Google Cloud Проекта துக்கியுக்கள்

для Чтонуждаться Воля Ubuntu Конечная ссылка приезжать Google Cloud проект? Ответить даусиспользовать локально PC начальствоиз Терминалзапускатьтренироваться Заказ,ноданасизданныехранилищесуществовать GCP изведросередина,и且Модель Волясуществовать GCP генерируется в. Поэтому мы нуждаемся Воля PC Терминальное соединение приезжать GCP выполнить тренировочную миссию.

существовать Терминалсерединав соответствии с顺序входитьк Внизшаг:

  1. настраивать项глаз,существовать本примерсерединадляrcnn-trainingpack
Язык кода:javascript
копировать
$ gcloud config set project rcnn-trainingpack
  1. хотеть Открытьведро,пожалуйставходитьgsutil Python команда, как показано ниже:
Язык кода:javascript
копировать
$ gsutil mb gs://krish_burgerfries
  1. ловить Вниз Приходить,нас Установить переменные Решение для определения ведрои файлы принадлежат проекту:
Язык кода:javascript
копировать
$ export PROJECT="rcnn-trainingpack"
$ export YOUR_GCS_BUCKET="krish_burgerfries"
  1. проходитьвходитьк Вниз Заказ Приходитьдобавить вспецифический TPU из Служитьсчет:

тензорный процессорTPU)да Google развивающийся вид AI ускоритель,Используйте Вбыстрыйскоростьиметь дело сбольшой量данныектренироватьсянервсеть。

Язык кода:javascript
копировать
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)"      
https://ml.googleapis.com/v1/projects/${PROJECT}:getConfig

Переднийиз Заказ会Воляк Внизвыход返回приезжать“Терминал”окно。 пожалуйста, обрати внимание,Имя сервиса и имя проекта Воля и ваше приложение отличаются:

Язык кода:javascript
копировать
{"serviceAccount": "service-444444444444@cloud-ml.google.com.iam.gserviceaccount.com",
"serviceAccountProject": "111111111111",
 "config": {"tpuServiceAccount": "service-111111111111@cloud-tpu.iam.gserviceaccount.com" }}

{"serviceAccount": "service-444444444444@cloud-ml.google.com.iam.gserviceaccount.com",
"serviceAccountProject": "111111111111",
"config": {
"tpuServiceAccount": "service-111111111111@cloud-tpu.iam.gserviceaccount.com" }}
  1. проходитьтипвсеиндивидуальныйtpuServiceAccountпуть,Воля Экспорт учетной записи TPU для переменных среды,нравиться Вниз Место示:
Язык кода:javascript
копировать
$ export TPU_ACCOUNT="service-111111111111@cloud-tpu.iam.gserviceaccount.com"
  1. Воляml.serviceAgentролевой грант TPU счет:
Язык кода:javascript
копировать
$ gcloud projects add-iam-policy-binding $PROJECT      --member serviceAccount:$TPU_ACCOUNT --role roles/ml.serviceAgent

Этот терминал «Волясуществовать» середина генерирует серию аннотаций.,отUpdated IAM policy for the project [rcnn-trainingpack]начинать。

Установить TensorFlow Обнаружение объектов API

сейчассуществоватьнасуже Воля Конечная ссылка приезжатьведрои Google Cloud Проект, следующий шаг да Воля его ссылка приезжать TensorFlow Обнаружение объектов API。 пожалуйстаследоватьздесьпоставлятьизодин Группаиллюстрировать。

Предыдущие из Установить ссылки Включить множество несуществующих строк изкода, перечисленных здесь. Ты, Воля, можешь правильно выполнить большинство кодов. этотпроцессизнаконецдва ХОРОШОкодописыватьнравиться Вниз:

Язык кода:javascript
копировать
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:'pwd':'pwd'/slim
python object_detection/builders/model_builder_test.py

В описании сказано,Предыдущие шаги имеют решающее значение для успеха. Но да,Если ты PC начальство Установить Понятно TensorFlow 2.0 может возникнуть следующая ошибка:

Язык кода:javascript
копировать
 AttributeError: module 'tensorflow' has no attribute 'contrib'

Даже если эта ошибка будет устранена, это приведет к появлению еще одной индивидуальной ошибки. TensorFlow 2.0 и TensorFlow Обнаружение объектов API Несовместимо связанныйиз ошибки. Поэтому мы меняем Волю на для, чтобы описать альтернативный путь. 另один种выбиратьдаиспользоватьздесь,Похоже на: Внассуществовать Нет. 10 глава“использовать R-CNN,SSD и R-FCN руководить Обнаружение объектов”,и Нет. 11 глава“существоватьиметь CPU/GPU Оптимизированные функции глубокого обучения на периферийных устройствах»серединаиспользовать TensorFlow 1.15 существовать Google Colab Запустите его.

Подготовить набор данных

нравиться“использовать GCP API”часть Настроить сегментсередина Место述,наснуждатьсянаполнениек Внизbucket: test.record,train.record,label_map.pbtxt,pipeline.configиmodel.ckpt*(трииндивидуальныйдокумент )。 существовать Внизлапшаиз小Фестивальсередина,Наша Воля объясняет, как наполнять Эти контент.

TFRecord и отметить данные карты

TFRecord Filedaefficiencyиз TensorFlow документ Формат,Используйте Вкодинодиндва进制Форматхранилищеизображениеиотметкадокумент,к供 TensorFlow Модельдогонятьбыстрыйскорость读Выбирать。 TFRecord ужесуществовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”из Обнаружение объектовсерединапредставлять。 существовать本Фестивальсередина,нас Воляописыватькак Подготовитьданные Затемначальство传。

Подготовка данных

первый,от“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN руководить Обнаружение объектов”,и“Нет. 11 глава",“проходить CPU/GPU Оптимизация существования для глубокого обучения на периферийных устройствах»из Google Colab Копировать в проект TFRecord документ(Прямо сейчасtrain.recordиtest.record),И поместите его в каталог середина на вашем ПК. такой же,Воляlabel_map.pbtxtкопироватьприезжать同одинглаз录серединаизpbtxtдокументсередина。

Загрузка данных

существоватьздесь,нас Волясмотретьодин Внизиспользовать Терминалз Загрузка данныхметод:

  1. 借助к Вниз Заказ,нас Воляtrain.recordначальство传приезжать GCP。 этот Воляиспользоватьgsutil Python Файл команды Воля из локального каталога копировать приезжать GCS ведро。 Обязательно включите этот подкаталог. Например,существоватьэтот种Состояние Вниз,YOUR_GCS_BUCKETВолядатыизведроизимясказать; нравиться果дляburgerfries,но Заказ Волядля$burgerfries/data,ЧтосерединаdataдаburgerfriesВнизизребенокглаз录,документхранилищесуществовать Чтосередина:
Язык кода:javascript
копировать
$ gsutil -m cp -r /Documents/chapter12_cloud_computing/burgerfries/annotation/train.record gs://${YOUR_GCS_BUCKET}/data/
Copying file:///Documents/chapter12_cloud_computing/burgerfries/annotation/train.record [Content-Type=application/octet-stream]...
\ [1/1 files][  2.6 MiB/  2.6 MiB] 100% Done
  1. ловить Вниз Приходить,к Вниз Заказ Воля Используйте ВВоляtest.recordначальство传приезжать GCP:
Язык кода:javascript
копировать
$ gsutil -m cp -r /Documents/chapter12_cloud_computing/burgerfries/annotation/test.record gs://${YOUR_GCS_BUCKET}/data/
Copying file:///Documents/chapter12_cloud_computing/burgerfries/annotation/test.record [Content-Type=application/octet-stream]...
\ [1/1 files][  1.1 MiB/  1.1 MiB] 100% Done                                    
Operation completed over 1 objects/1.1 MiB.
  1. к Вниз Заказ Воляпомощьнас Воляlabel_map.pbtxtначальство传приезжать GCP:
Язык кода:javascript
копировать
$ gsutil -m cp -r /Documents/chapter12_cloud_computing/burgerfries/annotation/label_map.pbtxt gs://${YOUR_GCS_BUCKET}/data/
Copying file:///Documents/chapter12_cloud_computing/burgerfries/annotation/label_map.pbtxt [Content-Type=application/octet-stream]...
/ [1/1 files][   75.0 B/   75.0 B] 100% Done                                   
Operation completed over 1 objects/75.0 B.    

Если вы не используете терминал, просто используйте Google Cloud ведросерединаиз Upload Команда для загрузки файлов типа "использовать GCP API», как показано на скриншоте.

model.ckptдокумент

существовать本Фестивальсередина,нас Воляизучать习какскачатьпредварительно Модель обученияизисследоватьточкадокумент. исследоватьточкада Модельизмасса。 Этимасса Воля被начальство传приезжать GCS ведро,Начните трансферное обучение:

  1. изменятьприезжать TensorFlow Model Zoo GitHub страницаискачать适когдаизmodel.tarдокумент
  2. Следующими способами можно загрузить соответствующий файл из распакованной версии:
Язык кода:javascript
копировать
ssd_mobilenet_v1_0.75_depth_300x300_coco14_sync_2018_07_03.tar.gz

Обдумать захват точки Модельиспользоватьизвсех параметров из точного значения. 解压缩документчас,ты会Уведомлениеприезжатьдокументдобрый型нравиться Вниз:

  • model.ckpt.data-00000-of-00001:одининдивидуальныйдва进制данныедокумент,Чтосередина Включатьтренироваться变量масса,Значение выравнивания градиента
  • model.ckpt.index:описывать Каждыйиндивидуальныйисследоватьточкаизиндексценитьиздва进制документ
  • model.ckpt.meta:описывать保житьизкартина结构; Это индивидуальный буфер протокола.
  • Checkpoint:Записыватьбольшинствоновыйизисследоватьточкадокумент

Файл конфигурации модели

Модельconfigдокументдаодининдивидуальный文Эта статья件,определение Понятно Модельизк Вниз重хотетьособенность:

  • Модельимясказать
  • Количество категорий
  • Мин./макс. размер изображения
  • Модель参число
  • исследоватьточка,TFRecord иmap.pbtxtиз Расположение

существоватьтренироватьсяпериод,Модельиспользоватьconfigдокументвходитьинастраивать参число。 ты Можетксуществовать TensorFlow глаз录серединаизк Внизпуть Внизпопытаться найтиприезжатьconfigдокументиз Списокповерхность:

Язык кода:javascript
копировать
models-master/research/object-detection/samples/configs

пожалуйста, обрати внимание,существовал на момент написания статьи,толькосуществовать TensorFlow 1.x серединапредоставил Первый前изглаз录,исуществовать 2.x В середине его нет. поэтому,Если ты PC начальство Установить Понятно TensorFlow 2.0,пожалуйстаиспользовать Внизлапшаобсуждатьиз替代шаг Приходитьполучатьconfigдокумент.

или ВОЗ,ты Можеткизменятьприезжатьздесь,Затемсуществовать文本编辑устройствосерединакопироватьconfigдокумент. также Можеткот Переднийиз链ловитьскачать Взаимноотвечатьиз.configдокумент.

к Вниз Списокповерхностьпоказывать Понятноconfigдокументсерединануждатьсяруководитьиз Даже改:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-8b4ZlGUO-1681784662646) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/0dc98ffc-6a1c-4f80-b1f8-22e5f52388e3.png)]

В начале списка середина все изменения отмечены прямоугольниками. левый侧Списокповерхностьпоказывать原始configдокумент,右侧Списокповерхностьпоказывать Даже改изconfigдокумент. здесь,гипотезаTFRecordдокументимядаtrain.recordиtest.record,pbtxtдокументимядаlabel_map.pbtxt,и且 Google хранилище驱动устройствосерединаизпутьдаkrish_burgerfries/data。 Если имя файла и путь различаются, вы можете изменить их соответствующим образом.

сейчассуществовать,проходитьсуществовать Терминалсерединатипк Вниз Заказизменятьприезжать TensorFlow researchглаз录:

Язык кода:javascript
копировать
$cd models-master/research

связанный Сумка Обнаружение объектов API,pycocotoolsиtf-slimизинформация,Видетьк Вниз Заказ:

Язык кода:javascript
копировать
models-master/research$ bash object_detection/dataset_tools/create_pycocotools_package.sh /tmp/pycocotools
models-master/research$ python setup.py sdist
models-master/research$ (cd slim && python setup.py sdist)

существоватьоблакоконецтренироваться

После выполнения вышеуказанных шагов,нас Воля Подготовитьруководитьтренироваться. как упоминалось ранее,проходитьосуществлятьк Вниз Заказсуществовать Терминалсерединаначинатьтренироваться:

  1. Команда очень длинная,Но да Воля его копироватьприезжать в текстовом редакторе,только Воля{YOUR_GCS_BUCKET}Изменить дляburgerfries(существоватьтыиз Состояние Вниз,если имена разные,но Воля Что Изменить для Долженимясказать)。 Заканчиватьназад,Воля Что粘贴приезжать Терминалсерединаиточка击Enter
Язык кода:javascript
копировать
$ gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_tpu_main --runtime-version 1.15 --scale-tier BASIC_TPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --tpu_zone us-central1 --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config
  1. итренироваться так же,существоватьк Вниз Заказизпомощь Внизосуществлятьпроверять。 Должен Заказ又очень长,Но да Воля его копироватьприезжать в текстовом редакторе,только Воля{YOUR_GCS_BUCKET}Изменить дляburgerfries(существоватьтыиз Состояние Вниз,если имена разные,но Воля Что Изменить для Долженимясказать)。 После завершения этой операции,Воля Что粘贴приезжать Терминалсередина,Затемодин击Enter
Язык кода:javascript
копировать
$ gcloud ml-engine jobs submit training `whoami`_object_detection_eval_validation_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_main --runtime-version 1.15 --scale-tier BASIC_GPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config --checkpoint_dir=gs://${YOUR_GCS_BUCKET}/train
  1. тренироватьсяначинатьназад,ты Можеткпроходитьосуществлятьк Вниз Заказ Приходить评估тренироватьсяработаделать:
Язык кода:javascript
копировать
$ gcloud ai-platform jobs describe krishkar_object_detection_1111111111

существоватьэтот,конецизчисло字верно Втыизотвечать Используйте Воля有Местодругой,И отображается терминал «Волясуществовать середина». После ввода предыдущей команды,ты Можетксуществоватьэтотиндивидуальныйстраницасерединаисследоватьтренироватьсяделать业。

Обратите внимание, что URL-адрес изxxxxxи1111111111часть Толькода Пример; Ваше значение Воля отличается и будет отображаться в существующем терминале середина.

существовать TensorBoard Просмотр результатов модели в

существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”руководить Обнаружение объектовсередина,Мы научились использовать Google Colab существовать TensorBoard Посмотреть в TensorFlow Модельвыходрезультат. В этом разделе середина мы, Воля, покажем вам, как применять терминал середина, выполнив команду от Облачная. запуск платформы TensorBoard:

  1. 让насот Терминалсерединавходитьк Вниз Заказначинать:
Язык кода:javascript
копировать
tensorboard --logdir=gs://${YOUR_GCS_BUCKET}/train

После выполнения вышеуказанной команды,Если вы столкнулись с ошибкой прибытия,НапримерValueError: Duplicate plugins for name projector,ноотздесьи Воля Что保житьприезжатьтыизглаз录середина。

  1. существовать Терминалсередина,изменятьприезжатьdiagnose_tensorboard.pyиз Установитьглаз录иосуществлятьк Вниз Заказ:
Язык кода:javascript
копировать
$ python diagnose_tensorboard.py

это Воля运ХОРОШОипоставлять Может能из修复предположение。 В моем случае потребовались следующие исправления:

Язык кода:javascript
копировать
### Suggestion: Fix conflicting installations

 "Conflicting package installations found. Depending on the order of installations and uninstallations, behavior may be undefined. Please uninstall ALL versions of TensorFlow and TensorBoard, then reinstall ONLY the desired version of TensorFlow, which will transitively pull
 in the proper version of TensorBoard. (If you use TensorBoard without TensorFlow, just reinstall the appropriate version of TensorBoard directly.)

 Namely:

 pip uninstall tb-nightly tensorboard tensorflow-estimator tensorflow-estimator-2.0-preview tensorflow-gpu tf-nightly-gpu-2.0-preview

 pip install tensorflow # or `tensorflow-gpu`, or `tf-nightly`, ..."
  1. в соответствии Рекомендуемая команда выполнения, TensorBoard Воля работает нормально.
  2. навигацияприезжатьlocalhost:6006к查смотреть TensorBoard результат.

существовать TensorBoard Середина, ты, Воля, посмотри на нейросеть, используемую при выезде из дома. такжесуществовать Ограничивающая рамка изображения отображается на тестовом изображении. пожалуйста, обрати внимание,существовать TensorFlow середина,Мы не загрузили изображение,нодаэтодаотTFRecordдокументполучатьизображениеиз。 TensorBoard возвращатьсяпоказывать Точностьи Точностьданные,нравиться Вниз Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-V8KG4dPK-1681784662646) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/1299acd6-8cd6-4a62-962a-73b8b3b0fcfd.png)]

Точностьданные Нетвысокий,но Можеткпроходитьдобавить в Больше изображений для улучшения -существовать из примеровсередина,мы используем только 68 изображения для обучения.

Сейчас мы существуем, создав модель, и наблюдаем за ее результатом.,существовать Внизодинчастьсередина,Мы Воля опишем как упаковать Модель.,к便ты Можетк Воля Чторазвертыватьсуществоватьпериферийное устройство(Напримерсотовый телефон) для отображения в реальном времени. существование Здесь упаковка Модель означает замораживание Модели, что означает, что Модель больше не подвержена тренироваться.

Модельвыходиприезжатьзаморозитькартинаиз Конвертировать

приезжать В настоящее время только для Воля, мы научились TFRecord Формат загрузки изображенияприезжать GCP,Затемиспользовать SSD MobileNet Модель Приходитьтренироваться Иголкаверно Гамбургерикартофель фриизсопределение Модель. В этом разделе середина мы Воля рассмотрим вывод Модели из компонентов и научимся замораживать Модель. Замораживание модели предполагает сохранение в каком-либо формате. TensorFlow картинаимасса,кназад Может Используйте Всделать вывод。 Модельвыходхранилищесуществоватьtrainдокумент夹середина,и且Включатьк Вниздокумент:

  • graph.pbtxt:этотдаодининдивидуальный文Эта статья件,описывать Понятно TensorFlow картинаначальство Каждыйиндивидуальныйузелизценить,список и форма
  • model.ckpt-xxxx.data-00000-of-00001:этотдаодининдивидуальныйдва进制документ,Указывает все переменные файла по значению.
  • model.ckpt-xxxx.index:этотдаодининдивидуальныйпредставлятьповерхностьиздва进制документ,Его середина Каждыйиндивидуальный ключ для тензора по имени и его значению
  • model.ckpt-xxxx.meta:этотописывать Понятно保житьизкартина结构
  • train_pipeline.config:этот文Эта статья件описывать Понятно Модель参число-существовать Файл конфигурации Также поясняются первые две части раздела «индивидуальные модели».

пожалуйста, обрати внимание,существовать Переднийизшагсередина,ятолькокxxxxдляпример。 Ваше значение Воля другое. входить Долженинформацияи Нетдаxxxx

Загрузите последние изданные файлы (щелкните правой кнопкой мыши и загрузите),поэтому,существовать本Примерсередина,抓Выбирать Включать-2000издокумент.

Внизодининдивидуальный Задачада Воляисследоватьточкавыход Конвертироватьдлязаморозитьизрассуждениекартина. В следующем разделе описаны три метода:

  1. от TensorFlow Core осуществлятьfreeze_graph.py
Язык кода:javascript
копировать
   $ python freeze_graph.py --input_graph=train_graph.pbtxt --                             input_checkpoint=train_model.ckpt-2000 --                                    output_graph=frozen_graph.pb --output_node_name=softmax
  1. от TensorFlow Python работа具осуществлятьfreeze_graph
Язык кода:javascript
копировать
    import tensorflow as tf
    from tensorflow.python.tools import freeze_graph
    checkpoint_path = './'+'train_model'+'.ckpt-2000'
    freeze_graph.freeze_graph('train_graph.pbtxt', "", False,                 checkpoint_path,    "output/softmax", "save/restore_all",                     "save/Const:0",'frozentensorflowModel.pb', True, "")

верно В С помощью двух вышеуказанных методов мы получим два типа ошибок:

Язык кода:javascript
копировать
  IndexError: tuple index out of range
  AttributeError: module 'tensorflow_core.python.pywrap_tensorflow' has no    attribute   'NewCheckpointReader'
  1. от Терминалсуществоватьtflite graph.pyначальствоосуществлятьexport函число,Затемскачать Связанныйдокумент:
Язык кода:javascript
копировать
    $export CONFIG_FILE=gs://${YOUR_GCS_BUCKET}/data/pipeline.config
    $export CHECKPOINT_PATH=gs://${YOUR_GCS_BUCKET}/train/model.ckpt-2000
    $export OUTPUT_DIR=/tmp/tflite
  1. Затем,в соответствии сэтотиндивидуальныйстраницасерединаизописывать,от Docker документсуществовать Терминалсерединаосуществлятьк Вниз Заказ。

Docker даодин种виртуальная Машина позволяет персоналу знакомиться с приложением «Воля» и всеми его компонентами, упакованными вместе с существующими. верно В TensorFlow,использовать Docker из Преимуществда Воля TensorFlow Установитьи PC Изоляция операционной системы. Эта изоляция устраняет многое из того, что мы наблюдали ранее. TensorFlow Связанные ошибки:

Язык кода:javascript
копировать
    $python object_detection/export_tflite_ssd_graph.py \
    --pipeline_config_path=$CONFIG_FILE \
    --trained_checkpoint_prefix=$CHECKPOINT_PATH \
    --output_directory=$OUTPUT_DIR \
    --add_postprocessing_op=true

существоватьк Внизчастьсередина,Наша Воля описывает "Нет. Глава 11",“существоватьиметь CPU/GPU 优изменять功能изпериферийное устройствоначальстворуководитьглубокое обучение”нести及изtfliteКонвертироватьпроцесс。

от Google Colab Выполнить экспорт tflite graph.py

существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN из Обнаружение объектов”и“Нет. 11 глава",“существоватьиметь CPU/GPU Оптимизация глубокого обучения на периферийных устройствах», мы используем Google Colab Воляисследоватьточка Конвертироватьдлязаморозитькартина. нас Волясуществоватьэтот处использовать Взаимно同изметод,В дополнение к нашей конфигурации «Воляимпортировать»,Си контролировать и выводить каталог,нравиться Вниз Место示:

Язык кода:javascript
копировать
CONFIG_FILE = '/content/sample_data/train_pipeline.config'
CHECKPOINT_PATH = '/content/sample_data/train_model.ckpt-2000'
OUTPUT_DIR = '/content/sample_data'

Воля загрузить файлприезжать Google Ехать, а потом тащить приезжать Google Colab серединаимядляsample_dataиздокумент夹середина。 ты Можетк Создайтедругойизимясказать Приходить代替sample_data。 после,осуществлятьк Вниз Код:

пожалуйста, обрати внимание,нравиться果ты Нетпроходить Волядокументтащитьприезжать Google Colab середина носить документы, а да Воля Google Colab 链ловитьприезжатьдокумент Местосуществоватьиз Google облакоконец硬盘,может возникнуть ошибка,Поскольку длясуществовать не удалось найти файл о прибытии в течение этого периода.

Язык кода:javascript
копировать
import re
import numpy as np
!python /content/models/research/object_detection/export_tflite_ssd_graph.py \
    --input_type=image_tensor \
    --pipeline_config_path={CONFIG_FILE} \
    --output_directory={OUTPUT_DIR} \
    --trained_checkpoint_prefix={CHECKPOINT_PATH} \
    --add_postprocessing_op=true

Можетксуществоватьк Вниз GitHub 链ловитьсерединапопытаться найтиприезжатьэтот Конвертироватьизкод

поэтому,общий разговор,Внизкартинаповерхность示существовать GCP начальствотренироватьсясопределение Обнаружение объектовустройствоизпроцесскартина:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-YrJbWqvp-1681784662646) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/771c10ac-1d93-40f9-947b-66b2d1e90f73.png)]

первый Создайте项глаз,Затем создать законопроект,настраивать API иведро, готовься TensorFlow Обнаружение объектов API, подготовьте и загрузите набор данных и начните тренироваться. Два скругленных прямоугольника внутри пунктирного прямоугольника представляют собой два разных способа выполнения одной и той же задачи. тренироваться Заканчиватьназад,Необходимые шаги включают создание замороженных графиков.,Конвертироватьtfliteповерхностьодиниразвертыватьприезжатьмобильное устройство。 Развертывание мобильных устройств в процессе и «Net. 11 глава",«Иметь функции оптимизации ЦП/ГП из глубокого обучения на периферийных устройствах» серединаиз Тот же метод,поэтомусуществоватьэтот Нетруководитьописывать。

существовать AWS SageMaker Облачная платформасерединатренироваться Обнаружение объектовустройство

AWS да Используйте Всуществоватьоблакосерединаосуществлять Различный Задачаиз Amazon Облачная платформа. AWS SageMaker дамашинное обучениеплатформа,Используйте Виспользовать AWS Интерактивная платформа тренироваться в развертывании Модель. AWS SageMaker и AWS S3 vedrointeract для получения данных из хранилищ. Внизодин Фестиваль Воляпредставлятьтренироваться Обнаружение объекты из пошагового процесса.

настройки учетной записи AWS, выставление счетов и лимиты

Свяжитесь со службой поддержки AWS,Воля Служить限制Увеличиватьприезжатьml.p3.2xlargeилидобрый似изценить。 Обратите внимание, что утверждение типа инстанса может занять до двух рабочих дней, поэтому планируйте это соответствующим образом. Если вы этого не сделаете, вы получите следующую ошибку:

Язык кода:javascript
копировать
ResourceLimitExceeded

Используйте Втренироватьсяделать业использовать Состояниеизсчетуровень Служить限制ml.p3.2xlargeдля零实пример,Текущее использование для нулевых экземпляров,пожалуйста求增量дляодининдивидуальный Пример. Пожалуйста, свяжитесь AWS Запрошена поддержка для увеличения этого лимита.

Воля.xmlдокумент Конвертироватьдля JSON Формат

AWS SageMaker отметкаданныеиспользовать JSON Формати Нетданас Доиспользоватьиз.xml。 проходитьк Внизшаг Воля.xmlдокумент Конвертироватьдля COCO JSON Формат:

  1. отздесьскачатьиликлонироватьхранилищебиблиотека.
  2. После клонирования библиотеки хранилища и загрузки войдите в терминал voc2coco.py Python Каталог, в котором расположены файлы.
  3. Создайтеимядляtrainxmlизглаз录,Чтосередина Включатьвсе.xmlдокумент. Долженглаз录отвечатьиvoc2coco.pyКусочек ВВзаимно同изхозяинглаз录середина。
  4. существовать同одинхозяинглаз录середина,Создайтеимядляtrainlist.txtиздокумент,Должендокументотвечать Список出все.xmlдокументимя。 ты Можетксуществовать Терминалсерединакопироватьэтотдокумент,Затем Волявсе.xmlдокументкопироватьи粘贴приезжать文Эта статья件серединаксоздаватьэтотдобрыйдокумент.
  5. ловить Вниз Приходить,Создайтеclassname.txtдокумент,Должендокументотвечать Список出trainingдокумент夹серединаизвседобрый。 существоватьэтот Примерсередина,это Воля有два ХОРОШО-burgerиfries
  6. Затем запустите терминал в домашнем каталоге Python Код выглядит следующим образом:
Язык кода:javascript
копировать
$ python voc2coco.py  --ann_dir trainxml  --ann_ids trainlist.txt  --labels classname.txt  --output train_cocoformat.json

большинство终выходдаcocoformat.JSONдокумент,этодавсе.xmlдокументизодининдивидуальныйкомбинация JSON документ.

  1. ВоляCOCO JSONдокумент Конвертироватьдляодининдивидуальный JSON документ.
  2. Затем,использоватьChapter12_cocojson_AWSJSON_train.ipynb Jupyter блокнот ВоляCOCO JSONдокумент Конвертироватьдляодининдивидуальный JSON документ. МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжатьэтотдокумент. этотдаверно Amazon предоставлено Обнаружением объектовкодиз Исправлять。 Этот код не даот GitHub страницаполучатьCOCO JSONдокумент,идаотместный驱动устройствополучатьначальствоодин步серединасоздаватьизcocoformat.JSONдокумент,Затем Воля Что Конвертироватьдлягенерироватьиздокумент夹серединаизмногоиндивидуальный.JSONдокумент.

Воля Загрузка данныхприезжать S3 ведро

S3 ведрода Используйте Всуществовать AWS серединахранилищеданныеизоблакохранилище容устройство。 В этом разделе описывается,какданныеотнасиз PC начальство传приезжать S3 ведро:

  1. Создайте основную папку для указания данных проекта.
  2. существовать Должендокумент夹середина,Загрузите четыре отдельных файла и одну отдельную выходную папку.,нравиться Вниз Место示:
  • train_channeltrainкартина片.jpgдокумент
  • train_annotation_channeltrainотметка.JSONдокумент. Каждыйиндивидуальныйдокументверноотвечать ВКаждыйиндивидуальныйtrainизображение。
  • validation_channelvalidationкартина片.jpgдокумент
  • validation_annotation_channelvalidationотметка.JSONдокумент. Каждыйиндивидуальныйдокументверноотвечать ВКаждыйиндивидуальныйvalidationизображение。
  1. Создайтевыходдокумент夹Приходитьхранилищеисследоватьточкаивыход Модельдокумент.

Создайте экземпляр блокнота и начните обучение

Давайте выполним следующие шаги:

  1. выбирать实примердобрый型(выбирать Используйте В加скоростьвычислитьиз实пример,Напримерml.p2.nxlarge,ЧтосерединаnМожеткдля 1, 2, 8 и так далее). пожалуйста, обрати внимание,нравиться果实примердобрый型да标准добрый型(Напримерml.m5.nxlarge)иливычислить优изменять型(Напримерml.c5.nxlarge),нотренироваться Волянеудача。 Поэтому запросите увеличение лимитов обслуживания, как было сказано ранее.
  2. выбор Максимальное время работы-от 1 小часначинать,верно ВОчень большая работа,Увеличьте его.
  3. Предыдущее описание S3 ведроиз пути, чтобы алгоритм знал, откуда извлечь данные.
  4. Назначение пути к месту проживания указывается перед выходной папкой прибытия. существование Предыдущий блок исходного кода середина показывает пример выходного пути из. существоватьэтот种Состояние Вниз,sample1да S3 ведроимясказать,DEMOда Чтосередина Включатьsample1издокумент夹,Его середина имеет шесть индивидуальных папок - две индивидуальные папки.,Чтосередина Сумка括.jpgизображение,дваиндивидуальныйотметкадокумент夹Зависит от.jsonдокумент,выходиисследоватьточкадокументкомпозиция。 Обратите внимание, что путь должен быть правильным; В противном случае может возникнуть ошибка:
Язык кода:javascript
копировать
s3://sample1/DEMO/s3_train_data/
s3:// sample1/DEMO/s3_train_annotation/
s3:// sample1/DEMO/s3_validation_data/
s3:// sample1/DEMO/s3_validation_annotation/
s3:// sample1/DEMO/s3_checkpoint/
s3:// sample1/DEMO/s3_output_location/
  1. проходить Python блокнотилипроходитьОбучение API настраиватьтренироваться.
  2. тренироваться结束назад,выход Воляхранилищесуществовать Первый前кодсерединаопределениеизs3_output_locationсередина,делатьдляmodel.tar.gzдокумент. исследоватьточка Воляхранилищесуществовать Переднийкодсерединаопределениеизs3_checkpointРасположение。
  3. Внизодин步Воляда Учреждатьрассуждение Модель. AWS держать​​有подробныйизрассуждение分步иллюстрировать,Можетсуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。

Ремонт тренироватьсясерединаиз Некоторая общая Вина

к Вниздаодин些существоватьтренироватьсяпроцесссерединанеудачаиз原потому что及Чторешатьметод:

  • Вопросы, связанные с Вина 1 - s3 ведро:существоватьвходитьданныеисточниксерединаданныйизs3://DEMO-ObjectDetection/s3_train_data/ S3 URL Не могу найти жилье на S3 вернослон。 пожалуйста确保ведро Кусочек ВМесто选область(us-east-1)середина,вернослонжитьсуществовать ВДолжен S3 Префикс Вниз,и且arn:aws:iam::11111111:role/service-role/AmazonSageMaker-ExecutionRole-xxxxxxxРольверноDEMO-ObjectDetectionведроиметьs3:ListBucketРазрешения。 или из S3 изThe specified bucket does not existошибка消息。 решение:Даже改 S3 путь ведро, как упоминалось ранее. верноtrain,validation,annotationиimageданныедокументкаждый重复одининдивидуальный。
  • Вина 2 - Проблема с размером пакетаClientErrorvalidationнабор Нет足够изприноситьотметкадокумент. пожалуйста确保приносить有有效отметкаиздокументчисло量большой Вmini_batch_size,и且实примерсерединаиз GPU Количество больше. решение:хотеть记住из重хотетьодинточкадапартиябольшой小必须小Вvalidationдокументизчисло量。 поэтому,нравиться果validationдокументизчисло量для 32, размер партии для 32, то Воля размер микро партииот 32 Изменить для 12, чтобы устранить эту ошибку.
  • Вина 3 - Проблемы с типом контентаClientError:Не могущийисходныйизменять算法。 train_annotationрядизContentTypeдлянулевой。 пожалуйстадляtrain_annotationканалнастраиватьсодержаниедобрый型(Зависит отKeyError引рост)。 Зависит отu'train_annotation'引рост。 решение:确保содержаниедобрый型Нетдлянулевой白。 Волясодержаниедобрый型Изменить дляapplication/x-image
  • Вина 4 - Проблема с названием каналаClientError:Не могущийисходныйизменять算法。 Невозможно проверить конфигурацию входных данных (Зависит отValidationError引рост)。 Зависит отu'train'引ростизданеобходимыйродсекс。 Не могущийпроверять Архитектурасерединаизu'required'{u'$schema'u'http://json-schema.org/draft-04/schema#', u'additionalProperties': False,u'definitions': {u'data_channel': {u'properties': {u'ContentType': {u'type': u'string'},u'RecordWrapperType': {u'enum': [u'None', u'RecordIO'], u'type': u'string'}, u'S3DistributionType': {u'enum': [u'FullyReplicated', u'ShardedByS3Key'], u'type': u'string'}решение:AWS надеятьсярядимясказатьдляtrain_validation,train_annotationиvalidation_annotation。 нравиться果ты附加Понятно_channeltrain_channel,validation_channel,train_annotation_channelиvalidation_annotation_channel),но Воляпривести кошибка。 поэтому,Чтобы решить эту проблему,пожалуйстаотдокументимясерединаудалить_channel

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

  • base_networkдаresnet-50
  • early_stoppingдаfalse
  • early_stopping_min_epochsда10
  • early_stopping_patienceда5
  • early_stopping_toleranceда0.0
  • epochsда30
  • freeze_layer_patternдаfalse
  • image_shapeда300
  • label_widthда350
  • learning_rateда0.001
  • lr_scheduler_factorда0.1
  • mini_batch_sizeда12
  • momentumда0.9
  • nms_thresholdда0.45
  • num_classesда2
  • num_training_samplesда68
  • optimizerдаsgd
  • overlap_thresholdда0.5
  • use_pretrained_modelда1
  • weight_decayда0.0005

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

Выполнив приведенные выше упражнения, вы, Воля, познакомитесь с существованием. GCP и AWS серединатренироватьсянервсеть Модель. Далее мы будемиспользовать Microsoft Azure Облачная платформа для обучения.

существовать Облачная платформа Microsoft Azureсерединатренироваться Обнаружение объектовустройство

существовать本Фестивальсередина,Мы Воляиспользовать Azure сопределение视觉Приходитьтренироваться Обнаружение объектовустройство。 Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжатьсвязанныйиспользовать Облачная платформа Microsoft Azureтренироваться Обнаружение объекты из Подробности:.

Внизодин Фестиваль Воляподробныйпредставлятьтренироваться Обнаружение объекты из различных процессов.

Создайте Azure Аккаунт и настройки Custom Vision

существовать本Фестивальсередина,нас Волянастраиватьодининдивидуальный Azure счетиодининдивидуальный Azure Custom Vision платформа. Следующие шаги помогут вам настроить Azure Аккаунт и регистрация Custom Vision платформа. Как игла, да GCP Описан этот процесс верно Ваный Облачная платформа Вседа Взаимно同из-настраивать帐одининформацияинастраивать项глаз-нравитьсяк Вниз Экранбыстрый В соответствии с Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-RvNSTbT4-1681784662646) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/18daf432-57e5-48ea-9197-7a17a673a4b8.png)]

настраиватьтренироватьсяиз具телошагнравиться Вниз:

  1. 注册одининдивидуальный Microsoft Аккаунт и настройки帐одининформация。 Существовала на момент написания Microsoft Воля Бесплатно для региона США Доступно для новых пользователей 200 долларов США из бонуса (см. информацию о вашем существовании).
  2. настраиватьподписка。 существовать“подписка”Параметры Картасередина,один击“добавить в”,Затемдлятыизподписка命имяинастраивать帐одининформация。
  3. настраивать项глаз,Затем выбирайте и создайте проекты,И для своего имени.
  4. настраивать资источник,Затемот菜одинсерединавыбирать“资источник”Группа。
  5. выбирать“Обнаружение объектов», затем завершите операцию все Эти, затем используйте «Пользовательский Vision”создавать Обнаружение объектов。

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

Загрузите обучающие изображения и маркируйте их.

существовать本Фестивальсередина,нас Волятренироватьсяизображениеначальство传приезжать Azure Custom Vision платформа. В этическом порядке:

  1. Нажмите «добавить в изображение»,Затемдобавить ввсеtrainиvalidationизображение。
  2. добавить После них ваше изображение Воля показывает существование без опознавательных знаков.
  3. пожалуйста, обрати внимание,ты Воля无处начальство载существовать Первый前项глазсерединасоздаватьизотметка.xmlили.JSONдокумент,но не волнуйся,Azure Делает маркировку изображений очень простой.
  4. Сначала отметьте большую 10%(илибольшойо 20) из изображений. Вы заметите, что еще до этого ограничивающая рамка автоматически изменится на изображение приезжать, и вам придется изменить ее размер. Если вы не можете найти приезжатьверно слона, пожалуйста, добавьте в ограничительной рамке и напишите соответствующий класс. На следующем снимке экрана показаны параметры смарт-меток:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-OiDeXjPe-1681784662647) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/43aff5f4-c9b9-4b3a-84e5-21ad7115bd41.png)]

  1. После разметки изображений они воля перемещают отмеченную часть. существоватьотметка Понятно 10%(илибольшойо После 20) изображений, пожалуйста, верьте Эти изображение для быстрой скорости тренироваться. Когда тренироваться завершится, верните изображение без тегов, а затем используйте опцию умного ярлыка, чтобы пометить все изображения без тегов.
  2. Выполнив предыдущий шаг, вы заметите, что многие изображения с изображением приезжающих автоматически помечаются тегами. Если вы считаете, что метка для верна, примите изменения и отрегулируйте размер и положение ограничительной рамки. Если изображение имеет много отдельных категорий, а смарт-теги фиксируют только отдельные категории, пометьте остальные категории вручную. Используйте этот метод, чтобы отметить большие о 100 После 1 изображения можно начинать тренироваться (если изображений больше, быстро тренироваться, если максимальное количество изображений для 100, затем перейдите к расширенному тренировать), а затем используйте заново сгенерированную из Модель для тренирования других изображений.
  3. Продолжайте предыдущий процесс, пока все изображения не будут отмечены. Затем,начинатьтренироватьсяииспользоватьпередовойтренироваться Параметры。 Время в часах на настройку (от 1 часов), а затем соответствии нужно увеличить время. существоватьоблакоконецизтренироваться Нет常быстрый-существовать Нетприезжать 10 Вы можете получить его в течение нескольких минут 100 изображения.

После того, как тренироваться будет завершено, Вы Воля сможете просмотреть показатели успеваемости приезжать. Обратите внимание, что после указанного выше существования вы сможете просматривать этот контент. На следующем снимке экрана показана игла верно новая тренироваться Модельиз Точность, оставить отзыв mAP Аспекты и параметры производительности:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-BEWeFnji-1681784662647) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/08e3cdba-f27b-48a0-b2bc-a781720d41c9.png)]

пожалуйста, обрати внимание,С Моделью смотрите все больше и больше изображений приезжатьиз,начальствоодининдивидуальный Экранбыстрый В соответствии ссерединапоказыватьиз Precision Стоимость может быть уменьшена. поэтому,существовать 20 张изображениеначальстворазвиватьиз Модель Сравниватьсуществовать 100 张изображениеначальстворазвиватьиз Модельиметь Дажевысокийиз Точность。 этотдапотому чтодлясуществовать 20 张изображениеначальстворазвиватьиз Модельиметьсравниватьнемногоизтренироватьсяошибка,ноиметьсравниватьвысокийизтестошибка(существоватьtestизображениесередина,Не могущий识别Гамбургер-только识别картофель фри)。 mAP Да 11 индивидуальныйждать距отзыватьуровень(0,0.1,…,1)начальствоиз平все平все Точность。 mAP Изображение не влияет на значение. виз Влияние. Performance参числопоказыватьburgerиfriesизценить。

  1. сейчассуществовать,让насприносить回旧изvalidationизображениеи查смотретьрезультат. дляэтот,Пожалуйста, нажмите «Прогноз» вверху.,Затемвставлятьvalidationизображение。 это Волясуществоватьдобрый周围绘制одининдивидуальныйограничивающая рамка,нравиться Вниз Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-Eza1NNI8-1681784662647) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/f4081282-39a6-4a90-9178-05b09c7064ed.png)]

  1. Как показано на рисунке, предсказание да верно из. Далее мы будем Экспорт Модель. для Для этого нажмите «Экспортировать», как показано на скриншоте ниже. пожалуйста, обрати внимание,нравиться果один击TF,но Даыбирать Экспортдля TensorFlow Lite или TensorFlow。 такой же,нравиться果тыодин击iOS,но Даыбирать Экспортдля CoreML:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-liLKQpbF-1681784662647) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/1e616edb-4ec6-4f40-94ce-48dd5a30ed0e.png)]

На снимке экрана выше показаны различные варианты экспорта, доступные в TensorFlow Lite.

Крупномасштабная тренироваться упаковка

TensorFlow 有одининдивидуальныйимядляtf.distribute.Strategyиз API,Можетсуществоватьмногоиндивидуальный GPU Распределите обучение между ними. существоватьэтотиндивидуальныйстраницаначальствоподробныйпредставлять Понятно Иголкаверно Google Cloud избольшой规模тренироваться.

использоватьtf.distribute.Strategy API 涵盖Понятноиспользовать TensorFlow Выполните распределенное обучение. использоватьэтот API,Даспользоватьмногоиндивидуальный GPU или TPU распределение TensorFlow тренироваться. связанныйраспределенныйтренироватьсяизподробный Обзор(Сумка括Пример),пожалуйстадоступздесь

также Можетксуществоватьоблаковычислитьдвигательсерединанастраиватьраспределенныйтренироваться. для Понятнодавать возможностьэтот功能,пожалуйстасуществовать GCP включено в Cloud Shell。 существовать TensorFlow наборгруппасередина,настраиватьодининдивидуальныйхозяин Служитьустройствоимногоиндивидуальныйработаделать程序извиртуальная машина实пример,исуществовать Каждыйиндивидуальный Этивычислить机начальствоосуществлятьтренироватьсяделать业。 связанный Подробнее,ты Можеткизменятьприезжатьздесь

упаковка приложения

Упаковка приложения включает в себя Волякод.,TFRecordдокументи Модель.confgдокументначальство传приезжать GCP,Модельсуществоватьтренироватьсяпериод Можеткдоступ. существовать“существовать GCP серединатренироваться Обнаружение объектовустройство”изчастьсередина,наспроходитьиспользоватьgcloud打Сумкаотвечатьиспользоватьсуществовать GCP обучался следующим образом:

Язык кода:javascript
копировать
$ gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_tpu_main --runtime-version 1.15 --scale-tier BASIC_TPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --tpu_zone us-central1 --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config

пожалуйста, обрати внимание,существовать Переднийизтренироватьсясередина,насиспользовать Понятноgcloud ml-engine,это Можетк让тыуправлять AI Работа на платформе и Модель обучения。 возвращаться有另одининдивидуальныйимядляgcloud ai-platformизплатформа,Также может использоваться для упаковки ваших приложений.,нравиться Вниз Место示:

Язык кода:javascript
копировать
gcloud ai-platform jobs submit training $JOB_NAME \
   --staging-bucket $PACKAGE_STAGING_PATH \
   --job-dir $JOB_DIR  \
   --package-path $TRAINER_PACKAGE_PATH \
   --module-name $MAIN_TRAINER_MODULE \
   --region $REGION \
   -- \

   --user_first_arg=first_arg_value \
   --user_second_arg=second_arg_value

Переднийизкодизобъяснятьнравиться Вниз:

  • --staging-bucket:этотда暂житьtrainingСумкаизоблакохранилищепуть
  • --job-dir:этотдавыходдокумент Расположениеизоблакохранилищепуть
  • --package-path:этот指Конечноотвечатьиспользоватьглаз录изместныйпуть
  • --module-name:этот指Конечноотвечатьиспользовать模кусокизимясказать
  • --job-dirлоготип:этотдаделать业глаз录

Идея на основеCloud изVisual Search изобщий

существовать “Нет. 6 Глава", "Использовать трансферное обучение из визуального поиска"середина, мы научились существовать изначально PC Выполните визуальный поиск вкл. Метод использоватьпроходить нейронной сети (например VGG16 или ResNet) передает изображение и проводит удаление последнего отдельного полносвязного слоя, а затем Воля его иданные библиотеки середина Сравните другие изображения известной категории «Сравнивать» с «Воля» и ее «Конвертировать для вектора изображения», чтобы найти жилье, ближайшее к соседям. соответствует, а затем отображает результаты.

существовать Примерсередина,насот 200 изображение запускается, но да, если количество изображений достигнет, приехать 100 Тысячи фотографий и результаты должны быть доступны на странице, тогда существование локального хранилища изображений Воля бессмысленно. существовать Эти Состояние Вниз,облакохранилищедабольшинство佳из。 В этом случае мы можем Воля векторное хранилище изображений вместо да Воля хранилище изображенийсуществовать облачный середин а, то когда пользователь загружает изображение, изображение Воля Конвертироватьдля вектора и Воля отправляется в приезжающее облако середина для обработки. существоватьоблакосередина,насосуществлять K Выполните поиск поблизости, чтобы найти место проживания и отобразить наиболее близкие к из. использовать REST API илиТранспорт телеметрии очереди сообщенийMQTT)Служить Воляизображениевекторначальство传приезжатьоблакосередина。 Каждыйиндивидуальный Служить Все有Собственныйизбезопасностьпроверять。

В настоящее время мы обсуждаем отправку изображения Воля в облачный сервис и получение сообщения в формате JSON из базовой инфраструктуры кодирования:

  • Инфраструктура клиентских запросов:к Внизкодописывать Понятнокак Воляизображение URL делатьдля POST Запрос на отправку приезжать за границу Web сервер. Здесь,api_hostда Web Адрес сервера. headersдокументдадействовать参число,существоватьэтот种Состояние Вниздляизображение。 image_urlдадействительныйизизображение Расположение:
Язык кода:javascript
копировать
api_host = 'https://…/'
headers = {'Content-Type' : 'image/jpeg'}
image_url = 'http://image.url.com/sample.jpeg'
img_file = urllib2.urlopen(image_url)
response = requests.post(api_host, data=img_file.read(), 
headers=headers, verify=False)
print(json.loads(response.text))
  • Инфраструктура запросов на стороне сервера:к Внизкодописывать Понятно典型из Служитьустройствоконецкод. данные Библиотечная сторонаиз Служитьустройство Воляиспользоватьrequest.files.getметодпожалуйста求изображение(картина片),и且picture.saveИспользуйте В保житьизображение:
Язык кода:javascript
копировать
@app.route('/', methods=['POST'])
def index():
 picture = request.files.get('file')
 picture.save('path/to/save')
 return 'ok', 200

Предыдущий исходный код архитектуры показывает REST API Метод отправки и получения изображений из облака. Основы. GCP,AWS и Azure иметь适когдаиз API, который может выполнять визуальный поиск, распознавание лиц и многие другие задачи. существуют В следующем разделе середина, Воляверно это описано подробно. Каждыйиндивидуальный Облачная У каждого свой способ отправки изображений в облако, который может отличаться друг от друга, но основные принципы такие же, как и предыдущий. же. Облачная веб-страница будет JSON Формат Включатьиметь Может视搜索результатизизображениеинформация,Долженизображениеинформация Даспользоватьоблако Служитьустройство URL и Метод аутентификацииот локальный PC доступ.

анализировать Различный Облачная платформасерединаиз изображения и механизм поиска

существовать本Фестивальсередина,Мы хотим обсудить и использовать три разные облачные платформы (GCP,AWS и Azure) из задач визуального поиска. насужесуществовать“Нет. 6 Глава", "использовать Трансферное обучение для визуального поиска"середина, на чьей середине мы научились векторному изображению Воля. PC Каталог серединаиз Множество изображений для сравнения по Сравнить, чтобы найти на на основе евклидова расстояния из ближайшего из совпадений. существовать本частьсередина,ты Воляизучать习какиспользовать REST API от PC Загрузите изображение, приехав в облако, облачная поисковая система Воля ищет ближайшее изображение, и Воля отображает его. Поэтому вся тяжелая работа Воля Зависит от облачного движка до завершения.

пожалуйста, обрати внимание,существовать本Фестивальсередина,представлять Понятновизуальный поискиз Базовый概念。 Содержание может быть более подробным, и вы можете GCP,AWS или Azure получить облако API и вставьте его, используя Python,Написание приложения на C++ или JavaScript из приложения середина,вызвать облачный движок и выполнить поиск.

использовать GCP из визуального поиска

GCP иметь видение API, может выполняться на основе Cloud из информации об изображении, включая анализ лица. Обнаружение и анализ содержимого изображения. связанный Дажемного Подробности,пожалуйстадоступздесь。 существоватьк Вниз Экран截картина Посмотреть для загрузки на диваниз результатов примера; Обнаружение вместе с примерами визуально похожих изображений индивидуально:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-iR4weSm3-1681784662647) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/5b0384ab-24ec-41f1-acbc-c5dc5d54730d.png)]

тольконравитьсянассуществовать“Нет. 6 Глава "Использовать трансферное обучение для визуального поиска", действительно визуально похожие из изображений, должны искаться внутри существующего класса изображений. Если изображение взято не из Интернета, скорее всего, это будут похожие визуальные изображения в разных категориях, как показано на примере дивана здесь. нода,Если изображение даот доступно в Интернете из,Тогда совпадение да точно изили очень близко к из.

существоватьначальствоодин Фестивальсередина,Мы научились использовать GCP руководитьтренироваться. AutoML Vision да Еще один способ легко выполнить эту задачу. связанныйподробныйиз分步иллюстрировать,пожалуйстаизменятьприезжатьздесь

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

Когда вы пытаетесь использовать Python ступня本серединаиз API час,ты Волянуждатьсяк Внизсодержание:

  • одининдивидуальный Google Cloud счет,Используйте Внастраивать项глазидавать возможностьвыставление счетов。
  • Включите API поиска продуктов Cloud Vision.
  • Google Применить учетные данные - ключдокумент.
  • Выберите индивидуальную учетную запись службы и создайте ее, чтобы воля ключа скачатьприезжать на ваш компьютер.
  • проходить Экспортк Внизтрииндивидуальный项глазсуществовать Терминалсередина Установить переменные среды:
  • GOOGLE_APPLICATION_CREDENTIAL:PC серединаизкритический путь
  • PROJECT_ID
  • LOCATION_ID
  • создаватьrequest.json,Затемты Воляполучатьприезжатьодининдивидуальныйresponse.jsonдокумент.

использовать AWS извизуальный поиск

AWS 有许много Используйте Вкомпьютерное инструмент для визуализации. Чтосередина,дваиндивидуальныйхозяинхотетьработа具да Amazon Rekognition и AWS SageMaker。доступ AWS веб-сайт для получения дополнительных инструментов, соответствующих вашим потребностям. AWS Rekognition да Используйте Визображениеивидеоанализироватьизна основеоблакоизпрограммное обеспечение как услугаSaaS)платформа. Он имеет множество функций, таких как обнаружение и анализ лица, поиск лиц и проверка. также Признание знаменитостей. нравиться Google Cloud Vision API один样,Вы можете загружать изображения,Он может предоставить информацию об изображении и детали,нравиться Вниз Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-76CguLCo-1681784662648) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/f1ec323c-a06f-49f0-8be7-fd520d866ed4.png)]

существует Front из Скриншота середина, Правильное Обнаружение Диван а также разные из категорий также ограничивающая рамка и информация об изображении и соответствующие JSON。 Вы также можете загрузить изображение лица, которое может предоставить подробную информацию о выражении лица, возрасте и поле, а также такжедваиндивидуальный角度другойизлицода否род В同одининдивидуальныйлюди,нравиться Вниз Место示:

[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-Den1Kl8n-1681784662648) (https://gitcode.net/apachecn/a). pachecn-dl-zh/-/raw/master/docs/master-cv-tf-2x/img/e39e0b60-60d7-4f93-819b-290e1117ed5b.png)]

пожалуйста, обрати внимание,лицо识别система能够Обнаружениеприезжатьрод В同одининдивидуальныйлюдииздва张Лицо,С солнечными очками или без них,Все они сняты с разных ракурсов.

AWS Rekognition возвращаться Даспользоватьbotoанализироватьместный PC начальствоизизображение,нравитьсяздесьМесто述。

представил во время обучения AWS SageMaker。 проходить Воляизображение Конвертироватьдлявектор,этотакже Можетк Используйте Восуществлятьвизуальный поиск。 связанныйподробный练习,пожалуйста参阅этотиндивидуальныйстраницасерединаописыватьиз Python блокнот.

пожалуйста, обрати внимание,осуществлятьэтотдействоватьизбольшинство佳методдаот AWS SageMaker Экземпляр блокнота выполняет эту операцию. Воля Этот файл (существовать указан по ссылке середина) загруженприезжать Jupyter Блокнот и выберите MXNet Python Сумка. Цитирую вас из S3 ведро и выполнить модуль. анализироватькоди Воля Чтоинассуществовать“Нет. 6 Глава", "Использовать трансферное обучение из визуального поиска" серединаизучатьприезжать из контента для сравнения С сравнения. ты Волясмотретьприезжать Базовый原理да Взаимно同из,Только даанализироватьсуществовать Облачная платформаначальство Заканчиватьиз,поэтомуэто Воляиметьсуществовать“Нет. 6 глава","использовать трансферное обучение из визуального поиска"середина Нет必иметь дело сизмногоиндивидуальный认证уровень。

использовать Azure извизуальный поиск

Azure да Microsoft изоблакомашинное обучениеплатформа,Используйте Встроить,управлятьиразвертыватьотвечатьиспользовать。 и GCP и AWS То же, Лазурное иметь множество функций, но мы вернокомпьютерное интерес к работе из функции да Azure AI и Azure машинное обучение。 существовать AI имашинное обучениесередина,икомпьютерное зрение Связанные из Приложения да Azure Bot Услуги, Azure Когнитивный поиск, Bing Поиск изображений, Bing Визуальный поиск икомпьютерное зрение。 Например,Если вы хотите выполнить визуальный поиск,пожалуйстаизменятьприезжатьздесь

существовать Azure Облачная платформасерединаруководить Может视搜索из Базовыйшагнравиться Вниз:

  1. получатьодининдивидуальный Azure Учетная запись и выберите Информация о ценах.
  2. Получите ключ подписки.
  3. выбирать PC начальствоtestизображениеизпуть。
  4. кrequest.postизформа发送搜索пожалуйста求:
Язык кода:javascript
копировать
response = requests.post(BASE_URI, headers=HEADERS, files=file)
response.raise_for_status()

существовать Переднийизкодсередина,raise_for_statusметодповерхность示нравиться果пожалуйста求Нетуспех,выдаст исключение,Например404 Client Error: NOT FOUND

Уведомление-Зависит от ВДля выставления счета необходимо предоставить данные кредитной карты, поэтому Облачная Использование платформы может стоить дорого. Помните о ключе да, даже если закончите работу и закроете ее ПК, если полностью не выключить Облачная платформасерединаиз项глаз,в противном случаеты Воляпродолжатьпроизводить费использовать。

Подвести итог

В этой главе середина вы узнали, как Воля данные изображения отправить прие зжать Облачную платформаруководитьанализировать。 Прежде чем существоватьиз главы середина, мы научились существовать родным PC На тренироваться, но дасуществовать в этой главе середина вы узнали, как использовать Облачную Платформа выполняет те же задачи, что и такжекакиспользовать Google Cloud Shell for distribution существоватьмногоиндивидуальный实примерсерединакуроктренироваться.

В этой главе включайте множество примеров и ссылок.,Просмотреть эти ссылку и попрактиковаться,ты Воляполучать Дажемного知识。 Потом мы научились отправлять изображения Воли в приезжать Облачная. платформаруководить实примеранализировать。 изображениесодержаниеанализироватьуже Расширятьприезжать Можетксуществовать Облачная Платформасередина выполняет визуальный поиск. Мы также научились использоватьвсе трииндивидуальный Облачный платформа-GCP,AWS и Azure. пожалуйста, запомни,Даже если ты не принял решение тренироваться,Также обязательно закройте проект после выполнения задачи.,Чтобы избежать ненужных расходов.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose