Существует ли реализация k-NN на графическом процессоре / распараллеленном python, которая не перестраивает KDTree при добавлении или вычитании одной точки?

#python #tensorflow #opencl #knn #point-clouds

#python #tensorflow #opencl #knn #облака точек

Вопрос:

У меня есть динамическое облако точек в 3D, и я хотел бы использовать nanoflann для динамического добавления / вычитания точек между запросами без перестройки дерева (как показано здесь):

https://github.com/jlblancoc/nanoflann/blob/master/examples/dynamic_pointcloud_example.cpp

Я также нашел оболочку python для nanoflann (потрясающе!):

https://github.com/u1234x1234/pynanoflann

Это здорово! Однако скорость чрезвычайно важна для моего приложения, поэтому мне почти наверняка потребуется распараллелить эту реализацию k-NN. Существует ли существующая реализация или оболочка python для такой динамической реализации k-NN, написанной с использованием OpenCL или CUDA? Я хотел проверить, существует ли она, прежде чем писать свою собственную. Эта «динамика» отличается от желания иметь возможность указывать новый k с каждым запросом. Я не возражаю, если это одно KDTree с набором k. Мне просто нужно иметь возможность удалять или добавлять точки между запросами без перестройки KDTree.

Заранее благодарю вас!

Комментарии:

1. Какой алгоритм вы бы использовали, чтобы сделать это без перестройки дерева или оптимизации этого?

2. Это пример реализации, который вы ищете github.com/artifabrian/dynamic-knn-gpu