Open Source 6D Pose Estimation подборка ссылок

This commit is contained in:
movefasta 2023-08-16 23:15:54 +03:00
parent 36881d5ae8
commit 62267174ac
No known key found for this signature in database
GPG key ID: 74C6469794E996AD

View file

@ -44,19 +44,79 @@ $VSD$ рассчитывается только по видимой части
[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
## Методы оценки 6D позиций объектов
- Исходный код [MegaPose](https://github.com/megapose6d/megapose6d) на Github
Преимущественно с открытым исходным кодом или подходящие под сценарии Робосборщика (априори известная CAD-модель объекта).
### [Gen6D](https://github.com/liuyuan-pal/Gen6D) '2022
Алгоритм безмодельной оценки положения объекта с 6 степенями свободы на основе изображений RGB.
Интересный алгоритм, для которого требуется относительно небольшая предварительная подготовка объекта для оценки положения. На отдельных кадрах из реальной видеосъёмки объекта помечается область объекта и указываются оси положения. Затем, с помощью открытого ПО для обработки облаков точек [CloudCompare](https://www.cloudcompare.org/) формируется облако точек объекта (файл *.ply) для алгоритма оценки положения.
### [RADet](https://github.com/YangHai-1218/RADet) '2023
Стратегия выборки, ориентированная на видимую часть объекта, по версии разработчиков даёт более точную оценку положения объектов особенно в сильно загромождённых сценах.
### [SCFlow](https://github.com/YangHai-1218/SCFlow) '2023
Проект, основанный на оптимизации метода уточнения позы объекта, за счёт ограничения области сопоставления трёхмерной формой объекта на следующем шаге в потоке изображений.
### [RCVPose 3D](https://github.com/aaronWool/rcvpose3d) '2022
Оценка положения на основе облака точек методом каскадного выбора по ключевым точкам.
### [ZebraPose](https://github.com/suyz526/ZebraPose) '2022
В этой работе предлагается дискретный дескриптор поверхности объекта, который эффективно кодирует эту поверхность. И представлена стратегия обучения от грубой до точной, которая позволяет прогнозировать точное соответствие. Затем, сопоставляя предсказанные коды с поверхностью объекта на изображении и используя решатель PnP, оценивается положение 6DoF.
### [SINGLESHOTPOSE](https://github.com/microsoft/singleshotpose) '2018
Бесшовное прогнозирование положения объекта в режиме одиночного 6D-снимка в реальном времени. Здесь предлагается однократный подход для одновременного обнаружения объекта на изображении RGB и прогнозирования его 6D-позиции, не требуя нескольких этапов или проверки нескольких гипотез.
### [Pix2Pose](https://github.com/kirumang/Pix2Pose) '2022
Метод оценки позы, который предсказывает 3D-координаты каждого пикселя объекта без текстурированных моделей. Метод устойчив к окклюзии, для чего используются последние достижения в области генеративно-состязательного обучения для точного восстановления закрытых частей.
Есть реализация detection и 6D pose estimation для ROS.
### [GDR-Net](https://github.com/THU-DA-6D-Pose-Group/GDR-Net) '2023
Сеть прямой регрессии на основе геометрии для монокулярной оценки положения объекта 6D. В этой работе проведено углубленное исследование как прямых, так и косвенных методов регрессии позы, и предложена простая, но эффективная сеть прямой регрессии, управляемая геометрией (GDR-Net), для сквозного изучения позы 6D из промежуточных геометрических представлений на основе плотного соответствия.
### [DeepIM](https://github.com/liyi14/mx-DeepIM) '2019
Глубокое итеративное сопоставление для оценки позы 6D. В этой работе предлагается глубокая нейронная сеть для сопоставления поз 6D под названием DeepIM. Учитывая начальную оценку позы, эта сеть может итеративно уточнять позу, сопоставляя визуализированное изображение с наблюдаемым изображением.
### [DenseFusion](https://github.com/j96w/DenseFusion) '2019
Основная техническая задача при оценке положения 6D-объекта по изображению RGB-D заключается в том, чтобы полностью использовать два взаимодополняющих источника данных. DenseFusion — это гетерогенная архитектура, которая обрабатывает два источника данных по отдельности и использует новую плотную сеть слияния для извлечения встраивания плотных объектов по пикселям, по которым оценивается поза.
### [FS6D](https://github.com/ethnhe/FS6D-PyTorch) '2023
Здесь изучается новая задача оценки позы 6D-объекта с несколькими кадрами в открытом наборе: оценка 6D-позы неизвестного объекта с помощью нескольких вспомогательных видов без моделей САПР и дополнительного обучения.
Код на данный момент недоступен
### [6-PACK](https://github.com/j96w/6-PACK) '2020
[Сайт проекта](https://sites.google.com/view/6packtracking)
6-PACK - подход глубокого обучения к отслеживанию положения 6D-объекта на уровне категории на основе данных RGB-D. Метод отслеживает в режиме реального времени экземпляры новых объектов известных категорий объектов, таких как миски, ноутбуки и кружки. 6-PACK учит компактно представлять объект с помощью нескольких ключевых точек 3D, на основе которых можно оценить межкадровое движение экземпляра объекта посредством сопоставления ключевых точек.
### [DoUnseen](https://github.com/AnasIbrahim/image_agnostic_segmentation) '2023
[dataset DoPose](https://zenodo.org/record/6103779)
Классификация объектов с нулевым выстрелом для роботизированного захвата. Эта библиотека содержит конвейер для обнаружения объекта без обучения.
Большинство современных исследований сегментации объектов для роботизированного захвата сосредоточено на сегментации объектов на уровне класса (например, коробка, чашка, бутылка), закрытых наборах (конкретных объектах набора данных, например, наборе данных YCB) или сопоставлении шаблонов на основе глубокого обучения. В данной работе рассматриваются открытые множества, в которых количество классов неизвестно, варьируется и без предварительного знания о типах объектов. Каждый конкретный объект обозначается как свой отдельный класс. Цель этой работы — разработать детектор объектов с нулевым выстрелом, который не требует обучения и может добавить любой объект в качестве класса, просто сделав несколько изображений объекта.
### [NOPE](https://github.com/nv-nguyen/nope): Novel Object Pose Estimation from a Single Image '2023
Оценка позы нового объекта по одному изображению. Предлагается подход, который использует одно изображение нового объекта в качестве входных данных и предсказывает относительное положение этого объекта на новых изображениях без предварительного знания 3D-модели объекта и без необходимости обучения новым объектам и категориям.
### [PIZZA](https://github.com/nv-nguyen/pizza) '2023
Мощный подход Zero-Shot Zero-CAD к отслеживанию 6 DoF только по изображениям. Метод отслеживания 6D-перемещений объектов в видео-последовательностях RGB, когда ни обучающие изображения, ни 3D-геометрия объектов недоступны. Таким образом, в отличие от предыдущих работ, этот метод может мгновенно рассматривать неизвестные объекты в открытом мире, не требуя какой-либо предварительной информации или определенного этапа обучения. Рассматриваются две архитектуры, одна из которых основана на двух кадрах, а другая опирается на кодировщик Transformer, который может использовать произвольное количество прошлых кадров.
### [Megapose](https://github.com/megapose6d/megapose6d) '2022
Идея метода заключается в том, что модель объекта передаётся в режиме исполнения вместе с RGB-изображением с выделенной областью, содержащей данный объект, которая получена на этапе обнаружения объекта (ObjectDetection).
Для запуска проекта создается среда выполнения под управлением conda.
Должны быть установлены две переменные окружения:
* MEGAPOSE_DIR: Корневой каталог проекта.
* MEGAPOSE_DATA_DIR: Корневой каталог для входных и выходных данных.
### Структура входных данных
#### Структура входных данных
```
$MEGAPOSE_DATA_DIR/examples/my_object/
inputs/object_data.json
@ -77,13 +137,13 @@ $MEGAPOSE_DATA_DIR/examples/my_object/
```
- `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
@ -91,4 +151,16 @@ $MEGAPOSE_DATA_DIR/examples/my_object/
Этот файл содержит список объектов с их предполагаемыми позами. Для каждого объекта отмечается предполагаемая поза TWO (кадр мировых координат соответствует кадру камеры). Она состоит из кватерниона(3D-вращение) плюс 3D-смещение:
```json
[{"label": "my_object", "TWO": [[0.5453961536730983, 0.6226545207599095, -0.43295293693197473, 0.35692612413663855], [0.10723329335451126, 0.07313819974660873, 0.45735278725624084]]}]
```
```
## Методы сегментации
### [CNOS](https://github.com/nv-nguyen/cnos) '2023
Надежная основа для сегментации новых объектов на основе CAD, Segmenting Anything и DINOv2
## Вспомогательные инструменты
### [6DPoseAnnotator](https://github.com/sakizuki/6DPoseAnnotator) (2021)
Интерактивный инструмент аннотации позы с 6 степенями свободы (DoF) с использованием обработки облака точек.