Обнаружение объектов с помощью детектора объектов YOLO v3
обнаруживает объекты в одном изображении или массиве изображений, bboxes = detect(detector,I)I, используя детектор объектов 3 версии (YOLO v3), detector. Размер входа изображения должен быть больше или равен размеру входа сети предварительно обученного детектора. Местоположения обнаруженных объектов возвращаются как набор ограничивающих рамок.
обнаруживает объекты в пределах всех изображений, возвращаемых detectionResults = detect(detector,ds)read функция входа datastore ds.
[___] = detect(___, обнаруживает объекты в прямоугольной области поиска roi)roi, в дополнение к любой комбинации аргументов из предыдущих синтаксисов.
[___] = detect(___, задает опции, используя один или несколько аргументов имя-значение.Name,Value)
Примечание
Эта функция требует модели Computer Vision Toolbox™ для обнаружения объектов YOLO v3. Можно установить модель Computer Vision Toolbox для обнаружения объектов YOLO v3 из Add-On Explorer. Дополнительные сведения об установке дополнений см. в разделе Получение и управление Дополнений. Чтобы запустить эту функцию, вам потребуется Deep Learning Toolbox™.
Загрузите предварительно обученный детектор объектов YOLO v3.
detector = yolov3ObjectDetector('tiny-yolov3-coco');Прочтите тестовое изображение и предварительно обработайте тестовое изображение при помощи preprocess функция.
img = imread('sherlock.jpg');
img = preprocess(detector,img);Обнаружение объектов в тестовом изображении.
[bboxes,scores,labels] = detect(detector,img);
Отображение результатов обнаружения.
results = table(bboxes,labels,scores)
results=1×3 table
bboxes labels scores
________________________ ______ _______
134 69 280 272 dog 0.56819
detectedImg = insertObjectAnnotation(img,'Rectangle',bboxes,labels);
figure
imshow(detectedImg)
Загрузите предварительно обученный детектор YOLOv3 объектов.
detector = yolov3ObjectDetector('tiny-yolov3-coco');Считайте тестовые данные и сохраните их как изображение объект datastore.
location = fullfile(matlabroot,'toolbox','vision','visiondata','vehicles'); imds = imageDatastore(location);
Обнаружение объектов в тестовом наборе данных. Установите Threshold значение параметров 0,3 и MiniBatchSize значение параметров 32.
detectionResults = detect(detector,imds,'Threshold',0.3,'MiniBatchSize',32);
Считайте изображение из тестового набора данных и извлеките соответствующие результаты обнаружения.
num = 10;
I = readimage(imds,num);
bboxes = detectionResults.Boxes{num};
labels = detectionResults.Labels{num};
scores = detectionResults.Scores{num};Выполните немыслимое подавление, чтобы выбрать самые сильные ограничивающие рамки из перекрывающихся кластеров. Установите OverlapThreshold значение параметров 0,2.
[bboxes,scores,labels] = selectStrongestBboxMulticlass(bboxes,scores,labels,'OverlapThreshold',0.2);Отображение результатов обнаружения.
results = table(bboxes,labels,scores)
results=3×3 table
bboxes labels scores
________________________ ______ _______
14 71 52 27 car 0.93352
74 73 7 5 car 0.65369
102 73 15 10 car 0.85313
detectedImg = insertObjectAnnotation(I,'Rectangle',bboxes,labels);
figure
imshow(detectedImg)
Загрузите предварительно обученный детектор объектов YOLO v3.
detector = yolov3ObjectDetector('tiny-yolov3-coco');Чтение тестового изображения.
img = imread('highway.png');Задайте видимую область (ROI) в тестовом изображении.
roiBox = [70 40 100 100];
Обнаружение объектов в пределах заданного информация только для чтения.
[bboxes,scores,labels] = detect(detector,img,roiBox);
Отображение ROI и результатов обнаружения.
results = table(bboxes,labels,scores)
results=1×3 table
bboxes labels scores
_______________________ ______ _______
99 103 41 33 car 0.72206
img = insertObjectAnnotation(img,'Rectangle',roiBox,'ROI','Color',"blue"); detectedImg = insertObjectAnnotation(img,'Rectangle',bboxes,labels); figure imshow(detectedImg)

