45 bop challenge

This commit is contained in:
shalenikol 2023-07-14 09:15:51 +00:00 committed by Igor Brylyov
parent e8d3bbec5b
commit 36881d5ae8
2 changed files with 95 additions and 0 deletions

View file

@ -0,0 +1,94 @@
---
id: cv-perception-methods
title: Методы машинного восприятия
---
Обзор методов обнаружения, сегментации и оценки 6D-позиций объектов.
## Соревнование BOP (benchmark of pose estimation)
[Официальный сайт проекта](https://bop.felk.cvut.cz/home/)
### О самой задаче оценки позиции
Оценка методов 6D-локализации объекта является сложной задачей. На изображении может быть видна только часть поверхности объекта из-за самоокклюзии и/или окклюзии другими объектами. Видимая часть объекта может иметь несколько подгонок к 3D-модели объекта. Как следствие, может быть много поз 6D, соответствующих изображению. Часто бывает трудно явно перечислить все согласованные позы.
Наиболее широко используемыми функциями позы-ошибки были $ADD$/$ADI$ [1,2], где ошибка рассчитывается как среднее расстояние от вершин модели объекта в истинной позе до вершин модели в предполагаемой позе. Расстояние измеряется между соответствующими вершинами, если все виды объекта различимы ($ADD$). В противном случае для объектов с неразличимыми видами расстояние измеряется между заданной вершиной и ее ближайшим соседом в трехмерном пространстве, который не обязательно может быть соответствующей вершиной ($ADI$). $ADI$ может давать неинтуитивно низкие ошибки даже для различимых поз. Таким образом, объекты, оцененные с помощью $ADI$, имеют тенденцию давать низкие ошибки позы, хотя предполагаемые позы могут быть визуально не совсем хорошо выровнены. Еще одно ограничение $ADD$/$ADI$ связано с высокой зависимостью от геометрии модели объекта и плотности дискретизации его поверхности — на среднем расстоянии преобладают более высокочастотные части поверхности, такие как резьба. Максимальное расстояние, используемое в $MSSD$ и $MSPD$, в меньшей степени зависит от плотности отбора образцов поверхности.
Обработка $MSSD$ и $MSPD$ создает неоднозначность из-за глобальной симметрии объектов. $MSSD$ подходит для роботизированного захвата, а $MSPD$ — для приложений дополненной реальности. Однако, поскольку оба рассчитываются по всей поверхности модели, несоосность невидимых частей штрафуется. Это может быть нежелательно для таких приложений, как роботизированное манипулирование присосками, где имеет значение только выравнивание видимой части.
$VSD$ рассчитывается только по видимой части объекта. Он оценивает выравнивание формы объекта, но не его цвета — это связано с тем, что большинство моделей объектов, в настоящее время включенных в BOP, имеют запеченные тени и отражения в своих текстурах, что затрудняет надежную оценку выравнивания цвета. Поскольку каждый из $VSD$, $MSSD$ и $MSPD$ имеет отношение к разным целевым приложениям, BOP использует все три для оценки.
Организаторы соревнования создали контрольный показатель BOP в области оценки положения объекта - $AR$ (средний отзыв). C 2019 года он изменился с 56,9 AR до 83,7 AR в 2022 году. Максимальный показатель - 100 AR.
Каждому методу для обучения на вход подаётся набор обучающих RGB-D изображений, показывающих объекты, аннотированные реальными 6D-позами, и 3D-сетчатые модели (mesh) объектов с цветной текстурой. Для тестирования предоставляется невидимое во время обучения RGB-D изображение и список мест обнаружений объектов на нём. На выходе метод выдаёт список 6D-поз объектов, в соответствии с входным списком.
В [новом раунде](https://bop.felk.cvut.cz/challenges/bop-challenge-2023/) BOP Challenge в 2023 году, помимо задач обнаружения, сегментации и оценки 6D-позиций объектов, представленных на момент обучения, добавлена новая актуальная задача по обнаружению, сегментации и оценке позиций объектов "невидимых" во время обучения. В новой задаче конкурирующие методы должны изучать новые объекты (3D-сетчатые модели) на коротком этапе адаптации объекта - максимум 5 минут на объект, а затем распознавать объекты на изображениях в различных сценах. Решения для такой задачи позволят кардинально увеличить масштабируемость применяемых методов.
### Методика оценки результатов
Ошибка расчетной позы относительно истинной позы рассчитывается с помощью трех функций погрешности позы:
* $VSD$ (несоответствие видимой поверхности), которое рассматривает неразличимые позы как эквивалентные, рассматривая только видимую часть объекта.
* $MSSD$ (максимальное расстояние до поверхности с учетом симметрии) , которое учитывает набор предварительно определенных глобальных симметрий объектов и измеряет отклонение поверхности в 3D.
* $MSPD$ (максимальное спроецированное расстояние с учетом симметрии), которое учитывает симметрию объекта и измеряет воспринимаемое отклонение.
Предполагаемая поза считается правильной относительно функции ошибки позы ***e***, если $e < \Theta_{e}$, где $e \in {VSD, MSSD, MSPD}$ и $\Theta_{e}$ является порогом правильности.
Доля экземпляров аннотированных объектов, для которых оценивается правильная поза, называется отзывом. Средний отзыв по функции $e$, обозначаемый как $AR_{e}$, определяется как среднее значение частоты отзыва, рассчитанное для нескольких настроек порога $\Theta_{e}$. Точность метода в конкретном наборе данных D рассчитывается как $AR_{D} = (AR_{VSD} + AR_{MSSD} + AR_{MSPD}) / 3$, которая вычисляется по оценочным позам всех объектов из $D$. Общая точность основных наборов данных $AR_{C}$ определяется как среднее значение для каждого набора данных $AR_{D}$.
### Инструменты оценки алгоритмов
Важной частью BOP Challenge является открытая библиотека на Python [bop_toolkit](https://github.com/thodan/bop_toolkit/) для загрузки и манипуляции с датасетами, расчёта ошибок оценки 6D-поз, а также рендеринга и визуализации. Позволяет самостоятельно провести анализ методов оценки 6D-поз, в соответствии с областью применения этих методов. В библиотеке присутствуют не только те 3 функции расчёта погрешности, которые участвуют в официальной части соревнования, но и дополнительные (например ADD/ADI), которые применялись в других тестах.
### Ссылки
[1] Hodaň et al.: [On Evaluation of 6D Object Pose Estimation](http://cmp.felk.cvut.cz/~hodanto2/data/hodan2016evaluation.pdf), ECCVW 2016.
[2] Hinterstoisser et al.: [Model based training, detection and pose estimation of texture-less 3d objects in heavily cluttered scenes](http://cmp.felk.cvut.cz/~hodanto2/data/hodan2016evaluation.pdf), ACCV 2012.
## Метод оценки 6D позиций объектов Megapose
- Исходный код [MegaPose](https://github.com/megapose6d/megapose6d) на Github
Идея метода заключается в том, что модель объекта передаётся в режиме исполнения вместе с RGB-изображением с выделенной областью, содержащей данный объект, которая получена на этапе обнаружения объекта (ObjectDetection).
Для запуска проекта создается среда выполнения под управлением conda.
Должны быть установлены две переменные окружения:
* MEGAPOSE_DIR: Корневой каталог проекта.
* MEGAPOSE_DATA_DIR: Корневой каталог для входных и выходных данных.
### Структура входных данных
```
$MEGAPOSE_DATA_DIR/examples/my_object/
inputs/object_data.json
meshes/my_object/fork_001.ply
image_rgb.png
[image_depth.png]
camera_data.json
```
- `image_rgb.png` - представляет собой RGB-изображение сцены. Рекомендуется использовать соотношение сторон 4:3.
- `image_depth.png` (необязательно) содержит измерения глубины со значениями в формате mm. Можно пропустить этот файл, если нет измерений глубины.
- `camera_data.json` содержит внутреннюю матрицу камеры 3x3 K и разрешение камеры в [h,w] формате.
```json
{"K": [[605.9547119140625, 0.0, 319.029052734375], [0.0, 605.006591796875, 249.67617797851562], [0.0, 0.0, 1.0]], "resolution": [480, 640]}
```
- `inputs/object_data.json` содержит список обнаружений объектов. Для каждого обнаружения предоставляется 2D ограничивающая рамка на изображении (в [xmin, ymin, xmax, ymax] формате) и метка объекта. Ограничительная рамка не обязательно должна быть предельно точной.
```json
[{"label": "my_object", "bbox_modal": [384, 234, 522, 455]}]
```
- `meshes/my_object` это каталог, содержащий mesh объекта. Ожидается, что единицы mesh будут в миллиметрах. В этом примере используется mesh в .ply формате. Код также поддерживает объекты в формате .obj.
### Запуск оценки положения объекта производится с помощью следующей команды:
```
python -m megapose.scripts.run_inference_on_example my_object --run-inference
```
По умолчанию используется только RGB-изображение без карты глубины.
### Предыдущая команда создаст следующий файл:
```
$MEGAPOSE_DATA_DIR/examples/my_object/
outputs/object_data.json
```
Этот файл содержит список объектов с их предполагаемыми позами. Для каждого объекта отмечается предполагаемая поза TWO (кадр мировых координат соответствует кадру камеры). Она состоит из кватерниона(3D-вращение) плюс 3D-смещение:
```json
[{"label": "my_object", "TWO": [[0.5453961536730983, 0.6226545207599095, -0.43295293693197473, 0.35692612413663855], [0.10723329335451126, 0.07313819974660873, 0.45735278725624084]]}]
```

View file

@ -27,6 +27,7 @@ module.exports = {
'technologies/open-source-robots-and-tools',
'technologies/robonomics',
'technologies/machine-learning-in-robotics',
'technologies/cv-perception-methods',
'technologies/wrs2020-assembly-challenge',
'technologies/plansys2',
'technologies/ASP-overview',