APXANGEL 0 Report post Posted February 8, 2016 Всем привет, хотелось бы освоить поиск предметов в кадре с помощью нейронных сетей, т.е. не то что на кадре есть объект / нет объекта, а получить его координаты, так вроде обнаружение людей в робомобилях работает к примеру. Как я понимаю, тут лучше всего копать в сторону свёрточных. До этого с нейронными сетями дело вообще не имел. Может кто подсказать что читать на эту тему, желательно на русском? Share this post Link to post Share on other sites
BeS 53 Report post Posted February 8, 2016 На русском ничего. Курить в сторону RCNN etc. Share this post Link to post Share on other sites
APXANGEL 0 Report post Posted February 8, 2016 Мда, отсутствие материала на русском, прям плачевно, а сколько обычно по времени занимает обработка одного изображения с использованием этой штуки на обычном компьютере на CPU и на GPU? Share this post Link to post Share on other sites
mrgloom 242 Report post Posted February 8, 2016 секция pedestrian detection http://rodrigob.github.io/are_we_there_yet/build/ 1 Share this post Link to post Share on other sites
BeS 53 Report post Posted February 8, 2016 2 hours ago, APXANGEL said: Мда, отсутствие материала на русском, прям плачевно, а сколько обычно по времени занимает обработка одного изображения с использованием этой штуки на обычном компьютере на CPU и на GPU? На CPU не пробовал, но на Titan X почти в реалтайме пашет. Share this post Link to post Share on other sites
iskees 32 Report post Posted February 8, 2016 Вообще было бы интересно почитать про то как работают такие штуки (тот же deepLab ), может кто в теме статейку напишет. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 8, 2016 Детектор пешеходов: http://mmlab.ie.cuhk.edu.hk/projects/TA-CNN/ 1 Share this post Link to post Share on other sites
APXANGEL 0 Report post Posted February 10, 2016 Надеюсь я ошибаюсь, но я правильно понимаю, что системы поиска объектов в кадре на основе свёрточных нейронных сетей сначала строят некий образ (шаблон) искомого предмета, а потом ищут его в кадре с помощью тупого перебора масштабов и поворотов? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 10, 2016 Ну часто не совсем тупого, насколько я понял после неглубокого вникания в принцип RCNN, там что-то близкое к фильтру частиц, надергивают случайным образом прямоугольных областей, смотрят какие классы наиболее вероятны, если вероятности больше пороговых берут области уже из окрестностей предыдущих. Так сгущают до некоторого предела. Нейронки могут сами справляться с поворотами, и небольшими вариациями масштаба если Вы их этому обучите см. прикрепленную картинку. Можно просто делать свертку слоями нейронки, результат на картинке. В любом случае это не реалтайм. У меня уходит от нескольких секунд на небольшие картинки до пары минут на большие. Share this post Link to post Share on other sites
BeS 53 Report post Posted February 10, 2016 4 hours ago, Smorodov said: Ну часто не совсем тупого, насколько я понял после неглубокого вникания в принцип RCNN, там что-то близкое к фильтру частиц, надергивают случайным образом прямоугольных областей, смотрят какие классы наиболее вероятны, если вероятности больше пороговых берут области уже из окрестностей предыдущих. Так сгущают до некоторого предела. Нейронки могут сами справляться с поворотами, и небольшими вариациями масштаба если Вы их этому обучите см. прикрепленную картинку. Можно просто делать свертку слоями нейронки, результат на картинке. В любом случае это не реалтайм. У меня уходит от нескольких секунд на небольшие картинки до пары минут на большие. Faster-RCNN у меня работает ~100ms на кадр 1280x720 p.s. а у вас на картинке - это что-то вроде Selective Search поверх feature map'ки ? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 10, 2016 Да нет, у меня свертка сетью сразу дает распределение вероятностей объектов. Для фиксированного масштаба объектов картинка 1024х1024 считается 0.2 - 0.3 секунды. Дальше просто поиск макимумов и non-max suppression. В общем, сплошной брутфорс Share this post Link to post Share on other sites
BeS 53 Report post Posted February 10, 2016 39 minutes ago, Smorodov said: Да нет, у меня свертка сетью сразу дает распределение вероятностей объектов. Т.е. на выходе не полносвязанная сетка, а что-то типа feature map, как в томже RCNN? Ну для брутфорса выглядит очень даже не плохо) Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 10, 2016 Ну feature map для меня как-то не очень однозначный термин, но может быть и так. Для каждой точки изображения выдается выход с soft max слоя, архитектура сети аналогична LeNet. Вот тут почитайте: http://cs231n.github.io/convolutional-networks/#convert Share this post Link to post Share on other sites
BeS 53 Report post Posted February 10, 2016 3 hours ago, Smorodov said: Ну feature map для меня как-то не очень однозначный термин, но может быть и так. Для каждой точки изображения выдается выход с soft max слоя, архитектура сети аналогична LeNet. Вот тут почитайте: http://cs231n.github.io/convolutional-networks/#convert Любопытно. А видях нету? В динамике было бы интересно посмотреть как ваша сетка работает. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 10, 2016 Да она молча работает нету динамики. Бегут строчки, 5 штук в секунду. От 2 сек для чего то типа 800х600, до 2 мин для изображений типа 3000х4000. А потом результат выдает. Share this post Link to post Share on other sites
APXANGEL 0 Report post Posted February 11, 2016 А нет на эту тему туториала какого? Ну там с с++ кодом, комментами, почему так, а не иначе. Ну т.е., чтоб вся настройка, программирование, обучающие выборки и т.п. для поиска какого-то объекта были собраны и можно было бы просто запустить, поиграться параметрами? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 11, 2016 Скачайте CAFFE, torch или theano, поиграйте, обучите какую нибудь сетку, поменяйте параметры, почитайте мануалы. Лучше начинать это все под Ubuntu, под Win задолбаетесь. CAFFE выделил не просто так, я думаю для начала этот фреймворк оптимален. И да, там есть пример использования на CPP. Далее можете посмотреть RCNN, он построен на базе CAFFE. Начнете чувствовать что происходит с сетью при изменении параметров, сможете сворганить на ней детектор. Мануалов в разжеванной форме нет по объективным причинам, просто потому, что это на приличную такую книжку тянет, причем опирающуюся на твердое знание статистики, линейной алгебры, а меняется все быстрее чем такие книжки пишутся. Share this post Link to post Share on other sites
BeS 53 Report post Posted February 11, 2016 6 hours ago, Smorodov said: Скачайте CAFFE, torch или theano, поиграйте, обучите какую нибудь сетку, поменяйте параметры, почитайте мануалы. Лучше начинать это все под Ubuntu, под Win задолбаетесь. CAFFE выделил не просто так, я думаю для начала этот фреймворк оптимален. И да, там есть пример использования на CPP. Далее можете посмотреть RCNN, он построен на базе CAFFE. Начнете чувствовать что происходит с сетью при изменении параметров, сможете сворганить на ней детектор. Мануалов в разжеванной форме нет по объективным причинам, просто потому, что это на приличную такую книжку тянет, причем опирающуюся на твердое знание статистики, линейной алгебры, а меняется все быстрее чем такие книжки пишутся. Ну, кстати, Бенджио вовсю пишет книгу по Deep Learning'у и черновики уже вполне читабельны. Правда там только теория, без практических примеров. з.ы. а вообще лучшая книга для старта - это пожалуй "Нейронные сети: полный курс" Хайкина, там даже слегонца рекурентные сети затрагиваются. з.з.ы. а с практическими примерами да, совсем беда, особенно не радует наличие 100500 различных фреймворков... Share this post Link to post Share on other sites
mrgloom 242 Report post Posted February 12, 2016 Насколько я понимаю сейчас нет примера для caffe для обычного sliding window detection, а есть только с selective search(который в RCNN). https://github.com/BVLC/caffe/issues/197 Overfeat вроде как умеет и object detection. Share this post Link to post Share on other sites
BeS 53 Report post Posted February 12, 2016 10 hours ago, mrgloom said: Насколько я понимаю сейчас нет примера для caffe для обычного sliding window detection, а есть только с selective search(который в RCNN). https://github.com/BVLC/caffe/issues/197 Overfeat вроде как умеет и object detection. А в чем проблема взять какого-нибудь виолу джонса для генерации пропозалов и потом прогонять сетку для найденых гипотез? Share this post Link to post Share on other sites
iskees 32 Report post Posted February 12, 2016 Как я понял вы обсуждаете обычное скользящее окно в котором классификатор это нейронная сеть, а мне казалось что придумали какой-то метод использования сетей для сегментации изображения, а потом уже сегменты классифицируются(или одновременно как то). В демонстрации deepLab все выглядело именно так. Share this post Link to post Share on other sites
BeS 53 Report post Posted February 12, 2016 14 minutes ago, iskees said: Как я понял вы обсуждаете обычное скользящее окно в котором классификатор это нейронная сеть, а мне казалось что придумали какой-то метод использования сетей для сегментации изображения, а потом уже сегменты классифицируются(или одновременно как то). В демонстрации deepLab все выглядело именно так. Сети осуществляющие семантическую сегментацию (DeepLab, DeconvNet, SegNet etc.) - это отдельный класс сетей, который обычно рассматривают независимо от задачи детектирования объектов. Там как такового генератора гипотез, типа скользящего окна или Selective Search, вообще нету, вместо этого там полносвязанные слои сворачивают в свертку и выход сети интерпретируют как картинку. И обучают так, чтобы в выходной картинке каждый пиксель маркировался лэйблами известных ему классов. И мне кажется, что сетка Smorodov'а как раз делает что-то похожее на DeepLab) Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 13, 2016 Так и есть, только учится сетка точно так же как и в примере MNIST или других классических примерах - на вырезанных сэмплах. Лень мне попиксельную разметку делать и есть ряд других преимуществ, как и недостатков, впрочем. Share this post Link to post Share on other sites
BeS 53 Report post Posted February 13, 2016 4 hours ago, Smorodov said: Так и есть, только учится сетка точно так же как и в примере MNIST или других классических примерах - на вырезанных сэмплах. Лень мне попиксельную разметку делать и есть ряд других преимуществ, как и недостатков, впрочем. При нечеткой разметке мне видится существенной только проблема того, что база должна быть ооочень большой, чтобы сеть обобщилась, при разметке с сегментацией сетка должна сойтись быстрее. Зато в долгосрочной перспективе такой подход сэкономит кучу времени при подготовке баз. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted February 13, 2016 Так и есть, по 2М сэмплов каждого класса. Share this post Link to post Share on other sites