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

Pechkin80

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

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

  • Посещение

  • Days Won

    1

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


  1. В 1/8/2019 at 13:56, iskees сказал:

    Я имел ввиду писать не SVM и HOG, а взять уже готовую реализацию из opencv или dlib. Все что вам нужно там есть. Остается только написать код для  обучения и для последующей детекции . 

    Тема с SVM+HOG меня порадовала, но тормозит если в рилтайме.  И решение я вижучтоб получше разобраться с SVM, с тем что делается с HOG чтобы стать датасетом для SVM и вообще для распознования в реальном времени надо гдето найти инфу по вычислительной сложности для таких "тяжёлых" алгоритмов.


  2. собственно у меня вопрос. Надо ли проводить изучение кода DLib если я хочу использовать не только признаки HOG для SVM ?

    И как быть если я хочу признаки HOG использовать для другого классификатора ?


  3. Здравствуйте, подскажите пожалуйста насчёт стекинга. Прочитал по 20 раз статьи и стокаже раз видео и не врубаюсь.

    В одной статье сказано: 

    выборку разбивают на части (фолды), затем последовательно перебирая фолды обучают базовые алгоритмы на всех фолдах, кроме одного, а на оставшемся получают ответы базовых алгоритмов и трактуют их как значения соответствующих признаков на этом фолде. Для получения метапризнаков объектов тестовой выборки базовые алгоритмы обучают на всей обучающей выборке и берут их ответы на тестовой.

    1) Что означает фраза "получают ответы базовых алгоритмов" ? В сысмысле оставшийся фолд используется как тестовая выборка или что за ответы ?

    И дальше там непонятно.

     

    Саму идею перекрёстной проверки понял. Сначало в одном месте всей выборки маленький кусочек назначаем тестовой выборкой, потом в другом месте кусочек назначаем тестовой выборкой


  4. 1 час назад, Nuzhny сказал:

    Получать можно в том же ffmpeg:

    1. Если не собран, то собрать ffmpeg с поддержкой cuvid. Проверка: ./ffmpeg -hwaccels

    2. При создании AVCodec вызвать avcodec_find_decoder_by_name("h264_cuvid") или avcodec_find_decoder_by_name("mjpeg_cuvid").

    3. Перед вызовом avcodec_decode_video2 устанавливать decCtx->pix_fmt = AV_PIX_FMT_CUDA

    4. Тут уже нам возвращают указатель на видеопамять в AVFrame, можно копировать её к себе и обрабатывать:

    4.1. Учитываем, что в данном случае у нас кадр не YUV420, а NV12: cudaMemcpy(data, picture->data[0], height * picture->linesize[0], cudaMemcpyDefault)

    4.2.  Хочется RGB? Вызываем nppiNV12ToBGR_709HDTV_8u_P2C3R

    4.3. Хочется засунуть в OpenCV? Вот: cv::cuda::GpuMat* gpuFrame = new cv::cuda::GpuMat(height, width, CV_8UC1, picture->data[0], picture->linesize[0])

    Выгрузить из GPU memory и сохранить? Вот: cv::Mat frame; gpuFrame->download(frame);

    4.4. Хочется отобразить кадр без копирования в ОЗУ? Создаём OpenGL окно: cv::namedWindow("wnd name", cv::WINDOW_OPENGL)

     

    Это про декодирование на CUDA и обработку кадра средствами OpenCV без копирования в системную память.

    Про TensorFlow: тут надо использовать С++ API, на Питончике такой возможности нет. Добавили такую возможность недавно в версии 1.12: вот обсуждение.

    Спасибо, интересно будет поробовать. Тогда получаеться VideoCapture class из OpenCV не используем ? Он ведь вроде как сам работает с FFMPEG ?

    И управление видеопотоком тоже надо будет через FFMPEG реализовывать. Или сам VideoCapture OpenCV прпатчить для более эффективной работы ?


  5. 1 час назад, Nuzhny сказал:

    С ip камерами  как раз всё проще. Их можно пачкой на CUDA декодировать, а потом обрабатывать изображения, не выгружая декодированные кадры из видеопамяти. Можно отдавать их, например в TensorFlow.

    Хм, можно попдробнее.... Это такой интерфейс есть чтоб получать данные уже загруженные в GPU , но декодированные? Для декодирования и обработки изображений разные библиотеки используются. Я не знаком с TensorFlow, но я пологаю. что могут потребоваться какието предварительные действия, до применения TensorFlow которых нет в TensorFlow. Очень подозрительно просто что TensorFlow представляется волшебной палочкой. Всё универсальное не всегда самоелучшее.


  6. 3 часа назад, Nuzhny сказал:

    ffmpeg тут ничего нового не придумал, а просто предоставляет обёртку над DirectShow.

    Я уже давно этой темы не касался, надеюсь, что не навру.

    Веб камеры в Windows работают через DirectShow драйвер (или WMF) и тут ничего не попишешь. Я очень сомневаюсь, что у них есть что-то своё. Соответственно, при отображении видео используется DXVA - аппаратное декодирование с выводом видео на экран. При этом кадры даже не поступают в оперативную память, а отправляются сразу на аппаратный декодер, встроенный в процессор или видеокарту. Это даже не CUDA или OpenCL, а отдельные специализированные чипы внутри процессора или видеокарты: Intel Quick Sync Video, Nvidia NVENC или AMD Video Coding Engine. Ffmpeg, например, умеет декодировать сетевое видео или файлы и на CUDA - cuvid. Но это уже будет грузить видеокарту, в отличие от полностью аппаратного Nvidia NVENC. Как всё это применить к вебкамерам я, к сожалению, не в курсе.

    Примение CUDA ИМХО сомнительное дело впринцепи. Если CUDA используется для задач обработки изображений, то использование CUDA ещё и для декодирования будет приводить к частостому сбросу всего кеша GPU и снижению производительности. Я вот тоже слышал что для этого специальный чип внутри процессора или карты есть + SSE/MMX, но как убедиться что FFMPRG или GSTREAMER всё сделал поуму для декодирования ?

    Я может залез не в свою тему, но как там  обстоят дело с подключением камеры за 3 бакса ИМХО не самое главное. Но в любом профессиональном решении с нормальной IP камерой этот впрос не может быть обойдён стороной.


  7. 51 минуту назад, mult1plexer сказал:

    что это даст? камера работает только с DSHOW в opencv, в VLC тоже самое только через DSHOW

    А что за камера ? Камера работает по протоколу обычно и не привязана к кодеку. Если только совсем какойто ширпотреб.


  8. Щас очень популярны разные курсы на 4, 10 месяцев, но непонятно что они дадут в итоге. Есть ШАД, но туда надо сдавать экзамены и учиться 2 года, а есть ли смысл ?

    Цель стать универсальным специалистом в части применения нейронных сетей к обработке изображений.

    Надо ли учить все эти квадратичные формы и пытаться делать свою модель сети или достаточно быть юзером в нйросетевых фреймворках ?

     


  9. 3 часа назад, iskees сказал:

    Если зимний объект отличается от летнего, то нужно что-бы в выборке были оба варианта. Но знаки не отличаются от времени года, а вот от времени суток очень даже за счет отражающих полос. 

    HOG-SVM намного менее чувствителен к яркости (основан на  ее градиенте), менее чувствителен к искажениям и шуму. В целом между этими двумя методами пропасть в плоскости качества.

    Спасибо ОГРОМНОЕ! Вам и Smorodov.

    Это между моим уровнм знаний в данной области и вашим чувствуется огромная пропасть. И как мне её преодалеть пока не придумал.

    Вы кажется писали что не сложно запрограммировать SVM+HOG самому. HOG я ещё осилю, но от слов гипепрлоскость я как программист впадаю в ступор и программирование SVM для меня чёрная магия. Если дадите почитать чтото, будет здорово.


  10. 16 минут назад, iskees сказал:

    Не смотрел как там в dlib устроено обучение этого классификатора, но судя по коду на вход подается набор изображений с указанием расположения целевых объектов.   

    Положительные образцы для обучения это целевые объекты, отрицательные все остальные части изображения. 

    Что бы это работало нужно:

    1. Что бы изображения были достаточно большие и целевой объект не занимал все изображение, а малую часть
    2. Образцов должно быть много, от 1000

    Датасет можно отправить так же архивом но с файлом положения объектов. 

     

    А вообще проект так себе. Проще взять да с 0 написать на том же питоне, ничего сложно там нет.

    Спасибо,  попробую. По вашей логике получается что осенний классификатор, не годиться для зимнего и в чём тогда преимущество по сравнению с методом сравнения с шаблоном, кроме самой классификации ? 


  11. 2 минуты назад, iskees сказал:

    Тут варианта два:

    1. не так обучаете
    2. не на том обучаете

    Выкладывайте код и сами датасеты.

    Код по ссылке вверху. Я только Cmake file поправил, чтоб находил библиотеки.

    Датасеты выкладывать не знаю какие. Я много там всего пробовал. :Журнал не вёл. Я готов сделать датасет по вашим рекомендациям.

    В архиве свалка из того что пробовал.

    universal.tar.xz

    Если нужно, могу выложить код из гитхаба сюда.


  12. В 3/28/2018 at 11:05, idrua сказал:

    Есть ли смысл? Нейронные сети постепенно вытесняют решения из библиотек компьютерного зрения. 

    Вот, например, вчерашняя статья С.Николенко про сегментацию: https://medium.com/neuromation-io-blog/neuronuggets-segmentation-with-mask-r-cnn-c76d363b67fb
     

    Сейчас актуальнее машинное обучение. 

     

    Нейронные сети как я понимаю нужно чемто "кормить". Какимито признаками, а эти признаки надо откудато взять.

    Мне сложно рассуждать о том чего я не знаю. Наверно нейронные сети надо знать, но меня интерисует не тольео голая теория, но и  применение этой теории к ПРАКТИЧЕСКИМ задачам распознавания объектов в видеопотоке. Просто изучить нейронные сети, а потом чесать репу как эти знания применить както обломно будет. Ну так есть кто готов ?


  13. В 2/21/2018 at 19:58, Smorodov сказал:

    Поищите HOG+svm классификатор, он прекрасно справляется.

    например: http://blog.dlib.net/2014/02/dlib-186-released-make-your-own-object.html

     

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

    У меня есть видео снятое видерегистратором. Если сделать датасет для тренировочных и тестовых данных из скришотов этого видео (с нужными) знаками, то такой классификатор отлично потом распознаёт знак на данном видео. Но как только я пробую сделать тренировочную выборку из других источников, так всё по нулям.

    Код взял из этого примера: https://github.com/sarthakkaingade/Road-Sign-Identification


  14. Дорожный знак как только не пытались распозновать, но он очень хитрый зверь.

    во первых его не получиться выделить влоб по цвету, так как его цвет может плыть в зависимости от освещённости, во вторыхх представление дорожного знака на кадре отличается по форме в соответсвии с расположением наблюдателя (косоугольная перспективная проекция) где квадрат превращается в ромб так что и Хаар мало что может. Во всяком случае у меня не получилось и я думаю тут ограничение самого алгоритма и не плохая натренированность.


  15. В 04.03.2017 at 18:38, Smorodov сказал:

    Как варианты могут быть интересны: 

    Кривые рассеяния:

    https://habrahabr.ru/post/156903/#first_unread

    http://lcs.ios.ac.cn/~guofu/files/vectorization/SparseImageCurves.pdf

    Суперпиксели:

    http://ivrl.epfl.ch/research/superpixels

     

    Очень интересный метод, но а где реализацию метода нахождения контуров найти можно(желательно c++) ? Не рискую даже думать чтоб самому с нуля попробовать реализовать всё.


  16. Собственно сабж во вложении.

    Исходные условия: есть все необходимые стартовые знания по c, c++, знание основ обработки изображений, знаний многих фишек в OpenCV.

    Цель обучения с репетитором  в том чтобы освоить это в три раза быстрей чем самостоятельно.

×