Перейти к содержимому
Compvision.ru

mrgloom

Пользователи
  • Количество публикаций

    2 302
  • Зарегистрирован

  • Посещение

  • Days Won

    142

Сообщения, опубликованные пользователем mrgloom


  1. Цитата

    Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, performance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported.

    https://github.com/BVLC/caffe/blob/master/docs/multigpu.md


  2. Кстати тут вроде описано про модель

    https://github.com/BVLC/caffe/blob/master/docs/multigpu.md

    Цитата

    The current implementation uses a tree reduction strategy. e.g. if there are 4 GPUs in the system, 0:1, 2:3 will exchange gradients, then 0:2 (top of the tree) will exchange gradients, 0 will calculate updated model, 0->2, and then 0->1, 2->3.

    Так что не совсем так как я сказал.


  3. Цитата

    что если есть TBB, то OpenMP задействовано не будет?

    Ну да там вроде исключающие дефайны.

    Я не уверен что в OpenCV всё сделано через cv::parallel_for_

     

    IPP да это скорее performance primitives, быстрые конструкции типа SSE, для ускорения, а не для распараллеливания.

     

    Чтобы понять что пересборка что то даёт надо найти какой то код  в opencv который использует cv::parallel_for_  или OpenMP и т.д. в явном виде и написать сентетический тест.


  4. Надо сначала понять какая модель параллелизма там.

    Мне кажется что происходит примерно так :

    1. На 1 GPU прогнали batch, проапдейтили веса, повторили.

    2. На N GPU прогнали batch для каждого GPU, проапдейтили N раз веса у каждого GPU (порядок не важен?), повторили.

    Цитата

    Parallelism: the -gpu flag to the caffe tool can take a comma separated list of IDs to run on multiple GPUs. A solver and net will be instantiated for each GPU so the batch size is effectively multiplied by the number of GPUs. To reproduce single GPU training, reduce the batch size in the network definition accordingly.

    Т.е. по сути можно увеличить итоговый batch size, оставя на каждом GPU такой же как был до этого на 1 GPU.

    Caffe и так поддерживает флаг -gpu all, так что непонятно что там в этом форке добавилось.

     

    Цитата

    Могу ли я увеличить upsample layer в segnet_train.prototxt чтобы память шарилась?

    Если вопрос о том как сложить память всех GPU в 1 кусок, то думаю так просто это нельзя сделать. Это можно было бы сделать если первые k1 слоев лежали на первом GPU, k2 последующих на втором GPU и т.д. но я не знаю как это сделать в Caffe.


  5. Вопрос по коду

    void transformImg(Mat& img,vector<Point2f>& src_pts,Mat& Tau,Mat& dst)

    https://github.com/Smorodov/TILT-Cpp-port/blob/master/src/TILT.cpp#L49

    1. Почему мы сразу не берем Tau, которая как я понимаю и есть матрица перспективного преобразования, а ищем по точкам?

    2. Как решается проблема: когда мы берем некий кроп от изображения и варпаем то на краях будет черная область \ либо не валидная старая которая по идее будет мешать оптимизации? По идее надо брать всегда рамку заведомо меньше чем изображение, чтобы при любом варпе не было таких областей.

     


  6. Допустим что камера двигается параллельно плоскости, т.е. возможен только сдвиг по x,y.

    Камера снимает видео, мы бьем видео на кадры, используем phaseCorrelate для нахождения сдвига, весь bundle adjustment в этом случае сводится к решению разреженной системы линейной уравнений.

    Но тут есть несколько вопросов

    1. Какой выбрать критерий для отфильтровывания ложных срабатываний, допустим камера движется не совсем равномерно и мы не знаем какое кол-во кадров перекрывается в реальности или не хотим задавать это значение жестко.

    2. Что если на некоторых кадрах мы получили неправильные x,y и это получились выбросы, как их отфильтровать? Или какой должен быть робастный метод решения линейной системы?

    3. Как в идеале проверять геометрическую адекватность восстановленной панорамы, если наносить на снимаемую поверхность метки это будет не честно т.к. упрощает задачу.

     


  7. Какая может быть методика настройки детектора на видео \ группу видео?

    Допустим есть детектор из opencv в нём есть некие параметры, которые надо настроить под конкретное видео, как это сделать с наименьшими усилиями?

    Пока в голову приходит только выдрать несколько кадров из видео, разметить там bounding box'ы и по этим данными считать некую метрику как  PASCAL VOC challenge(intersection over union).

    http://stackoverflow.com/questions/22314949/compare-two-bounding-boxes-with-each-other-matlab

    Насколько это применимо к видео? там могут быть смазанные кадры, т.е. надо брать какие то особые кадры?

    Как сливать детекции с N последовательных фреймов в 1 объект? Нужен трекинг?

    Вышеобозначенная метрика не учитывает случая, когда например объект присутвует на 10 кадрах, а мы его сдетектировали на 2 из 10. Как это учитывать? Делать разметку каждого кадра?


  8. Вот такой пример есть

    https://introlab.github.io/find-object/

    https://github.com/introlab/find-object/wiki/BeersWall

    Кстати эту задачу для мерчендайзинга кто то уже коммерчески решил?

     

    по Texture object detction

    Так там надо облако точек, т.е. надо 2 камеры или кинект?


  9. А есть ли возможность поставить на серверное оборудоавние  GTX 980Ti или GTX Titan? Какой должен быть формфактор и поддержка какого слота (PCI-E 3.0?) и поддержка чего если несколько карт?


  10. Там же есть из коробки codeblocks-16.01mingw-setup.exe

    http://www.codeblocks.org/downloads/26

    Я точно не уверен, но x32 должно хватить, т.к. есть кросскомпиляция же.

    Потом по идее вам надо собрать OpenCV используя MinGW.

    http://kevinhughes.ca/tutorials/opencv-install-on-windows-with-codeblocks-and-mingw/

    http://stackoverflow.com/questions/10860352/getting-started-with-opencv-2-4-and-mingw-on-windows-7

×