Нет. 3 Фестиваль:использовать TensorFlow изкомпьютерное зрениеизпередовойвыполнить
существовать本Фестивальсередина,Ты Воляна основанот Предыдущий раздел середина получить понимание и усовершенствовать обновить концепции и научиться использовать Распознавание действий и Обнаружение объектыиз Новые технологии. существовать本Фестивальсередина,ты Воляучиться по-другомуиз TensorFlow такие инструменты, как TensorFlow Hub,TFRecord и TensorBoard。 Вы также Воля научитесь использовать TensorFlow продлить с распознаванием действий В измашинное обучение Модель.
существуют До конца этого раздела,ты Воляспособен выполнить Вниздействовать:
В этот раздел входят следующие главы:
Распознавание действий дакомпьютерное Ключевая часть визуализации включает в себя определение положения рук, ног, головы и тела, обнаружение конкретных движений и волю его классификацию по известным категориям. Трудное существование В зрительном восприятии (например, тело грязное или одежда закрыта) из изменений, сходных по движениям, различных по категориям (например, питьевая вода илииспользовать хранение сотового). телефониззвон)а такжеполучатьпредставлятьсексизтренироватьсяданные。
本главаподробный Обзор ХОРОШОИспользуйте ВОценка позы Распознавание человеческих действий ключевыми методами. Распознавание действий Метод оценки позы Воли на основе Ускорение на основе распознавания активности такжена на основе видео и трех измерений облака точек распознавания движения. Теория Воляпрохожденияиспользовать TensorFlow 2.0 извыполнить пояснение, которое будет дополнено.
Эта глава разделена на четыре части. Тройка лидеров обсуждается индивидуально Воценка позы человекиз трех разных методов и Нет.четыре индивидуальных, каждый из которых предполагает распознавание действий:
Оценка позы человекадаглубокая нейронная сеть добилась больших успехов в другой индивидуальной области и быстро развивалась в последние годы. существоватьнаконец Несколькоглавасередина,насучитьсяприезжатьглубокая нейронная Сеть сочетает использование линейных (свертка) и нелинейных (ReLU) операций для прогнозирования выходных данных с учетом набора входных изображений. существует оценка позы в случае, когда предоставляется набор входных изображений, глубокая нейронная сеть прогнозирует совместные позиции. изображениесерединаизотметкаданныенабор Зависит отдельная композиция в ограничительной рамке,Долженограничивающая рамка确КонечноизображениесерединаизN
индивидуальныйлюдии КаждыйлюдиK
关Фестиваль。 По мере изменения позы направление сустава также будет меняться, поэтому следует наблюдать за положением сустава в фазе, чтобы охарактеризовать различные положения. существоватьк Внизкаждый Фестивальсередина,нас Воляописывать Даспользоватьиздругойоценка позыметод。
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», сеть была дополнительно улучшена.
Эта статьяиз Основные выводы заключаются в следующем.Вниз:
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)]
T[p]
предсказание числаЧастичные поля сходства(PAF) Количество итераций,и Нет.дваэтапнокT[c]
Количество итерацийпредсказывать Уверенностькартина. Зависит от Следующие два индивидуальных ключевых показателя, 2018 г. Предложено в году OpenPose Модельдаверно 2017 Предложено в году Первые дни Модельизобщийулучшение тела:3 x 3
Вместо этого свертка3 x 3
свертка。F
слитьсуществоватьодинрост,кдляизображениесерединаизвселюдипроизвести дваизмерение Ключевые моментыпредсказывать。 существуют оценки прогнозов, картографирование основных характеристик и PAF Функция потерь применяется между этапами и в конце. Повторите этот процесс несколько итераций, чтобы получить последнюю карту объектов проживания. PAF Обнаружение。1 x 1
и1 x 1
ядерныйкомпозиция。 Каждыйиндивидуальный1 x 1
ядерныйизвыходдасоединятьиз。существовать 2019 Год,Открытая поза изавтора Также Некоторые другие люди (Джинес Hidalgo,Yaadhav Raaj,Haroon Idrees,Donglai Xiang,Hanbyul Joo,Tomas Simon1 и Yaser Шейх) улучшилось OpenPose из Точность и Обнаружение времени. HTG0] Оценка позы всего тела по одной сети. ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Эта статья。
Основные функции заключаются в следующем:
CMU использовать OpenPose модель, в то время как OpenCV существовать Чтоновыйизглубокая нейронная сеть(DNN)рамкасерединанабор成Понятно经过предварительнотренироватьсяиз OpenPose Модель. Можно из следующего GitHub Страница загружает весь блок кода. Должен Модельиспользовать TensorFlow пример вместо OpenPose инициал автораиспользоватьиз Caffe Модель,Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。
Даспользоватьк Вниз Заказсуществовать Терминалсерединаосуществлять OpenCV из OpenPose Код:
python openpose.py --input image.jpg
начатьиспользовать PC иссеть веб-камеру,Толькосуществовать Терминалсерединатипк Внизсодержание:
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)]
После удаления фона алгоритм делает прогнозы очень хорошо.
让нас Приходитьсмотретьодин Внизкодиз Основные функции。 Мы определим ключевые моменты, а затем построим прогнозную модель:
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"] ]
net = cv.dnn.readNetFromTensorflow("graph_opt.pb")
использоватьtf-pose-estimation
существовать TensorFlow реализовано в OpenPose。 TensorFlow/model/graph
издействительный GitHub страница Можетсуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。 пожалуйста, обрати внимание,Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать MobileNetV1 из Описания.
cv.dnn.blobFromImage
верноизображениеруководитьпредварительноиметь дело с(осуществлять减法и Увеличить):net.setInput(cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (127.5, 127.5, 127.5), swapRB=True, crop=False))
out = net.forward()
предсказывать Модельизвыход,иполучать MobileNetV1 Перед выводом 19 индивидуальныйэлемент:out = out[:, :19, :, :] .
minMaxLoc
函число查попытаться найтиточкаценить,исуществовать Что Уверенностьвысокий Впорогдобавить вточка. Тепловая карта представлена цветом изданных карт: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)
cv.line
иcv.ellipse
показывать Ключевые моменты: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 x 2
слить Используйте Вверноизображениеруководить Внизвыборка。 После максимального пула каждого отдельного человека он будет добавлен в, затем существуем, повышаем выборку, приезжаем в исходный размер, а затем добавляем в Вернитесь в основной блок.1 x 1 Conv2D
композиция。2.5e-4
。 существовать 12 GB из NVIDIA Titan X GPU начальстворуководитьтренироватьсябольшойонуждаться 3 небо.Песочные часы Модельсуществовать MPII Набор человеческих жестов позволил достичь самых современных результатов во всех разделах, но это произошло за счет ресурсоемкой пропускной способности сети. Это да Зависит от ВКаждый Большое количество рядов слоев затрудняет тренироваться. Чжан Фэн, Чжу Сятянь и Mao существоватьвопросдля“быстрыйскоростьлюдиоценка позы тела”избумагасередина,Воля FastPose Дистилляция(FPD)представлять CVPR 2019。 По сравнению с моделью песочных часов, FPD Можно сделать вывод, что выборка является более быстрой и экономичной и з Модель, при этом достигая той же производительности из Модели, что и приезжать. Основные функции заключаются в следующем:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
Изображение вышеиспользоватьизкодкусокнравиться Вниз:
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 каналы:
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)
Описана сеть песочных часов. существовать本Фестивальсередина,нас Воляобъяснятьтренироватьсясетьпозадиизкод.
нравиться果ты想тренироваться Собственныйиз Песочные часысеть,пожалуйстав соответствии с В соответствии сэтотиндивидуальныйстраницаначальствоизиллюстрироватьруководитьдействовать。
Тренировочная сеть «песочные часы»изкоднравиться Вниз:
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
。 Как упоминалось ранее, код состоит из следующих компонентов.
к Внизкодописывать Понятно Интерфейсный модуль:
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)
。 Следующие несколько строк посвящены пакетной нормализации, узкому месту и максимальному пулу. Определим узкое место блока.
левая половинаизкоднравиться Вниз:
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)
。ловить Вниз Приходить,Вниз лапшаизкод итерации 0 приезжать 2. Создайте три блока фильтров для каждого разрешения фильтра:
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
кусоксоединять。 Используйте ВВолялевый侧кусоксоединятьприезжать右侧кусокизкоднравиться Вниз:
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
函число Волядва ВОЗВзаимно加。
右侧кусокизкоднравиться Вниз:
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 чтобы применить эту логику:
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)
Голова быстроизкоднравиться Вниз:
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 из Каждый индивидуальный диапазон, соответственно, должен быть в левом блоке и правом блоке:
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.
TensorFlow Опубликовано PoseNet Модель, Модель с Виспользовать браузер Обнаружение позы человека. это Можетк Используйте Водининдивидуальныйпозаимногоиндивидуальныйпоза。
PoseNet на основе Google издва篇бумага. один种использоватьподход сверху вниз и еще один использоватьподход снизу вверх。
Нет.один篇бумагаиз标вопросдля《существовать野外руководить精确измноголюдиоценка позы》,Зависит от George Papandreou,Tyler Zhu,Nori Kanazawa,Alexander Toshev,Jonathan Tompson,Chris Bregler и Kevin Murphy писать. ты МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжать Долженбумага.
Это что-то вроде Зависит отначальствои Внизиздваэтапметод:
x, y, w, h
)。 существовать“Нет. 5 Глава", "Нейронная сетевая архитектура и Модель" середина представила более быстрый вариант R-CNN и ResNet,носуществовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN руководить Обнаружение «объекты»середина Волясуществовать фактические ресурсысерединаиспользовать их. Эта классификация предназначена только для верных людей. настраиватьвсе返回извсеограничивающая рамка,使Чтоиметьзафиксированныйизвертикально и горизонтально Сравнивать,Затем Воля Что裁剪для353 x 257
。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 из Документация.
Далее мы проведем живую демонстрацию. этот实час Демодаиспользоватьсеть Камера Заканчиватьиз,Можеткпроходитьсуществоватьсеть Браузерсерединатипк Вниз链ловить Приходитьзапускать。
尽管сначальствои Внизиподход снизу вверхиспользовать 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)]
пожалуйста, обрати вниманиеограничивающая рамкаизбольшой小и Расположениесуществоватьдругойнаправление Кначальствокак变изменять。 Ключевые моментыхранилищесуществоватьвекторсередина。 Сгенерированные углы между ключевыми точками можно использовать для прогнозирования действий. начальствоодининдивидуальныйизображение Зависит индивидуальный состоит из различных движений – бокового движения, движения вверх и вниз. Эти动делатьиз关键角度Нет会перекрытие,поэтомупредсказывать Воляда Может靠из。
приезжатьглаз前дляконец,насужеизучать习Понятнокаксуществоватьданныйиз Ключевые моментыначальстворуководитьтренироватьсякгенерироватьлюдителопоза。 Процесс распознавания жестов аналогичен. Чтобы выполнить распознавание жестов для движений рук, выполните следующие действия:
Conv2D
слой,одининдивидуальныймаксимумслитьслойиодининдивидуальный ReLU слой.До сих пор мы научились развиваться с помощью нейронных сетей Втренироватьсяизмерение. насразвиватьизсетьтакже Можетк Используйте ВПроизводство。
加скорость度计测量加скорость度из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 развиватьмашинное обучение Модель. В этой книге середина обсуждается только без изображений из исходных данных. такжекак Воля Что传递приезжатьнервсетькразвивать Модельиотсерединаруководитьсделать выводизглава Фестиваль。
людидобрый活动识别с участиемна на основе акселерометра данные верно классифицируются различные виды деятельности. здесьиз Задача создания ассоциации между различными типами генерации движений человека из данных акселерометра и основаны на различных движениях и активности человека, чтобы различать схожие траектории акселерометра. Например, когда левая рука движется, а правая рука перемещает талию человека, может появиться что-то вроде акселерометра. Это избавляет от необходимости комбинировать акселерометр с видеоизображением для оценки позы. существовать本Фестивальсередина,нас Воляобсуждать Может Используйте Влюдидобрый活动识别издва种другойработа具。
Этот метод включает в себя следующие шаги:
tf.data.Dataset
нагрузкаданныекразвивать简один,высокий效изданныетрубопровод。 tensor_slices
Заказотвходитьсерединаизвлекатьодин片данные。flatten
и Softmax функция.Пожалуйста, смотрите ниже 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 вместо этого функция. На рисунке ниже показаносуществоватьтри种другой Состояние Вниз Модельиз Итерировать:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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 метод,имядля《Action4D:людигруппаивсякая всячинасерединаизсуществовать Проволока动делать识别》。Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Эта статьяиз Подробности.
Долженметодиспользовать 4D Олицетворяет наблюдение за человеческими существами, существованием в хаосе и скученностью среди окружающей среды, середина идентифицирует их из ряда вон. Эта статьяиз概念нравиться Вниз:
существовать本главасередина,Мы изучаем и калибруем три разных метода оценки позы - OpenPose,栈式Песочные часыи PostNet。 Мы научились использовать OpenCV и TensorFlow Прогнозирование ключевых моментов человека. Затем мы изучаем метод песочных часов с подробной теорией. TensorFlow выполнить. Мы покажем вам, как существование браузера середина оценивает позу человека, а Также Как использовать ключевую точку оценки веб-камеры в реальном времени. Тогда Воля Оценка позы человекаимодель распознавания действия, ссылка на демонстрацию, как использовать оба для повышения точности. на на основе ускорения изкод показывает, как использовать TensorFlow 2.0 нагрузкаданные,Модель обучения прогнозировать действия.
существовать Внизодинглавасередина,нас Воляизучать习каквыполнить R-CNN И Воляи другие CNN модель (например, ResNet,Inception и SSD) в сочетании с использованием для улучшения Обнаружения. объектыиз прогнозирования, точности и скорости.
существовать“Нет. 7 глава",“использовать YOLO руководить Обнаружение объектов”середина,насучиться Понятно YOLO Обнаружение объектов, а затем, существовавших в первых двух главах середина, мы изучали распознавание движения и исправление изображений. 本главапроходитьдляданныепроглотитьитренироватьсясборочная линияа также Модельразвиватьзаложить прочный фундаментиз База,логотип着конецприезжатьконец(E2E)Обнаружение объекты фреймизстарт. существоватьздесь,нас Воляидти глубжеучиться Различный Обнаружение объектов Модель,Например Р-CNN,Одиночный выстрел(SSD),на основеобластьиз全сверткасеть(R-FCN)и Mask R-CNN,ииспользовать Google Cloud и Google Colab С помощью тетрадей выполняются практические упражнения. Мы также Воля верно, как тренироваться в определении изображений с использованием TensorFlow Обнаружение объектов API развивать Обнаружение Объекты Модель выполняет подробные упражнения. Мы Волясуществовать заканчивается различными верными методами регистрации, такими как подробный обзор и использование. Google Colab Тетрадь для практических занятий.
Эта глава разделена на восемь подразделов:
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 индивидуальный锚точка框изиллюстрироватьнравиться Вниз:
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 индивидуальныймаска,Этимаска ссылка приехать якорь,нравиться Вниз Место述:
(116, 90)
,(156, 198)
,(373, 326)
(30, 61)
,(62, 45)
,(59, 119)
(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 из Основные функции Обзорнравиться Вниз:
conv4_3
,conv7
(fc7
),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|
Нетждать。 Верно Шесть индивидуальных коробок по умолчанию из Каждыйиндивидуальный Повторите это.human
иbus
композицияи且Всеиметьдругойиз Ширинавысокий Сравниватьи Сравниватьпример,но SSD Очевидно, что можно идентифицировать и то, и другое. Проблема возникает, когда существование двух индивидуальных категорий близко друг к другу, а вертикальное и горизонтальное сравнение одинаковы, мы волясуществовать смотрим за жильем.0.5
извсеограничивающая рамка。300x300
или512x512
изображениебольшой小,10^(-3)
изскорость обучениядля 40,000 次Итерировать,10^(-4)
к10^(-5)
изскорость обучениядлявпоследствиииз 10,000 次Итерировать,скорость распададля0.0005
и0.9
изимпульс。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 из Основные функциинравиться Вниз Место述:
1×1
сверткаслойкруководитьизмерениеуронить。k^2
Счеткартина,этоверноотвечать Вk^2(C + 1)
рядвыход,приносить有C
вернослондобрый别加начальствоназад景。k^2
Счеткартинасерединатолькоот Счеткартинасерединаизвлекатьответ.4k^2
сверткаслойначальствоиспользоватьсредний пул,отидля Каждыйиндивидуальныйсосредоточиться наобластьслойгенерировать4k^2
измерениевектор。 Приходитьс Каждыйиндивидуальныйk^2
слойиз4k^2
вектор被聚合для Четыреизмерениевектор,Долженвектор Воляограничивающая рамкаиз Расположениеи Несколько何形状поверхность征дляx
,y
,ширина и высота.0.0005
,импульсдля0.9
,Воляизображениенастраиватьвседлявысокий度для600
Пиксель,20,000 партияизскорость обучениядля0.001
и0.0001
10,000 индивидуальныйпартия。Можетксуществоватьздесьпопытаться найтиприезжать 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 начальствоиз TensorFlow Обнаружение объектов API Приходить Обнаружениевернослон。 Для этого вам необходимо иметь Gmail и Google Cloud счет. После отправки данных вашей кредитной карты, в соответствии сRegion изDifferent, Google Cloud Разрешения на доступ могут предоставляться бесплатно в течение ограниченного времени. Это разрешение на бесплатный доступ должно распространяться на упражнения, перечисленные здесь. Выполните следующие действиясуществовать Google Cloud Console серединасоздаватьвиртуальная машина(VM)Пример. нуждаться VM бежать TensorFlow Обнаружение объектов API и сделать вывод:
R-CNN-trainingpack
даяиз项глазизимясказать。 Название вашего проекта может отличаться.
n1-standard-8
(8vCPU,30 GB Память)。
staticip
),Затем нажмите «Сохранить».На следующем снимке экрана показано существование Облачная платформа 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)]
Затем,в соответствии с В соответствии ск Внизиллюстрироватьсуществоватьтестизображениеначальствосоздавать Обнаружение объектовсделать вывод:
username
,Воляпарольнастраиватьдляpassw0rd
; пожалуйста, запомни,это Нетдаo
ида0
,Вроде ноль.После правильного подтверждения вышеуказанных инструкций и загрузки изображения,ты Воляполучатьнравиться Вниз Место示из Выход:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
существоватьэтот Экран截картинасередина,Обнаружениеприезжать Понятно Гамбургер,Бокалы и столы для вина,но未Обнаружениеприезжать炸картофель фри。 существовать Внизодин Фестивальсередина,Мы, Воля, видим, что будет, приезжать,Затемнас Волятренироваться Собственныйизнервсеть Приходить Обнаружениеэтотдва ВОЗ。
существоватьэтот Примерсередина,нас Воляот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 Обнаружение объектов 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。 Взаимноотвечатьиз Конфигурациядокумент Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。
Набор данных какаоиметьк Вниздобрый别:
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 Некоторые примеры ошибок, возникающих при выполнении задания:
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
документВ этом разделе описывается, как обрабатывать изображения, чтобы они были одинакового размера. Шаги существования перечислены:
burger
иfrench fries
),Тогда изображение должно быть Включить большую треть из гамбургера.,1/3 картофеля фри,а Также Одна треть из двух смешана. Имейте только гамбургер с изображением и картофель фри с изображением, а не Включайте комбинацию изображений, которая не является хорошей.
.jpg
Формат。
416x416
изображениебольшой小。 существовать Linux середина,ты Даспользовать ImageMagick Пакетное изменение размера изображений.
file.jpg
-Воля Чтонастраиватьвседля416x416
изображениеразмерfile.jpg
。
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
Формат。 этот处описывать Понятносоздаватьотметкадокументизшаг:
labelImg
создаватьотметкадокумент. Этот шаг уже выполнен. 7 глава",“использовать YOLO из Обнаружение объектов»середина обсуждалось, но здесь повторяется. использовать Терминал Заказpip install labelImg
скачатьlabelImg
。labelImg
Прямо сейчас Может Открыть。.jpg
документ)иглаз标(.xml
документ)глаз录。в целом,Люди совершают ошибку, рисуя прямоугольник только на классе существования.,Затем跳过另одининдивидуальныйдобрый。 этот Воляпривести ксуществоватьрассуждениепроцесссерединатолько Обнаружениеприезжатьодининдивидуальныйдобрый别。
На этом снимке экрана показано, как мы можем отметить две категории на одном изображении:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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 Завершено:
train
иtest
。.jpg
и.xml
документкопироватьприезжатьлюбойдокумент夹середина。 поэтому,сейчассуществовать Должендокумент夹Воля Включатьназадверноназад.jpg
и.xml
документ..jpg
и Взаимноотвечатьиз.xml
документ)копироватьприезжатьtrain
документ夹середина。 поэтому,После выполнения этого упражнения,train
документ夹середина Воля有большойо 140 индивидуальныйдокумент(70 индивидуальный.jpg
документи 70 индивидуальный.xml
документ)。test
документ夹середина。train
иtest
документ夹Всеначальство传приезжатьdata
Внизиз Google Водить машину.val
изпроверятьдокумент夹,А Волявсе серединаиз вставьте несколько изображений в свой середина.пожалуйста, обрати внимание,существоватьэтот Примерсередина,существоватьtrain
иtest
документ夹междуиспользовать Понятно 70/30 Из примера сравнения, но обычно числовой диапазон можно 90/10 приезжать 70/30。
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)]
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)]
Как показано на изображении выше, структура каталогов должна быть запущена, как описано здесь:
images
документ夹,нуждаться предоставляет все данные изображений. Пожалуйста, не забудьте назвать имя перед картинкой середина Обзориз,и Воля.jpg
документи.xml
документначальство传приезжать Взаимноотвечатьизглаз录,Как показано на картинке выше.Зависит из-за ограничения по размеру, мы не можем Воля изображение Загрузка данныхприезжать GitHub сайт. поэтому,本частьсерединаиспользоватьизизображение Можеткотздесьиз Kaggle Изображения еды (с образцом Вбургера и картофеля фри) скачать. Звоните и загружайте.
annotations
давыходдокумент夹,должно быть пусто,и Волясуществовать Внизодинчастьсерединазаполнять。 Нетхотеть Воляannotations
документ夹иотметкаизображение混淆ксоздавать.xml
документ. все.xml
документ Все放существоватьimages
документ夹середина。Теперь, когда подготовка нашего существования из образа завершена, мы начинаем существование. Google Colab Кодирование в блокноте. Нет. Конфигурация параметров в один шаг и получение пакета, необходимого для работы тренироваться, который включает в себя типы моделей, параметры тренирования и многое другое. Для этого выполните следующие действия:
Chapter10_Tensorflow-Training_a_Object_Detector_GoogleColab.ipynb
Python Сохранить файлприжатьез Google Гони тогда Воляитсдля Colab блокнот Открыть。Configure
参число,Затемпроходитьв соответствии сShift + Enter
Установить Место需из Сумка.config
参числосоздаватьтест Модель,этотданачинатьстроитьданныеи Подготовитьруководитьтест Доиз Первый决состояние: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)
Это очень важный шаг,нас许многолюдидляэтот奋斗。 пожалуйстав соответствии с В соответствии ск ВнизшагсоздаватьтыизtfRecord
документ. ты必须существоватьначальствоодин步середина Установитьвсенеобходимыйиз Сумка,Затемталантпродолжатьосуществлятьэтотшаг:
Chapter10_R-CNN
документ夹Вниз,data
Вниз有дваиндивидуальныйдокументимядляxml_to_csv.py
игенерироватьtfrecord.py
。 Эти файлы следует копироватьприезжать с локального диска. Google Водить машину.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 Запустите его.Chapter10_R-CNN
документ夹链ловитьприезжатьтыиз Colab блокнот. этотдапроходитьиспользоватьк Вниз Завершение команды из:from google.colab import drive
drive.mount('/content/drive')
Chapter10_R-CNN
глаз录:%cd /content/drive/My Drive/Chapter10_R-CNN
tfRecord
документ..xml
документотtrain
данные Конвертироватьдляdata/annotations
документ夹серединаизtrain_labels.csv
документ:!python xml_to_csv.py -i data/images/train -o data/annotations/train_labels.csv -l data/annotations
.xml
документотtest
данные Конвертироватьдляdata/annotations
документ夹серединаизtest_labels.csv
документ:!python xml_to_csv.py -i data/images/test -o data/annotations/test_labels.csv
train_labels.csv
генерироватьtrain.record
документ,отtrain
документ夹генерироватьизображениеjpg
документ. этовозвращаться会генерироватьlable_map.pbtxt
документ:!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
test_labels.csv
генерироватьtest.record
документ,отtest
документ夹генерироватьизображениеjpg
документ. этовозвращаться会генерироватьlable_map.pbtxt
документ:!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
tfRecord
документ. пожалуйста, обрати внимание,Расширятьимя МожеткдаtfRecord
илиrecord
:/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 из двух вариантов). Вы можете указать размер партии для начала и Оптимизация существования. моделипериодв соответствии снуждаться вносить коррективы:
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 добавить вприезжать Модельтренироватьсясередина。 исследовать GitHub страницаначальствопоставлятьизкодкполучать确切Расположение:
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 картина:
%tensorboard --logdir logs/fit
本Фестивальпредставлятькаксуществовать Google Colab беги дальше TensorBoard。 Это включает в себя следующие шаги:
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
LOG_DIR = model_dir
get_ipython().system_raw(
'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &
.format(LOG_DIR))
ngrok
киспользоватьпорт6006
запускать TensorBoard,Долженпортда Используйте Вкоммуникацияиобменданныеиз迁移коммуникация协议:get_ipython().system_raw('./ngrok http 6006 &')
! curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
После выполнения вышеуказанных шагов,насуже Подготовить好руководитьбольшинство重хотетьизшаг-тренироватьсясопределениенервсеть。
Модель обучениядапроходитьк Внизпятьиндивидуальныйшагосуществлятьиз,Этишагтакжесуществоватькодсередина Обзор:
STDERR
документиз Расположение。!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 Просматривайте сообщения в записной книжке. существоватьнекоторый Сумканачальствоизнекоторый警告被弃использоватьпосле,Вы начали видеть шаги «приехатьсвязанныйтренироваться» из аннотации и успешно открыли динамическую библиотеку:
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 Завершение команды из:
!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 Изображения поступают в нашу нейронную сеть, и она дает нам очень хорошие прогнозы. Это поднимает четыре вопроса:
burger
иfries
двадобрый,Таким образом, он может иметь форму другого гамбургера, похожую на изверно, как,Например, пончики. Чтобы решить эту проблему,наснуждатьсянагрузка Похоже на: Вburger
изизображениеи Воля Что分добрыйдля Нетburger
,Затемиспользовать Эти Что他изображениенабор Модель обучения。cheeseburger
делатьдляодиндобрый,поэтомувернонемного В 100 Переносное обучение хорошо работает с изображениями.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 выполнитьиз Подробностинравиться Вниз:
M x N
)маска。M x N
网格назад,Воля RoI Align Приложение ВРегиональная сеть предложенийизвыход,Затемсуществовать Каждыйиндивидуальныйкоробкасерединаотвечатьиспользовать2 x 2
коробкаи Четыреиндивидуальныйвыборкаточка ,использовать双Проволокасекс插ценитьвыбирать。 RoI Align Используйте ВВоляизвлекатьизособенностьивходитьверновместе。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)руководить实час。 отслеживатьвыполнитьиз Подробности Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。
существовать CVPR 2017 Вверх, Николай Wojke,Alex Bewley и Dietrich Paulus существоватьихизбумагасерединапредлагать Понятно DeepСОРТИРОВАТЬ отслеживание, название его статьи - «использовать индикатор глубокой корреляции из простой линии существования и наблюдения в реальном времени». Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать Долженбумагаиз Подробности.
DeepSORT да SORT изExtended и использовать переданные тренироваться, чтобы различать пешеходов из CNN Воля информации о внешнем виде интегрирована в ограничительную рамку середина. отслеживатьвыполнитьиз Подробности Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжать。
Должен Архитектураиз细Фестиваль Обзорнравиться Вниз:
(u, v, γ, h, x, y, γ, h)
начальствоопределениеиз,Чтосередина(u, v)
даограничивающая рамкасередина Сердце Расположение,γ
дадлина и ширина Сравнивать,h
давысокий度。k
,существует период прогнозирования фильтра Калмана верно количество кадров, которые необходимо подсчитать и увеличить,исуществовать Обнаружение объектовпериод Воля Что重置для0
。 Удалите первые три отдельных кадра, которые превышают пороговое значение или Обнаружение, не имеющее отношения к трекам.OpenCV имеет множество встроенных методов отслеживания:
OpenCV серединаначальство述методизвыполнитьнравиться Вниз:
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)
отслеживатьначинатьнравиться Вниз:
Исходное положение изображения = Первый前изглаз标Расположение
Смещение = шагать, умноженное на максимальное количество очков в фазе. Верно Всесредина Сердцеиз позиции
новое место = исходное положение + Смещение
поэтому,прямоугольникограничивающая рамка Используйте Висходныйизменятьглаз标。 существовать Каждыйиндивидуальныйназад续рамка,используйте отслеживание, чтобы оценить его местоположение.
существовать CVPR 2019 Вверху: Ван Цян, Чжан Ли, Лука Бертинетто, Ху Вэймин Phillip H.S.Torr существоватьихизбумага《быстрыйскоростьсуществовать Проволокавернослонотслеживатьисегментация:统одинметод》серединапредлагать Понятно SiamMask。 связанный Эта статьяиз Дажемного Подробности,Видетьздесь。
SiamMask использует одиночную индивидуальную ограничивающую рамку исходный и Каждую секунду регистрирует как ограничивающую рамку со скоростью 55 кадров.
существоватьэтот,Воля Сиамскийсетьиз简один互Связанныйзаменятьдляглубина Связанный,Чтобы сгенерировать несколько рядов ответов, изображение:
1 x 1
сверточная нейронная сетьhf
дизайнw x h
два元маска(Каждыйиндивидуальныйкарта объектоводининдивидуальный)。 Нет.Один слойиметь 256 индивидуальныйряд,Нет.Второй этажиметь1 x 1
ряд。1 x 1
сверткаслой结束。 Обратите внимание, что ResNet-50 иметь четыре индивидуальных этапа, но учитывались только первые три индивидуальных этапа, и верношагать 1 из Конволюция была изменена, чтобы уменьшить количество выходных данных Воли шагать за счет приезжать 8。1 x 1
свертка。Можетсуществоватьздесь Искать наприезжатьсвязанный SiamMask выполнитьа такжетренироватьсяиз Подробнее. SiamMask также Можетксуществоватьэтотиндивидуальныйстраницаначальствоиспользовать。 Обратите внимание: для успешной работы видеофайл должен начинаться с портрета.
существовать本главасередина,ты Воляотголоваприезжать尾全лапшаучиться Различный Обнаружение объектовустройствометода такжеиспользовать Собственныйизсопределениеизображениетренироваться Обнаружение объекты из практических методов. Некоторые ключевые концепции для изучения возможности трудоустройства включают в себя: как и Google Cloud Вместеиспользуйте для оценки Обнаружение объектовустройство,какиспользоватьlabelImg
создаватьотметкадокумент,как Воля Google Drive 链ловитьприезжать Google Colab Блокнот для чтения файлов, как создать TensorFlow .xml
и.jpg
документсерединаизtfRecord
документ,Как начать процесс тренироваться существовать и процесс тренироваться середина мониторит показания,Как использовать TensorBoard для наблюдения за точностью тренироваться,каксуществоватьтренироватьсяназад保жить Модельа Также Как сохранить из Модель для вывода. использоватьэтот种метод,ты Даыбиратьвернослондобрыйисоздавать Используйте Врассуждениеиз Обнаружение объектов Модель. Вы также изучили различные методы надежного контроля, такие как Kalman Фильтрация на основеNeural Networkизотслеживать, например DeepSORT ина на основе сиамской сети изверно похоже на метод отслеживания. Следующим шагом вы можете Воля Обнаружение объектов Модельсоединятьприезжатьотслеживатьметодкотслеживать Обнаружениеприезжатьизвернослон。
существовать Внизодинглавасередина,нас Воляпроходитьсуществоватьпериферийное устройство(Напримерсотовый телефон) середина оптимизация и развертывание нейронной сети Модель для изучения границ компьютерное зрение。 Еще мы Воля научимся пользоваться Raspberry Pi Сделать в режиме реального времени объектов。
существовать本частьсередина,ты Воляиспользоватьприезжатьглаз前дляконецполучатьизвсекомпьютерное зрениеи CNN Знания, существование упаковки, оптимизации и развертывания периферийных устройств Середина Модель для решения реальной жизни середина компьютерное вопрос зрения. существуют Местные вычислить На борту тренироваться Сбор больших данных требует времени, потому что Здесь вы узнаете, как упаковать данные, загрузить контейнер облачного серединаиз и начать тренироваться. Вы также увидите, как приезжать преодолевает некоторые распространенные ошибки, чтобы завершить тренироваться и успешно сгенерировать Модель.
существуют До конца этого раздела,ты Воляспособен выполнить Вниздействовать:
В этот раздел входят следующие главы:
приезжатьглаз前дляконец,Мы научились предварительно обрабатывать данные,Модель обученияа такжеиспользовать Python PC Генерация среды приводит к развитию модели глубокого обучения.
В этой главе середина мы, Воля, узнаем, как принять сборку из Модели и Воля развернуть ее на периферийных устройствах и в производственных системах. Эта Воля приводит к полному изконцу приезжатьконец TensorFlow Обнаружение объектов Модельвыполнить. В этой главе Воля обсуждаются многие периферийные устройства, их номинальная производительность и технологии ускорения.
Специальный да,использовать TensorFlow Lite и Intel открыть视觉сделать выводинервсеть优изменять(VINO)Архитектура,и развернуть приезжать Raspberry Pi,Android и iPhone。 Хотя эта глава в первую очередь посвящена Raspberry Pi,Android и iPhone начальствоиз Обнаружения объектов,Но наше введение в метод Воли может расширить классификацию изображений.,Миграция стилей рассматривается с любого периферийного устройства при распознавании действий.
Эта глава разделена на следующие разделы:
Верно Ввычислить машину, позволяющую просматривать вещи и измерять параметры конечного оборудования. существуют средства глубокого обучения на периферийных устройствах воля AI Внедрить периферийное устройство середина, чтобы визуальное устройство также могло анализировать изображения и сообщать об их содержимом. Используйте Вкомпьютерное устройство для просмотра краев, например, камера. Периферийные вычисления делают локальное распознавание изображений быстрым и эффективным. Внутри камеры AI компоненты Зависит состоит из мощного микропроцессора, обладающего возможностями глубокого обучения.
В зависимости от аппаратной и программной платформы Edge AI может выполнять три независимые комбинации функций:
Преимущество этого в том, что это увеличивает скорость,уменьшенная пропускная способность,Увеличивать Понятноданные保密сексисеть Может伸缩секс。 В эту камеру дапроходитьсуществовать встроен индивидуальный контроллер, обеспечивающий камере необходимую вычислительную мощность для завершения работы.
Edge вычислить означает воля рабочей нагрузки от облачной передачи приехать на устройство. Это эффективное периферийное устройство, которое оптимизирует программное обеспечение для выполнения задач без заметных задержек. Кроме того, эффективный изданный транспортный протокол в Воля собирает изданные, отправляет приезжающее облачное середина для обработки, а затем воля выводит обратную связь о прибытии периферийных устройств для принятия решений в режиме реального времени. Выбор подходящего периферийного устройства зависит от требований вашего приложения и того, как оно взаимодействует с остальными подсистемами. периферийное устройствоизодин些示Например Вниз:
Внизповерхность Подвести Характеристики производительности различных периферийных устройств перечислены выше. ты Даспользоватьэтотповерхность Приходить确Конечновыбиратьпроцесс:
устройство | 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 Память |
середина ЦП(CPU)хозяинхотетьосуществлять串ХОРОШОиметь дело с,играфический процессор(GPU)и ХОРОШО运ХОРОШО进程и且Можеткодин次осуществлятьбольшой量действовать,оти加быстрый Понятноиметь дело сскорость度。 GPU серединаизданныесказатьдля Проволока程。 использоватьВычислить унифицированную архитектуру устройств(CUDA)иоткрытый компьютерный язык(OpenCL)верно GPU программировать. CPU Выполните множество различных видов извычислить, при этом GPU Специализируйтесь на обработке определенного извычислить, например на обработке изображений. для Чтобы периферийные устройства обеспечивали результаты без задержек, они должны сопровождаться ускорителем, графическими процессорами. Оптимизация программного обеспечения.
к Вниздаодин些в целом Используйте В 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)]
существовать Изображение вышесередина,мы можем посмотреть приезжатьк Внизсодержание:
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 «нужен» Python серединаизкаждыйиндивидуальныйкодчасть。
Мы можем воля настроить камеру для видеоплеера. существовать Raspberry Pi Терминал серединаиспользует следующие команды. Эта команда Воля выполняет необходимые обновления пакета и запускает новый Raspbian Установить:
$sudo apt update
$sudo apt full-upgrade
$sudo raspi-config
После ввода последней индивидуальной команды Raspberry Pi Появятся некоторые диалоговые окна. Выберите «Необходимо» из опции интерфейса, выберите индивидуальную камеру и нажмите «да» да «Нет», чтобы дать. Возможность интерфейса камеры? Затем перезапустите Raspberry Pi,исуществоватьзапускатьназадсуществовать Терминалсерединавходитьк Вниз Заказ:
$raspivid -o video.h264 -t 10000
ты会Уведомлениеприезжатьвидео录制Понятно 10 秒钟икvideo.h264
Формат保жить。 Нет.Сделав это один раз, вы обнаружите, что камера не в фокусе. настраиватьвсе Взаимно机начальствоизкруглая шляпа(Выбирать Вниз盖ребенокназад),прямойприезжать Чтоверно Точная фокусировкаточка.
приезжать На этом заканчивается настройка программного обеспечения камеры. Если вам нужна дополнительная информация об этой процедуре, пожалуйста, обратитесь кздесь。
связанный Подробнее,пожалуйстаизменятьприезжатьздесь。
Установив процесс середина, я обнаружил, что мне приходится перемещаться между отдельными существующими страницами, чтобы правильно решать все проблемы. Ниже даверно у меня есть полезные пошаговые инструкции. Добро пожаловать Используйте Официальный веб-сайтилииз Здесь приведены инструкции, чтобы все работало правильно:
к Вниз Каждыйодин ХОРОШОВседаодин独изинструкция。 этот意味着хотетьвходитьодининдивидуальный Заказ,пожалуйстав соответствии сEnter
иждать待Чтопоказыватьсуществоватьконсольсередина,указывает на завершение,Затем再входить Внизодининдивидуальный Заказ。
$sudo su
$apt update && apt upgrade –y
$apt install build-essential
$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
bootstrap
:$./bootstrap
$make –j4
$make install
$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。
$python3
>>> import cv2
>>> cv2.__version__
Это должно отобразить последнюю версию установки OpenCV в вашей системе.
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,пожалуйстаиспользоватьк Вниз Заказ:
$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.,пожалуйстаизменятьприезжатьздесь。
Следующие шаги перечислены для справки:
sudo su
,Затемв соответствии сEnter
。
R3 l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz
。 пожалуйста, обрати внимание,p_
иbefore.tgz
послеизчисло字существовать Воля Приходитьиз Версиясередина Может能会Даже改。
$sudo mkdir -p /opt/intel/openvino
$sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.3.334.tgz --
$strip 1 -C /opt/intel/openvino
sudo apt install cmake
проходить Установить переменные среды, Каждый раз при запуске терминала, OpenVINO будет инициализирован. Это избавит вас от необходимости каждый раз запоминать командную строку.
ты Можетксуществоватьк Внизшагизпомощь Внизместный Установить переменные средыилиобщая ситуация Установить переменные среды:
$source /opt/intel/openvino/bin/setupvars.sh
$echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
[setupvars.sh] OpenVINO environment initialized
Pi$raspberripi: $
Type sudo su and you should get
root@raspberripi:
нуждаться USB правилоталантсуществовать Intel Movidius Вывод на нейронном компьютере. В этическом порядке:
$sudo usermod -a -G users "$(whoami)"
sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
После завершения процесса все Установить,Внизодининдивидуальный Задачадаиспользоватьпроходить Взаимно机模кусоксоединятьприезжать Raspberry Pi из Intel Movidius Нейронные вычисления нужны для рассуждений. Здесь из модуля камеры дано периферийное устройство с Intel Movidius нерввычислить Большойиз Raspberry Pi дапроцессорный блок.
Обратите внимание, что малина Pi Сама нейронная сеть не может выполнить логический вывод, поскольку скорость обработки очень низкая. использовать Интел OpenVINO Нервно вычислив стержень, вы увидите, что приехать очень мало из-за задержки. делатьдля Сравниватьсравнивать,Пожалуйста, обратитесь к“использовать TensorFlow Lite существовать Raspberry Pi начальстворуководить Обнаружение объектов”,Чтосерединаиспользовать tflite существовать Нетпалка нейронной сетьизкейс Воля TensorFlow Модельразвертыватьприезжать Raspberry Pi。 ты会Уведомлениеприезжать,существоватьэтот种Состояние Вниз,Задержка очень большая.
Давайте посмотрим на следующую команду:
$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
документсерединапоставлятьиз Пример Код выглядит следующим образом:
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)]
к Внизкод Обзор Понятно前дваиндивидуальныйповерхностьизхозяинхотетькомпозициячасть; Прямо сейчас,Используйте Влицо Обнаружение,людивещь Обнаружение,машина Обнаружениеиориентир Обнаружение。 Давайте посмотрим:
cvNet = cv2.dnn.readNet('face-detection-adas-0001.xml', 'face-detection-adas-0001.bin')
cvNet.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
cvLmk = cv2.dnn.readNet('facial-landmarks-35-adas-0002.xml','facial-landmarks-35-adas-0002.bin')
cvLmk.setPreferableTarget(cv2.dnn.DNN_TARGET_MYRIAD)
ret, frame = cam.read()
rows = frame.shape[0]
cols = frame.shape[1]
blobFromImage
函числоотданныйбольшой小иглубинаизрамкасерединаизвлекатьодининдивидуальный Четыреизмерениеместоточка. Обратите внимание, что размеры больших двоичных объектов должны быть равны указанным в таблице выше и соответствовать указанным входным размерам. верно Влюди Лицо Обнаружение,местоточкавходитьбольшой小для(672, 384)
,поэтомуместоточкаповерхность达式писатьнравиться Вниз: cvNet.setInput(cv2.dnn.blobFromImage(frame, size=(672, 384), ddepth=cv2.CV_8U))
cvOut = cvNet.forward()
верно Вориентир Обнаружение,местоточкавходитьбольшой小для(60, 60)
,поэтомуместоточкаповерхность达Можеткповерхность示для:
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
координироватьнравиться Вниз:x = xmin + landmark output (i) * (xmax-xmin)
y = ymin + landmark output (i) * (ymax-ymin)
сейчассуществовать,нас Даспользоватьcv2.circle
绘制круглый。 Ниже изкод Подвести Итог имеет этот принцип: существование его середина рисует лицевые знаки. пожалуйста, обрати вниманиенас Переднийобсуждатьиздваиндивидуальныйfor
заявление:
# 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 для Raspberry Pi Установитьизнабор инструментовисуществоватьобычно PC Есть разные способы добраться из Установить. Raspberry Pi из Установитьне включено Model Optimizer。 Зоопарк приложений нейронных вычислений(NCPAppZoo)даодининдивидуальныйоткрытьисточниккодхранилищебиблиотека. Давайте посмотрим, как использовать ncappzoo:
cd ~ git clone https://github.com/opencv/dldt.git dldt/model-optimizer pip3 install -r requirements_tf.txt
repo
:$git clone https://github.com/movidius/ncappzoo.git
/ncappzoo/apps/
,попытаться найтиприезжать Связанныйизapp
документ夹глаз录,Затемосуществлятьк Вниз Заказ:$make run
Это Воля Открытьодининдивидуальныйокно,Мы можем существовать в этом окне.
В этом разделе описывается Конвертировать из определения. TensorFlow Модельизшаг,это们использоватьнассуществовать“Нет. 6 Глава", "использовать трансферное обучение из визуального поиска"серединаразвиватьиз TensorFlow Keras вернослон分добрый Модель,илииспользовать TensorFlow Обнаружение объектов API,нравитьсянассуществоватьначальствоодинглавасередина Место Делатьиз Таким образом。 Если вы запланировали Модель из технологии середина с открытым исходным кодом Интел после предварительной оптимизации тренирования, то шаги Воля, описанные в предыдущем разделе середина, будут работать. В следующем разделе середина мы Воля опишем, как использовать два типа из TensorFlow Модельосуществлять Конвертировать。
В этом разделе описывается, как TensorFlow Модель Конвертироватьдля OpenVINO IR Формат。 связанный Дажемногоинформация,Пожалуйста, обратитесь кк Вниз链ловить。
Этишаг Можетк Подвести итогнравиться Вниз:
<INSTALL_DIR>/deployment_tools/model_optimizer/install_prerequisites directory and run: $install_prerequisites.sh
xml
документиbin
документ. Конвертироватьдапроходитьmo.py
работа具Заканчиватьиз,нравитьсяк Внизкод Место示: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 Обнаружение объектов API Модель развития, подробный процесс и наш предыдущий раздел «Введение в процесс» отличаются. Можетксуществоватьздесьсерединапопытаться найтиприезжать Дажемногоинформация。
насужезаморозить Понятноиспользовать TensorFlow Обнаружение объектов API существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”руководить Обнаружение объектовиз Модель. Для конвертации выполните следующие действия:
.pb
Расширятьимяиздокумент,дапроходитьиспользоватьсопределениеизображение Модель обучения(R-CNN,SSD или R-FCN) для генерации из. существоватьэтот Примерсередина,этодаfrozen_inference_graph_fasterRCNN.pb
。json
документ:этотда Взаимноотвечатьизjson
документ,Этот файл описывает замороженный граф TensorFlow для самостоятельного определения свойств.,узел,порт,Конечная точка иточка.faster_rcnn_inception_v2_pets.config.
После выполнения вышеуказанных шагов,существовать Терминалсерединаосуществлятьк Вниз Код:
$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 форум,чтобы увидеть ответы на похожие вопросы из,Вы также можете оставить свои вопросы。
Описанный ранее процесс вывода можно представить в виде блок-схемы:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
На рисунке выше показано, что процесс можно разделить на три ключевые части:
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 Структура глубокого обучения. и OpenVINO Аналогично, TensorFlow Lite иметь встроенный претренированный модуль глубокого обучения. или ВОЗ,Можетк Волясейчас有Модель Конвертироватьдля TensorFlow Lite Формат для вывода на устройстве. В настоящее время TensorFlow Lite иметь встроенную или внешнюю камеру из PC,Android Устройство, iOS Устройство, Малина Pi Крошечный микроконтроллер обеспечивает поддержку вывода. доступздесьучитьсясвязанный TensorFlow Lite из Подробности.
TensorFlow Lite Конвертер использует TensorFlow МодельигенерироватьFlatBuffer tflite
документ. FlatBuffer
Filedaefficiencyиз跨платформа库,Может Используйте Вдоступдва进制последовательностьизменятьданныеи无需解析。 Сериализация обычно представляет собой текстовую строку. Данные двоичной сериализации записываются как строка Формат двоичных данных. связанныйFlatBuffer
из Подробности,Пожалуйста, обратитесь кк Вниз链ловить。
TensorFlow выход Модель Можеткдак Вниздобрый型:
tf.saved_model
осуществлять Сохранить из Модель,выходдляsaved_model.pb
。 Это завершено TensorFlow Формат, который включает в себя изучение весов и графовых структур.tf.keras
Модель Формат:tf.kears
Модельдаtf.keras.model.compile
документ,нассуществовать“Нет. 4 Глава», «Глубокое обучение изображений» и «Нет. 6 Глава», «использовать трансферное обучение из визуального поиска».В этом разделе описывается, как TensorFlow Модель Конвертироватьдляtflite
Формат。 Если мы этого не сделаем, то мы развиваемся Модель может существовать на местном уровне. PC середина Используйте Врассуждение,Но приезжающие периферийные устройства не могут быть развернуты для вывода в реальном времени. Для этого преобразования будут описаны три метода:
tflite
Конвертироватьtflite
Конвертироватьиз Google Colabtoco
Зависит от Вэтотда Обнаружение объектов Конвертировать,поэтомунасиз Модельдав соответствии с TensorFlow Обнаружение объектов API развиваемся, поэтому мы Волясуществова Google Colab серединаиспользоватьtoco
метод。
Python API Чтобы мы могли легко использовать TensorFlow Lite преобразователь. существовать本Фестивальсередина,нас Воляописыватьиспользовать tflite Конвертироватьустройствоиз Python API。 связанный Дажемногоинформация,Пожалуйста, обратитесь кк Вниз链ловить。
в соответствии сиспользоватьиз Конвертировать, предлагаются три метода — Сохранить из Модель, Keras. Модельили Конкретная функция。 Следующий код показывает, как Python API настраиватьиспользоватьtf.lite.TFLiteConverter
Приходить Конвертироватьтрииндивидуальный Модель(保жить Модель,Keras Модельили Конкретная функция)серединаиз Каждыйиндивидуальный Модель:
$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
。
tflite_convert
существоватьк Внизкодсередина,насопределение Понятнозаморозить Модель.pb
документи Взаимноотвечатьизtflite
документиз Расположение。 Затем,нас Волятрииндивидуальный RGB осьиз Каждыйодининдивидуальныйизвходить彩色изображениеизбольшой小настраиватьвседля(300, 300)
,И Воля изображение Конвертировать для нормализованного тензора,Тогда Воля становится для Конвертировать входной массив. Имеется четыре выходных массива,это们изопределениенравиться Вниз:
TFLite_Detection_PostProcess
—ОбнаружениекоробкаTFLite_Detection_PostProcess:1
-Обнаружениедобрый别TFLite_Detection_PostProcess:2
-Обнаружение分числоTFLite_Detection_PostProcess:3
-Обнаружение次число!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
TOCO представлять TensorFlow 优изменятьпреобразователь. Чтобы понять TOCO изподробныйучиться,Посетите следующую страницу GitHub.。
к Внизкодописывать Понятнокакиспользовать TOCO Конвертировать TensorFlow Модель. 除Понятноиспользоватьtoco
и Нетдаtflite
снаружи,кодиз Нет.одинчастьи Доизсодержаниетакой же. В следующей части используется тип количественного вывода. 量изменятьдаодининдивидуальныйпроцесс,Используйте Вуменьшать Модельбольшой小,Также улучшает задержку аппаратного ускорения. Существует множество количественных методов.,нравитьсяэтотиндивидуальныйстраницасередина Место述。
существоватьэтот种Состояние Вниз,насиспользовать Полныйвсечисло量изменять。 Нетиспользовать反量изменять,нода平всеценитьи标准差ценить Используйте В确Конечнорассуждениекодсерединаиз Конечноточка乘число:
"!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"
Уведомление,существоватьдваиндивидуальный между Моделью,насиспользовать Понятно TOCO。 причина использовать tflite час,Конвертироватьназадиз Модель Нет会существовать телефон Андроидначальство Обнаружениеприезжатьограничивающая рамка。
TensorFlow Модель может означать для сохраненных из Модели. Keras Модель. Следующий код показывает, как Воля Модель сохраняет для сохранения и з Модели. Keras Модель:
model.save
函числозапускать:tf.saved_model.save(pretrained_model, "/tmp/mobilenet/1/")
tf.saved_model.save(obj, export_dir, signatures=None, options=None)
history.fit
Заказ编译 Keras Модельи Подготовитьруководитьтренироваться. пожалуйста, обрати внимание,нассуществовать“Нет. 4 Глава», «Глубокое обучение изображений» и «Нет. 6 Глава", "использовать трансферное обучение из визуального поиска"серединаверно Это упражнение по программированию. :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 производительность без ущерба для точности. Даспользоватьк Внизметодосуществлять优изменятьпроцесс:
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:
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()
к Внизкодописывать Понятно Полныйвсечисло量изменятьа также оптимизация размера:
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 Модель необходимые преобразования шагов. или ВОЗ,ты Можеткв соответствии с В соответствии сэтотиндивидуальныйстраницаначальствоизиллюстрировать Приходитьстроить Примеротвечатьиспользовать。 связанный телефон Андроидначальство Обнаружение объектовизподробныйпроцесскартинанравиться Вниз:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
наснуждатьсядваиндивидуальныйдокумент:
.tflite
Форматиздокумент.txt
документпоказывать Понятно Должендобрыйнравиться果нас Экспорт.tflite
документ,нопрямойловить Приходитьс Google Colab, например «TensorFlow Обнаружение объектов API – раздел ТОКО». lablemap.txt
документ Приходитьсlabel_map.pbtxt
документ,В списке указаны только имена классов.
Можетксуществоватьк Вниз GitHub Найдите образцы файлов на странице。
существовать телефон Андроидсередина采использоватьtflite
Модельигенерироватьрассуждениеизшагнравиться Вниз:
.txt
документ Воляиметьодин Списокидва ХОРОШО,нравиться Вниз Место示: burger
fries
android-studio/bin
глаз录итип./studio.h
。
git clone https://github.com/tensorflow/examples
。
examples/lite/examples/object_detection/android
。
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
.tflite
и.txt
документперетащить и оставитьприезжать资产глаз录середина。 Закройте папку и вернитесь Android Studio。.txt
документ Воля Что Открыть,исуществоватьвершинадобавить вновый ХОРОШО。 использовать???
наполнениеэто。 поэтому,.txt
документ Волядляэтотдваиндивидуальныйдобрыйпоставлятьтри ХОРОШО:???
Burger
fries
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)]
///apply from download_model.gradle
。 Убедитесь, что зависимость появилась, как показано на предыдущем снимке экрана.
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 Перечислено ниже Python quickstart
Сумкаописывать Понятнокакдля Raspberry Pi Установить TensorFlow Lite Сумка. Но да, есть несколько исключений, заслуживающих внимания. поэтому,Мы перечислили весь процесс здесь:
$sudo su
$pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl
label_image.py
документсерединаруководитьодин些Даже改:$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 Повторил вышеописанные действия, ошибок не возникло.
pi/examples/lite/examples
изглаз录。 существоватьэтотдокумент夹середина,тыотвечать Должениметь诸нравитьсяimage_classification
,object_detection
,image_segmentation
,posenet
иstyle_transfer
ждатьглаз录。сейчассуществовать,让насосуществлятьк Внизшагруководитьизображение分добрый:
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
середина。
pi/examples/lite/examples/image_classification/raspberry_pi
использовать Терминализменятьприезжатьглаз录иосуществлятьк Вниз Заказ:
$Python3 classify_picamera.py –model mobilenet_v2_1.0_224.tflite –labels labels_ mobilenet_v2_1.0_224.txt
существовать Raspberry Pi начальство Установить TensorFlow lite После этого мы теперь существуем и можем выполнить Обнаружение. объектов。 В этическом порядке:
pi/examples/lite/examples/object_detection/raspberry_pi
。 ты Волясмотретьприезжатьодининдивидуальныйимядляdetect_picamera.py
издокумент.coco_ssd_mobilenet_v1_1.0_quant_2018_06_29
из Обнаружение Папка с файлами меток объектов Модели. существоватьэтотдокумент夹середина,ты Волясмотретьприезжатьдваиндивидуальныйдокумент:detect.tflite
иlabelmap.txt
。pi/examples/lite/examples/object_detection/raspberry_pi
середина。pi/examples/lite/examples/object_detection/raspberry_pi
использовать Терминализменятьприезжать Обнаружение объектовглаз录,иосуществлятьк Вниз Заказ:$Python3 detect_picamera.py –model detect.tflite –labels labelmap.txt
сейчассуществовать,Вам стоит посмотреть приезжать Raspberry Pi Модуль камеры загорается и начинает отображать рамку вокруг изображения.
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)]
Вот несколько вещей, на которые следует обратить внимание:
На примере наглядно видно, как одна и та же Модель Существовать по-разному ведет себя на разных устройствах.
существовать 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 в формат tfliteисуществовать телефон Андроиди Raspberry Pi начальство Сделайте выводы. существовать本Фестивальсередина,Мы Воляиспользовать tflite Модельисуществовать iPhone Выполните рассуждение дальше. iPhone или iPad начальствоиз Обнаружения объектов Можеткследоватьдва种другойизпуть,нравитьсяк Вниз小Фестиваль Место述。
существовать本Фестивальсередина,нас Воляописыватькаксуществовать iPhone начальствоиспользовать tflite Модельруководить Обнаружение объектов。 связанный Подробнее,Пожалуйста, смотрите ниже GitHub страницаначальство Обзоризшаг。
По сути,Долженпроцесс Можетк分дляк Внизшаг:
run xcode-select --install
)。 Обратите внимание, что даже если у вас уже есть Установить Xcode, также нуждаться в выполнении этого шага.git clone
https://github.com/tensorflow/examples.git
。$sudo gem install cocoapods
Приходить Установитьcocoapods
。examples-master
илиexamples
。 Взаимноотвечать地Даже改к Вниздокумент夹адрес.$cd examples-master/lite/examples/object_detection/ios
$pod install
ObjectDetection.xcworkspace
издокумент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)]
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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 да 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 серединаизвсеиндивидуальный Модельразвиватьпроцесстолькос участиемтрииндивидуальныйшаг:
к Вниз Экран截картинапоказывать Понятно“создавать 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)]
связанныйначальство述Экран截картинаизодин些关键хотетьточканравиться Вниз:
развивать Модельназад,Воля Что移植приезжатьк Внизиспользовать Swift Написание визуальных фреймворков. Это Воля Обнаружениес рамкой изверно значок。
к Вниздасвязанныйотвечатьиспользоватьразвиватьизодин些Уведомлениеиметь значение:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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 Модельиз часть. Полный MobileNet-SSD TF Модель Включать Четыреиндивидуальныйребеноккартина:Preprocessor
,FeatureExtractor
,MultipleGridAnchorGenerator
иPostprocessor
。 Core ML Только инструменты Модель трансформациисерединаизFeatureExtractor
ребеноккартина; Остальные задачи необходимо выполнить отразвиватьлюдичленс ХОРОШОКонвертировать。
изображениеотметкада Обнаружение объектовилиразделениеизядерный Сердцечасть。 Эта часть самая утомительная с точки зрения ручной работы с нейросетями. Первый前,насописывать Понятно Используйте Вотметкаизтрииндивидуальныйработа具:LebelImg
,VGG Image Annotator
иRectLabel
。 Но да, есть много других инструментов, таких как Supervisely и Labelbox。 Некоторые из этих инструментов выполняют полуавтоматическое аннотирование. МАКСИМАЛЬНЫЙ ВЫЗОВ дасоздавать 100,000 индивидуальная аннотация и существование Точность на уровне пикселей, правильно аннотированная. Если аннотация неверна, то разработкаиз Модель Воля неверна и существует. 100,000 Изображение середина найти место неправильно из тега нравитьсясуществовать стог сена середина найти иголку. верно Вбольшой型项глазработаделать,отметкаработаделать流Можетк分длядвадобрый:
существовать Внизодин Фестивальсередина,Мы с Волей обсуждаем оба метода.
Многие бизнес-лейблы «Воля» работают как одна из самых сердцевинных бизнес-моделей. Каждый индивидуальный поставщик облачных услуг сотрудничает с людьми-тегерами, чтобы нейронная сеть работала над точным выполнением услуг по маркировке изображений. Ниже приведена некоторая информация о том, где найти дасвязанныйсуществовать и сторонние службы маркировки данных. пожалуйста, обрати внимание,Этот список не является исчерпывающим,Поэтому, пожалуйста, проведите собственное исследование за пределами этого списка.,Чтобы найти услуги по маркировке, соответствующие вашим потребностям:
Стоимость услуг по маркировке данных может быть высокой.
существовать本Фестивальсередина,Мы, Воля, обсуждаем индивидуальный совершенно бесплатный инструмент автоматического аннотирования.,Долженработа具отвечатьуменьшатьлюдиработаотметкаизстепень。 этотда ИнтелизИнструменты аннотирования компьютерного зрения(CVAT)работа具,это очень многообещающе,толькопроходитьнагрузка Модель Прямо сейчас Можетосуществлять Полныйс动отметкаделатьдляростточка. ты Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжатьсвязанный Долженработа具из Дажемногоинформация。 。
Этот инструмент способен создавать ограничивающую рамку.,Полигональная и семантическая сегментация создаёт аннотацию,и且возвращаться Можеткосуществлятьс动отметка。 Инструмент может аннотировать вывод для VOC XML,JSON TXT или TFRecord документ. Это означает, что если вы используете этот инструмент, вам не нужно воля изображений Конвертироватьдля TFRecord Форма. Вы можете напрямую обучать нейронную сеть. пожалуйстав соответствии с В соответствии ск Внизшагизучать习какиспользовать Долженработа具:
localhost:8080
。 Это Воля Открыть CVAT。 Обратите внимание, что НДС когда前только Можетсуществовать Google Chrome использовать в своем браузере.[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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, доступна только одна модель выбора. Но да, вы все еще нуждаетесь в раскрывающемся списке серединавыбрать, как показано на предыдущей фотографии экрана. пожалуйста, обрати внимание,ты Даыбиратьмногоиндивидуальныйдобрый别,Но выбранная категория отображаться не будет.
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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быстрый, было загружено девять изображений. Затем нажмите кнопку «Отправить» для этой задачи Воясоздавать. ты Можетк Волядругойизлюдираспространять给другойиз Задача。
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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 Platform(GCP), Amazon Web Services(AWS)и Облачная платформа Microsoft Azureсередина打Сумкаотвечатьиспользоватькруководитьтренироватьсяиразвертывать。 Вы, Воля, научитесь готовить данные, загружать приезжать в облачное хранилище данных. такжекакмонитортренироваться. Вы также Воля узнаете, как отправить изображение Воля или векторное изображение прие зжать Облачную. провести анализ и получить JSON ответ. Лист обсуждения данной главы индивидуальное приложение такжекаксуществоватьвычислитьдвигательбеги дальшераспределенный TensorFlow。 Тренироваться заканчивается, в этой главе Воля обсуждается, как оценить Модель и Воля, ее интеграцию приложений прибытия середина для крупномасштабных операций.
Эта глава разделена на следующие разделы:
существовать前дваглавасередина,Мы узнали, как настроить Google Colab для использования SSD,R-CNN и R-FCN а также Inception и MobileNet делатьдля骨干предварительнотренироватьсясеть Приходитьтренироватьсясопределение Обнаружение объектовустройство。 насизсеть Используйте ВОбнаружение Гамбургерикартофель фри。 существовать本Фестивальсередина,нас Воляизучать习какиспользовать GCP Выполняйте те же задачи. тытакже Можетксуществоватьздесь。
Моя предыдущая статья началась,Но я обнаружил, что многие части необходимо упростить.,и且нуждатьсядобавить в дополнительных деталях, чтобы сделать его существующимiiz Ubuntu PC беги дальше。 к Вниз小Фестивальпредоставилиспользовать GCP тренироваться детектор целей из пошагового процесса.
пожалуйста, обрати внимание,本Фестивальс участием许много Воляместный Терминальное соединение приезжать GCP Большие шаги, иногда поток информации может сбить с толку. Прежде чем приступить к работе с этим разделом, рекомендуется внимательно прочитать процедуры, приведенные в конце этого раздела. существовать AWS Sagemaker Облачная платформаначальствотренироваться Обнаружение объектов, изучать общее из информационных потоков.
существовать本Фестивальсередина,Волясуществовать 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 ииспользоватьтыиз Gmail Вход в аккаунт. существоватьначальствоодин Фестивальиз Экранбыстрый В соответствии ссередина,Есть три прямоугольные коробки.,В них вам необходимо настроить три отдельные основные части.
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
ведрода保житьданныеиз容устройство。 У всех поставщиков облачных услуг есть ведро. ведроиз Формати PC изструктуры каталоговтакой же. ведро Можетк Включатьизображение(.jpg
документ),отметка,TFRecord,исследоватьточкадокументи Модельвыход。 существовать本частьсередина,нас Воляизучать习как Установить Google Cloud Storage(GCS)ведрокхранилищетренироватьсяитестданные。
хотетьиспользовать GCP API Настроить сегмент,пожалуйстав соответствии с В соответствии ск Внизшагдействовать:
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
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*
(трииндивидуальныйдокумент)。 нас Волясуществовать Внизодин Фестивальсерединапредставлятькакполучать Этидокумент.
Этот процесс предполагает приезд Настроить Google Cloud SDK, а затем Google Cloud Проект иведро ссылается на ваш терминал, чтобы вы могли постоянно загружать туда документы. пожалуйста, запомни,тренироваться Воля Зависит от команды терминала запускается, поэтому даже если вы используете перед из API настройки, вы все еще нуждаетесь выполните следующую часть середина с указанием шагов (от "Начать Настроить) Google Cloud раздел «SDK») на терминал «Воля», ссылка приезжать GCP。
Google Cloud SDK да Набор инструментов командной строки, которые позволяют PC Да Google Cloud взаимодействовать. Зависит от Всуществовать本Фестивальсередина,Мы Воляиспользовать Ubuntu Терминал Google Cloud взаимодействовать, чтобы мы нуждались в первую очередь в наладке SDK。 существовать Терминалсерединавходитьк Вниз Заказ:
$ 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 SDK。 Сейчас существуем, мы нуждаемся в выполнении самых важных шагов, это да Воля Ubuntu Терминальное соединение приезжать Google Cloud Проекта துக்கியுக்கள்
для Чтонуждаться Воля Ubuntu Конечная ссылка приезжать Google Cloud проект? Ответить даусиспользовать локально PC начальствоиз Терминалзапускатьтренироваться Заказ,ноданасизданныехранилищесуществовать GCP изведросередина,и且Модель Волясуществовать GCP генерируется в. Поэтому мы нуждаемся Воля PC Терминальное соединение приезжать GCP выполнить тренировочную миссию.
существовать Терминалсерединав соответствии с顺序входитьк Внизшаг:
rcnn-trainingpack
:$ gcloud config set project rcnn-trainingpack
gsutil
Python команда, как показано ниже:$ gsutil mb gs://krish_burgerfries
$ export PROJECT="rcnn-trainingpack"
$ export YOUR_GCS_BUCKET="krish_burgerfries"
тензорный процессор(TPU)да Google развивающийся вид AI ускоритель,Используйте Вбыстрыйскоростьиметь дело сбольшой量данныектренироватьсянервсеть。
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
https://ml.googleapis.com/v1/projects/${PROJECT}:getConfig
Переднийиз Заказ会Воляк Внизвыход返回приезжать“Терминал”окно。 пожалуйста, обрати внимание,Имя сервиса и имя проекта Воля и ваше приложение отличаются:
{"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" }}
tpuServiceAccount
путь,Воля Экспорт учетной записи TPU для переменных среды,нравиться Вниз Место示:$ export TPU_ACCOUNT="service-111111111111@cloud-tpu.iam.gserviceaccount.com"
ml.serviceAgent
ролевой грант TPU счет:$ gcloud projects add-iam-policy-binding $PROJECT --member serviceAccount:$TPU_ACCOUNT --role roles/ml.serviceAgent
Этот терминал «Волясуществовать» середина генерирует серию аннотаций.,отUpdated IAM policy for the project [rcnn-trainingpack]
начинать。
сейчассуществоватьнасуже Воля Конечная ссылка приезжатьведрои Google Cloud Проект, следующий шаг да Воля его ссылка приезжать TensorFlow Обнаружение объектов API。 пожалуйстаследоватьздесьпоставлятьизодин Группаиллюстрировать。
Предыдущие из Установить ссылки Включить множество несуществующих строк изкода, перечисленных здесь. Ты, Воля, можешь правильно выполнить большинство кодов. этотпроцессизнаконецдва ХОРОШОкодописыватьнравиться Вниз:
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:'pwd':'pwd'/slim
python object_detection/builders/model_builder_test.py
В описании сказано,Предыдущие шаги имеют решающее значение для успеха. Но да,Если ты PC начальство Установить Понятно TensorFlow 2.0 может возникнуть следующая ошибка:
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 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
документсередина。
существоватьздесь,нас Волясмотретьодин Внизиспользовать Терминалз Загрузка данныхметод:
train.record
начальство传приезжать GCP。 этот Воляиспользоватьgsutil
Python Файл команды Воля из локального каталога копировать приезжать GCS ведро。 Обязательно включите этот подкаталог. Например,существоватьэтот种Состояние Вниз,YOUR_GCS_BUCKET
Волядатыизведроизимясказать; нравиться果дляburgerfries
,но Заказ Волядля$burgerfries/data
,Чтосерединаdata
даburgerfries
Внизизребенокглаз录,документхранилищесуществовать Чтосередина:$ 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
test.record
начальство传приезжать GCP:$ 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.
label_map.pbtxt
начальство传приезжать GCP:$ 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 ведро,Начните трансферное обучение:
model.tar
документ。
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
документдаодининдивидуальный文Эта статья件,определение Понятно Модельизк Вниз重хотетьособенность:
map.pbtxt
из Расположениесуществоватьтренироватьсяпериод,Модельиспользоватьconfig
документвходитьинастраивать参число。 ты Можетксуществовать TensorFlow глаз录серединаизк Внизпуть Внизпопытаться найтиприезжатьconfig
документиз Списокповерхность:
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
глаз录:
$cd models-master/research
связанный Сумка Обнаружение объектов API,pycocotools
иtf-slim
изинформация,Видетьк Вниз Заказ:
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)
После выполнения вышеуказанных шагов,нас Воля Подготовитьруководитьтренироваться. как упоминалось ранее,проходитьосуществлятьк Вниз Заказсуществовать Терминалсерединаначинатьтренироваться:
{YOUR_GCS_BUCKET}
Изменить дляburgerfries
(существоватьтыиз Состояние Вниз,если имена разные,но Воля Что Изменить для Долженимясказать)。 Заканчиватьназад,Воля Что粘贴приезжать Терминалсерединаиточка击Enter
:$ 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
{YOUR_GCS_BUCKET}
Изменить дляburgerfries
(существоватьтыиз Состояние Вниз,если имена разные,но Воля Что Изменить для Долженимясказать)。 После завершения этой операции,Воля Что粘贴приезжать Терминалсередина,Затемодин击Enter
:$ 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
$ gcloud ai-platform jobs describe krishkar_object_detection_1111111111
существоватьэтот,конецизчисло字верно Втыизотвечать Используйте Воля有Местодругой,И отображается терминал «Волясуществовать середина». После ввода предыдущей команды,ты Можетксуществоватьэтотиндивидуальныйстраницасерединаисследоватьтренироватьсяделать业。
Обратите внимание, что URL-адрес изxxxxx
и1111111111
часть Толькода Пример; Ваше значение Воля отличается и будет отображаться в существующем терминале середина.
существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN”руководить Обнаружение объектовсередина,Мы научились использовать Google Colab существовать TensorBoard Посмотреть в TensorFlow Модельвыходрезультат. В этом разделе середина мы, Воля, покажем вам, как применять терминал середина, выполнив команду от Облачная. запуск платформы TensorBoard:
tensorboard --logdir=gs://${YOUR_GCS_BUCKET}/train
После выполнения вышеуказанной команды,Если вы столкнулись с ошибкой прибытия,НапримерValueError: Duplicate plugins for name projector
,ноотздесьи Воля Что保житьприезжатьтыизглаз录середина。
diagnose_tensorboard.py
из Установитьглаз录иосуществлятьк Вниз Заказ:$ python diagnose_tensorboard.py
это Воля运ХОРОШОипоставлять Может能из修复предположение。 В моем случае потребовались следующие исправления:
### 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`, ..."
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
издокумент.
Внизодининдивидуальный Задачада Воляисследоватьточкавыход Конвертироватьдлязаморозитьизрассуждениекартина. В следующем разделе описаны три метода:
freeze_graph.py
: $ python freeze_graph.py --input_graph=train_graph.pbtxt -- input_checkpoint=train_model.ckpt-2000 -- output_graph=frozen_graph.pb --output_node_name=softmax
freeze_graph
: 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, "")
верно В С помощью двух вышеуказанных методов мы получим два типа ошибок:
IndexError: tuple index out of range
AttributeError: module 'tensorflow_core.python.pywrap_tensorflow' has no attribute 'NewCheckpointReader'
tflite graph.py
начальствоосуществлятьexport
函число,Затемскачать Связанныйдокумент: $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
Docker даодин种виртуальная Машина позволяет персоналу знакомиться с приложением «Воля» и всеми его компонентами, упакованными вместе с существующими. верно В TensorFlow,использовать Docker из Преимуществда Воля TensorFlow Установитьи PC Изоляция операционной системы. Эта изоляция устраняет многое из того, что мы наблюдали ранее. TensorFlow Связанные ошибки:
$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
Конвертироватьпроцесс。
graph.py
существовать“Нет. 10 глава",“использовать R-CNN,SSD и R-FCN из Обнаружение объектов”и“Нет. 11 глава",“существоватьиметь CPU/GPU Оптимизация глубокого обучения на периферийных устройствах», мы используем Google Colab Воляисследоватьточка Конвертироватьдлязаморозитькартина. нас Волясуществоватьэтот处использовать Взаимно同изметод,В дополнение к нашей конфигурации «Воляимпортировать»,Си контролировать и выводить каталог,нравиться Вниз Место示:
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 облакоконец硬盘,может возникнуть ошибка,Поскольку длясуществовать не удалось найти файл о прибытии в течение этого периода.
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 да Используйте Всуществоватьоблакосерединаосуществлять Различный Задачаиз Amazon Облачная платформа. AWS SageMaker дамашинное обучениеплатформа,Используйте Виспользовать AWS Интерактивная платформа тренироваться в развертывании Модель. AWS SageMaker и AWS S3 vedrointeract для получения данных из хранилищ. Внизодин Фестиваль Воляпредставлятьтренироваться Обнаружение объекты из пошагового процесса.
Свяжитесь со службой поддержки AWS,Воля Служить限制Увеличиватьприезжатьml.p3.2xlarge
илидобрый似изценить。 Обратите внимание, что утверждение типа инстанса может занять до двух рабочих дней, поэтому планируйте это соответствующим образом. Если вы этого не сделаете, вы получите следующую ошибку:
ResourceLimitExceeded
Используйте Втренироватьсяделать业использовать Состояниеизсчетуровень Служить限制ml.p3.2xlarge
для零实пример,Текущее использование для нулевых экземпляров,пожалуйста求增量дляодининдивидуальный Пример. Пожалуйста, свяжитесь AWS Запрошена поддержка для увеличения этого лимита.
.xml
документ Конвертироватьдля JSON ФорматAWS SageMaker отметкаданныеиспользовать JSON Формати Нетданас Доиспользоватьиз.xml
。 проходитьк Внизшаг Воля.xml
документ Конвертироватьдля COCO JSON Формат:
voc2coco.py
Python Каталог, в котором расположены файлы.
trainxml
изглаз录,Чтосередина Включатьвсе.xml
документ. Долженглаз录отвечатьиvoc2coco.py
Кусочек ВВзаимно同изхозяинглаз录середина。
trainlist.txt
издокумент,Должендокументотвечать Список出все.xml
документимя。 ты Можетксуществовать Терминалсерединакопироватьэтотдокумент,Затем Волявсе.xml
документкопироватьи粘贴приезжать文Эта статья件серединаксоздаватьэтотдобрыйдокумент.
classname.txt
документ,Должендокументотвечать Список出training
документ夹серединаизвседобрый。 существоватьэтот Примерсередина,это Воля有два ХОРОШО-burger
иfries
。
$ python voc2coco.py --ann_dir trainxml --ann_ids trainlist.txt --labels classname.txt --output train_cocoformat.json
большинство终выходдаcocoformat.JSON
документ,этодавсе.xml
документизодининдивидуальныйкомбинация JSON документ.
COCO JSON
документ Конвертироватьдляодининдивидуальный JSON документ.Chapter12_cocojson_AWSJSON_train.ipynb
Jupyter блокнот ВоляCOCO JSON
документ Конвертироватьдляодининдивидуальный JSON документ. МожетксуществоватьэтотиндивидуальныйстраницаИскать наприезжатьэтотдокумент. этотдаверно Amazon предоставлено Обнаружением объектовкодиз Исправлять。 Этот код не даот GitHub страницаполучатьCOCO JSON
документ,идаотместный驱动устройствополучатьначальствоодин步серединасоздаватьизcocoformat.JSON
документ,Затем Воля Что Конвертироватьдлягенерироватьиздокумент夹серединаизмногоиндивидуальный.JSON
документ.S3 ведрода Используйте Всуществовать AWS серединахранилищеданныеизоблакохранилище容устройство。 В этом разделе описывается,какданныеотнасиз PC начальство传приезжать S3 ведро:
train_channel
:train
картина片.jpg
документtrain_annotation_channel
:train
отметка.JSON
документ. Каждыйиндивидуальныйдокументверноотвечать ВКаждыйиндивидуальныйtrain
изображение。validation_channel
:validation
картина片.jpg
документvalidation_annotation_channel
:validation
отметка.JSON
документ. Каждыйиндивидуальныйдокументверноотвечать ВКаждыйиндивидуальныйvalidation
изображение。Давайте выполним следующие шаги:
ml.p2.nxlarge
,Чтосерединаn
Можеткдля 1, 2, 8 и так далее). пожалуйста, обрати внимание,нравиться果实примердобрый型да标准добрый型(Напримерml.m5.nxlarge
)иливычислить优изменять型(Напримерml.c5.nxlarge
),нотренироваться Волянеудача。 Поэтому запросите увеличение лимитов обслуживания, как было сказано ранее.sample1
да S3 ведроимясказать,DEMO
да Чтосередина Включатьsample1
издокумент夹,Его середина имеет шесть индивидуальных папок - две индивидуальные папки.,Чтосередина Сумка括.jpg
изображение,дваиндивидуальныйотметкадокумент夹Зависит от.json
документ,выходиисследоватьточкадокументкомпозиция。 Обратите внимание, что путь должен быть правильным; В противном случае может возникнуть ошибка: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/
s3_output_location
середина,делатьдляmodel.tar.gz
документ. исследоватьточка Воляхранилищесуществовать Переднийкодсерединаопределениеизs3_checkpoint
Расположение。к Вниздаодин些существоватьтренироватьсяпроцесссерединанеудачаиз原потому что及Чторешатьметод:
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
данныедокументкаждый重复одининдивидуальный。
ClientError
:validation
набор Нет足够изприноситьотметкадокумент. пожалуйста确保приносить有有效отметкаиздокументчисло量большой Вmini_batch_size
,и且实примерсерединаиз GPU Количество больше. решение:хотеть记住из重хотетьодинточкадапартиябольшой小必须小Вvalidation
документизчисло量。 поэтому,нравиться果validation
документизчисло量для 32, размер партии для 32, то Воля размер микро партииот 32 Изменить для 12, чтобы устранить эту ошибку.
ClientError
:Не могущийисходныйизменять算法。 train_annotation
рядизContentType
длянулевой。 пожалуйстадляtrain_annotation
каналнастраиватьсодержаниедобрый型(Зависит отKeyError
引рост)。 Зависит отu'train_annotation'
引рост。 решение:确保содержаниедобрый型Нетдлянулевой白。 Волясодержаниедобрый型Изменить дляapplication/x-image
。
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
。 нравиться果ты附加Понятно_channel
(train_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 Облачная платформа для обучения.
существовать本Фестивальсередина,Мы Воляиспользовать Azure сопределение视觉Приходитьтренироваться Обнаружение объектовустройство。 Можетксуществоватьэтотиндивидуальныйстраницасерединапопытаться найтиприезжатьсвязанныйиспользовать Облачная платформа Microsoft Azureтренироваться Обнаружение объекты из Подробности:.
Внизодин Фестиваль Воляподробныйпредставлятьтренироваться Обнаружение объекты из различных процессов.
существовать本Фестивальсередина,нас Волянастраиватьодининдивидуальный 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)]
настраиватьтренироватьсяиз具телошагнравиться Вниз:
настройки Аккаунтнастройкиочень важноиз раздела,Если сделано неправильно,Воля занимает довольно много времени. настройки почтового аккаунта,ловить Вниз Приходитьизшагдействительныйначальство Воляоченьбыстрыйруководить。
существовать本Фестивальсередина,нас Волятренироватьсяизображениеначальство传приезжать Azure Custom Vision платформа. В этическом порядке:
train
иvalidation
изображение。
.xml
или.JSON
документ,но не волнуйся,Azure Делает маркировку изображений очень простой.
[Не удалось передать изображение по внешней ссылке. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (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)]
После того, как тренироваться будет завершено, Вы Воля сможете просмотреть показатели успеваемости приезжать. Обратите внимание, что после указанного выше существования вы сможете просматривать этот контент. На следующем снимке экрана показана игла верно новая тренироваться Модельиз Точность, оставить отзыв 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
изценить。
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)]
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 обучался следующим образом:
$ 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
изплатформа,Также может использоваться для упаковки ваших приложений.,нравиться Вниз Место示:
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
логотип:этотдаделать业глаз录существовать “Нет. 6 Глава", "Использовать трансферное обучение из визуального поиска"середина, мы научились существовать изначально PC Выполните визуальный поиск вкл. Метод использоватьпроходить нейронной сети (например VGG16 или ResNet) передает изображение и проводит удаление последнего отдельного полносвязного слоя, а затем Воля его иданные библиотеки середина Сравните другие изображения известной категории «Сравнивать» с «Воля» и ее «Конвертировать для вектора изображения», чтобы найти жилье, ближайшее к соседям. соответствует, а затем отображает результаты.
существовать Примерсередина,насот 200 изображение запускается, но да, если количество изображений достигнет, приехать 100 Тысячи фотографий и результаты должны быть доступны на странице, тогда существование локального хранилища изображений Воля бессмысленно. существовать Эти Состояние Вниз,облакохранилищедабольшинство佳из。 В этом случае мы можем Воля векторное хранилище изображений вместо да Воля хранилище изображенийсуществовать облачный середин а, то когда пользователь загружает изображение, изображение Воля Конвертироватьдля вектора и Воля отправляется в приезжающее облако середина для обработки. существоватьоблакосередина,насосуществлять K Выполните поиск поблизости, чтобы найти место проживания и отобразить наиболее близкие к из. использовать REST API илиТранспорт телеметрии очереди сообщений(MQTT)Служить Воляизображениевекторначальство传приезжатьоблакосередина。 Каждыйиндивидуальный Служить Все有Собственныйизбезопасностьпроверять。
В настоящее время мы обсуждаем отправку изображения Воля в облачный сервис и получение сообщения в формате JSON из базовой инфраструктуры кодирования:
api_host
да Web Адрес сервера. headers
документдадействовать参число,существоватьэтот种Состояние Вниздляизображение。 image_url
дадействительныйизизображение Расположение: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
Используйте В保житьизображение:@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 иметь видение 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_APPLICATION_CREDENTIAL
:PC серединаизкритический путьPROJECT_ID
LOCATION_ID
request.json
,Затемты Воляполучатьприезжатьодининдивидуальныйresponse.json
документ.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 да Microsoft изоблакомашинное обучениеплатформа,Используйте Встроить,управлятьиразвертыватьотвечатьиспользовать。 и GCP и AWS То же, Лазурное иметь множество функций, но мы вернокомпьютерное интерес к работе из функции да Azure AI и Azure машинное обучение。 существовать AI имашинное обучениесередина,икомпьютерное зрение Связанные из Приложения да Azure Bot Услуги, Azure Когнитивный поиск, Bing Поиск изображений, Bing Визуальный поиск икомпьютерное зрение。 Например,Если вы хотите выполнить визуальный поиск,пожалуйстаизменятьприезжатьздесь。
существовать Azure Облачная платформасерединаруководить Может视搜索из Базовыйшагнравиться Вниз:
test
изображениеизпуть。request.post
изформа发送搜索пожалуйста求: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. пожалуйста, запомни,Даже если ты не принял решение тренироваться,Также обязательно закройте проект после выполнения задачи.,Чтобы избежать ненужных расходов.