Какой самый надежный / самый простой алгоритм / метод машинного обучения для обнаружения объектов c с помощью камеры ZED? - PullRequest
0 голосов
/ 19 марта 2020

Я делаю школьный проект с использованием камеры ZED (ни ZED 2, ни Mini), и до недели go у меня сложилось впечатление, что встроенного API было достаточно для того, что мне нужно. Короче говоря, я использую режим Camera Sensing - который возвращает облако точек 760x1280 с каждой точкой, имеющей расстояние от камеры в этой точке изображения, которое собирает камера, - чтобы определить, движется ли движущийся робот к объекту, и если да, то в каком направлении повернуть. Я не обязательно пытаюсь определить , что такое объекты, но просто , если есть какие-либо объекты. Я очень новичок в области машинного обучения, и хотя я знаю, что эта проблема, вероятно, очень проста, мне просто не хватает предыстории или времени, чтобы полностью вникнуть в проблему, и поэтому я ' я прошу толкнуть в правильном направлении.
Чтобы подвести итог, мне нужно определить, приближается ли робот к объекту любого размера, и если да, то как далеко находится объект в дополнение к тому, какое направление лучше всего подходит для навигации вокруг него. Камера имеет API для TensorFlow, PyTorch и нескольких других систем машинного обучения. После некоторых исследований выяснилось, что TensorFlow был наиболее поддерживаемым / в режиме реального времени, и поэтому при использовании TensorFlow / Keras это вариант, который предпочтительнее, однако любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 19 марта 2020

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

Затем используйте простую трехмерную модель CNN для обучения классификатора. Вы можете использовать tenorflow.keras, чтобы быстро создать прототип модели.

Вот так выглядит очень простой 3D CNN в Керасе.

model = Sequential()
model.add(Conv3D(32, kernel_size=(3, 3, 3), activation='relu', kernel_initializer='he_uniform', input_shape=sample_shape))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Conv3D(64, kernel_size=(3, 3, 3), activation='relu', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Flatten())
model.add(Dense(256, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(2, activation='softmax')) # 2 as you have 2 classes
1 голос
/ 19 марта 2020

Хотя вопрос немного неясен, когда вы запрашиваете самый надежный и самый простой алгоритм ML , для камеры ZED уже есть несколько опций. Zed yolo и Zed tenorflow РЕПО должны быть хорошим вариантом для вас. Их легко настроить и запустить.

Они достигают следующих целей, которые вы ищете:

  • Обнаружение объекта перед камерой.
  • Сообщить о его расстояние от камеры.

Оба репозитория используют демонстрационные веса, обученные на наборе данных COCO . Если ваши объекты не соответствуют объектам в наборе данных COCO, вам следует подумать о том, чтобы настроить собственную сеть для своих пользовательских объектов. Вы можете взглянуть на дар knet репо , как это сделать для Йоло.

...