detector - детектор объектов YOLO v3yolov3ObjectDetector объектДетектор объектов YOLO v3, заданный как yolov3ObjectDetector объект.
I - Тестовые изображенияТестовые изображения, заданные как числовой массив размера H -by- W -by- C или H -by- W -by C -by- T. Изображения должны быть реальными, неразборчивыми, полутоновыми или RGB изображениями.
H: Высота
W: Ширина
C: Размер канала в каждом изображении должен быть равен размеру входного канала сети. Для примера, для полутоновых изображений C должны быть равны 1. Для цветных изображений RGB он должен быть равен 3.
T: Количество тестовых изображений в массиве. Функция вычисляет результаты обнаружения объектов для каждого тестового изображения в массиве.
Область значений интенсивности тестового изображения должен быть подобен области значений интенсивности изображений, используемых для обучения детектора. Для примера, если вы обучаете детектор на uint8 изображения, переключите тестовое изображение в область значений [0, 255] с помощью im2uint8 или rescale функция. Размер тестового изображения должен быть сопоставим с размерами изображений, используемых в обучении. Если эти размеры сильно отличаются, детектор испытывает трудности с обнаружением объектов, поскольку шкала объектов в тестовом изображении отличается от шкалы объектов, для идентификации которых был обучен детектор.
Типы данных: uint8 | uint16 | int16 | double | single
ds - Тестовые изображенияImageDatastore | объекта CombinedDatastore | объекта TransformedDatastore объектТестовые изображения, заданные как ImageDatastore объект, CombinedDatastore объект, или TransformedDatastore объект, содержащий полные имена файлов тестовых изображений. Изображения в datastore должны быть полутоновыми или RGB-изображениями.
roi - Область поиска интересовНеобходимая область поиска, определенная как [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] вектор. Вектор задает верхний левый угол и размер области в пикселях.
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
detect(detector,I,'Threshold',0.25)'Threshold' - Порог обнаружения0.5 (по умолчанию) | скаляром в области значений [0, 1]Порог обнаружения, заданный как разделенная разделенными запятой парами, состоящая из 'Threshold' и скаляром в области значений [0, 1]. Обнаружение, которое счета меньше этого порога значения, удаляется. Чтобы уменьшить ложные срабатывания, увеличьте это значение.
'SelectStrongest' - Выберите самый сильный ограничивающий прямоугольникtrue (по умолчанию) | falseВыберите самый сильный ограничивающий прямоугольник для каждого обнаруженного объекта, заданный как разделенная разделенными запятой парами, состоящая из 'SelectStrongest' и любой из них true или false.
true - Возвращает самый сильный ограничивающий прямоугольник на объект. Метод вызывает selectStrongestBboxMulticlass функция, которая использует немаксимальное подавление, чтобы исключить перекрывающиеся ограничивающие прямоугольники на основе их оценок достоверности.
По умолчанию, selectStrongestBboxMulticlass функция вызывается следующим образом
selectStrongestBboxMulticlass(bboxes,scores,... 'RatioType','Union',... 'OverlapThreshold',0.5);
false - Возвращает все обнаруженные ограничительные рамки. Затем можно написать свой собственный пользовательский метод, чтобы исключить перекрывающиеся ограничительные рамки.
'MinSize' - Минимальный размер области[1 1] (по умолчанию) | вектор вида [height
width]Минимальный размер области, заданный как разделенная разделенными запятой парами, состоящая из 'MinSize' и вектор вида [height
width]. Модули указаны в пикселях. Минимальный размер области определяет размер наименьшей области, содержащей объект.
По умолчанию MinSize 1 на 1.
'MaxSize' - Максимальный размер областиsize(I) (по умолчанию) | вектор вида [height
width]Максимальный размер области, заданный как разделенная разделенными запятой парами, состоящая из 'MaxSize' и вектор вида [height
width]. Модули указаны в пикселях. Максимальный размер области определяет размер самой большой области, содержащей объект.
По умолчанию 'MaxSize' задается высота и ширина входного изображения, I. Чтобы уменьшить время расчета, установите это значение на известный максимальный размер области для объектов, которые могут быть обнаружены в вход тестовом изображении.
'MiniBatchSize' - Минимальный размер партии128 (по умолчанию) | скаляромМинимальный размер пакета, заданный как разделенная разделенными запятой парами, состоящая из 'MiniBatchSize' и скалярное значение. Используйте MiniBatchSize для обработки большого набора изображений. Изображения сгруппированы в минибатчи и обработаны как пакет для повышения эффективности расчетов. Увеличьте размер мини-бата, чтобы уменьшить время вычислений. Уменьшите размер, чтобы использовать меньше памяти.
'DetectionPreprocessing' - Опция предварительной обработки тестовых изображений'auto' (по умолчанию) | 'none'Опция предварительной обработки тестовых изображений перед выполнением обнаружения объектов, заданная как разделенная разделенными запятой парами, состоящая из 'DetectionPreprocessing' и одно из следующих значений:
'auto' - Предварительно обработать тестовое изображение перед выполнением обнаружения объектов. The detect функция вызывает preprocess функция, которая выполняет эти операции:
Изменение значения интенсивности обучающих изображений в области значений [0, 1].
Изменение размера обучающих изображений на один из ближайших входов сигнала сети и обновление значений координат ограничивающего прямоугольника для точного обучения. Функция сохраняет исходное соотношение сторон обучающих данных.
'none' - Выполнить обнаружение объектов без предварительной обработки тестового изображения. Если вы выбираете эту опцию, тип данных тестового изображения должен быть либо single или double.
Типы данных: char | string
bboxes - Местоположение обнаруженных объектовРасположение объектов, обнаруженных в вход изображении или изображениях, возвращаемое как
M -by-4 матрицу, если вход является одним тестовым изображением.
T массив ячеек -by-1, если вход является массивом тестовых изображений. T - количество тестовых изображений в массиве. Каждая камера в массиве содержит матрицу M-на-4, задающую обнаружение ограничивающего прямоугольника.
. M - количество ограничивающих рамок в изображении.
Каждая строка в матрице - вектор с четырьмя элементами формы [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ]. Этот вектор задает верхний левый угол и размер соответствующего ограничивающего прямоугольника в пикселях.
scores - счета обнаруженияОбнаружение оценок достоверности для каждого ограничивающего прямоугольника, возвращаемое как
M - вектор-строка элемента, если вход является одним тестовым изображением.
T массив ячеек -by-1, если вход является массивом тестовых изображений. T - количество тестовых изображений в массиве. Каждая камера массива содержит вектор-строку M-element, указывающий счета обнаружения для соответствующего ограничивающего прямоугольника.
M - количество ограниченных рамок, обнаруженных в изображении. Более высокий счет указывает на более высокое доверие в обнаружении.
labels - Метки для ограничивающих рамокМетки для ограничивающих рамок, возвращенные как
M категориальный массив -by-1, если вход является одним тестовым изображением.
T массив ячеек -by-1, если вход является массивом тестовых изображений. T - количество тестовых изображений в массиве. Каждая камера массива содержит категориальный вектор M -by-1, содержащий имена классов объектов.
M - количество ограниченных рамок, обнаруженных в изображении.
detectionResults - Результаты обнаруженияРезультаты обнаружения, возвращенные как 3-столбцевая таблица с именами переменных, Boxes, Scores и Labels. Столбец Boxes содержит M на 4 матрицы M ограничивающих прямоугольников для объектов, найденных на изображении. Каждая строка содержит ограничивающий прямоугольник как вектор с 4 элементами в формате [x, y, width, height]. Формат задает положение и размер верхнего левого угла в пикселях ограничивающего прямоугольника на соответствующем изображении.
CombinedDatastore | forward | imageDatastore | predict | TransformedDatastore | yolov3ObjectDetector
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.