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

Вся активность

Этот поток обновляется автоматически     

  1. Today
  2. Yesterday
  3. Здравствуйте, подскажите пожалуйста насчёт стекинга. Прочитал по 20 раз статьи и стокаже раз видео и не врубаюсь. В одной статье сказано: выборку разбивают на части (фолды), затем последовательно перебирая фолды обучают базовые алгоритмы на всех фолдах, кроме одного, а на оставшемся получают ответы базовых алгоритмов и трактуют их как значения соответствующих признаков на этом фолде. Для получения метапризнаков объектов тестовой выборки базовые алгоритмы обучают на всей обучающей выборке и берут их ответы на тестовой. 1) Что означает фраза "получают ответы базовых алгоритмов" ? В сысмысле оставшийся фолд используется как тестовая выборка или что за ответы ? И дальше там непонятно. Саму идею перекрёстной проверки понял. Сначало в одном месте всей выборки маленький кусочек назначаем тестовой выборкой, потом в другом месте кусочек назначаем тестовой выборкой
  4. Последняя неделя
  5. Ранее
  6. VideoCapture аппаратное декодирование

    из gpu есть Mali T860
  7. VideoCapture аппаратное декодирование

    Nuzhny, Большое спасибо за ваши ответы. Но у меня так бывает что к теме я возвращаюсь через несколько месяцев.
  8. Пропатчить так просто не получится, там весь интерфейс придётся менять для всех бэкендов. Кажется, что надо писать самому на ffmpeg, можно взять код работы с ним из OpenCV в качестве базового. С другой стороны есть cudacodec из opencv_contrib, который, вроде, делает как раз необходимое. Но я его не проверял, ничего не могу сказать.
  9. VideoCapture аппаратное декодирование

    Спасибо, интересно будет поробовать. Тогда получаеться VideoCapture class из OpenCV не используем ? Он ведь вроде как сам работает с FFMPEG ? И управление видеопотоком тоже надо будет через FFMPEG реализовывать. Или сам VideoCapture OpenCV прпатчить для более эффективной работы ?
  10. Получать можно в том же 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: вот обсуждение.
  11. VideoCapture аппаратное декодирование

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

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

    Полностью справедливо для камер только с DirectShow/WMF драйвером. Некоторые имеют еще собственный драйвер и SDK, особенно с вариантами для Windows и Linux. Часто, такие камеры выдают полное разрешение и частоту кадров только в сжатом видео потоке ( Mjpeg/h.264) – видел китайcкую камеру 5Mp/60Hz/h.264 120Mbit поток, подключённую по USB2… Такие случаи как раз для аппаратного декодирования. В SDK Intel Quick Sync Video, Nvidia NVENC есть примеры копирования декодированного кадра в OpenCL/Cuda память.
  15. ffmpeg тут ничего нового не придумал, а просто предоставляет обёртку над DirectShow. Я уже давно этой темы не касался, надеюсь, что не навру. Веб камеры в Windows работают через DirectShow драйвер (или WMF) и тут ничего не попишешь. Я очень сомневаюсь, что у них есть что-то своё. Соответственно, при отображении видео используется DXVA - аппаратное декодирование с выводом видео на экран. При этом кадры даже не поступают в оперативную память, а отправляются сразу на аппаратный декодер, встроенный в процессор или видеокарту. Это даже не CUDA или OpenCL, а отдельные специализированные чипы внутри процессора или видеокарты: Intel Quick Sync Video, Nvidia NVENC или AMD Video Coding Engine. Ffmpeg, например, умеет декодировать сетевое видео или файлы и на CUDA - cuvid. Но это уже будет грузить видеокарту, в отличие от полностью аппаратного Nvidia NVENC. Как всё это применить к вебкамерам я, к сожалению, не в курсе.
  16. VideoCapture аппаратное декодирование

    Для аппаратного декодирования h.264/h.265/mpeg4/MJPEG можно взять библиотеки из проекта ffmpeg. Там есть реализаций кодеков с использованием SDK от NVIDIA, AMD и INTEL, также есть варианты для мобильных устройств. В ffmpeg есть свой модуль для работы с камерами. OpenCV версий 3 и 4 можно собрать с поддержкой ffmpeg для декодирования. Применяя аппаратный декодер и OpenCV модули с поддержкой NVIDIA Cuda и/или OpenCL, есть возможность построить алгоритмы без копирования декодированного потока в хост память. DirectX и OpenGL поверхности в памяти GPU могут являться источником для OpenCl/Cuda матриц в OpenCV не покидая GPU.
  17. VideoCapture аппаратное декодирование

    китайские нонейм модули без опознавательных знаков так в этом и суть, что MPC-HC от k-lite захватывает нормально не через DirectShow. Значит как минимум это можно как то поменять. В opencv проблема даже в FHD сделать захват, FPS падает до 7-10. А по дефолту открывает в 640х480
  18. Веб-камеры используются не по протоколу, а через драйвер. Может оказаться, для неё есть DirectShow драйвер и всё. Но тут ещё вопрос, используется ли DirectShow или сейчас всё реализовано через MSMF. Всё - это dshow и vfw. Думаю, что плайеры работают через DXVA, которое позволяет сразу декодировать и отображать видео. Сходу даже не уверен, можно ли его использовать в OpenCV.
  19. VideoCapture аппаратное декодирование

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

    что это даст? камера работает только с DSHOW в opencv, в VLC тоже самое только через DSHOW
  21. Это уже не ко мне. Напиши сюда.
  22. не удается загрузить модель в dnn

    Спасибо, большое за ответ, теперь я сделал так: python tf_text_graph_faster_rcnn.py --input hr_model_lstm.pb --config example.config --output hr_model_lstm.pbtxt в качестве конфига взял # Faster R-CNN with Inception Resnet v2, Atrous version; В ответ при импорте в net = cv2.dnn.readNetFromTensorflow(weights, config) получил ошибку: [libprotobuf ERROR D:\Build\OpenCV\opencv-3.4.4\3rdparty\protobuf\src\google\protobuf\text_format.cc:288] Error parsing text-format opencv_tensorflow.GraphDef: 13334:5: Unknown enumeration value of "20" for field "type". раньше он ругался на значение DT_RESOURCE, теперь ругается на значение 20. нода из pbtxt выглядит так: node { name: "lstm1_b/while/TensorArrayWrite/TensorArrayWriteV3/Enter" op: "Enter" input: "lstm1_b/TensorArray" attr { key: "T" value { type: 20 } } attr { key: "_class" value { list { s: "loc:@lstm1_b/while/mul_5" } } } attr { key: "frame_name" value { s: "lstm1_b/while/while_context" } } attr { key: "is_constant" value { b: true } } attr { key: "parallel_iterations" value { i: 32 } } } что я не так делаю?
  23. Можно у Capture посмотреть свойство CAP_PROP_BACKEND.
  24. Напиши на github в issues. Разработчики откликаются, исправляют/добавляют.
  25. Это для всех сетей. Мы для кастомной LSTM так делали - заработало.
  26. VideoCapture аппаратное декодирование

    это я первым делом сделал. как я понял у меня через directshow идет, с gstreamer не удалось запустить завершается 0xc000007b ошибкой я пока под windows запускаю.
  27. Коллеги, суть проблемы: не удается загрузить мной созданную модель tensorFlow в opencv.dnn методом cv2.dnn.readNetFromTensorflow(weights,config) выдается ошибка распарсивания графа вида Error parsing text-format opencv_tensorflow.GraphDef: 4059:5: Unknown enumeration value of "DT_RESOURCE" for field "type". гугление приводит к рецептам вроде заморозьте граф, преобразуйте файл *.pbtxt с помощью файлов, входящих в opencv, конфиг для сети при этом скачайте по ссылке, везде рекомендации, примерно как тут: https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API вопрос: но ведь это-же для конкретной заранее спроектированной сети - mobilenet, rcnn, yolo и других известных, я правильно понимаю или нет? и если да, то, что делать, если моя структура самописная? это не lenet, не guglonet, не yolo, это моя собственная сетка. мне что, не удастся ее в dnn прочитать? Спасибо.
  28. VideoCapture аппаратное декодирование

    Для линукса по идеи нужен GStreamer. Интересная статья по теме: https://blog.zhaw.ch/high-performance/2017/10/24/boost-your-gstreamer-pipeline-with-the-gpu-plugin/
  29. Попробуй принудительно изменить backend у capture: CAP_FFMPEG, CAP_DSHOW или CAP_VFW. Они выбираются по очереди, какой первый подойдёт. Возможно, что у тебя первый в списке как раз не аппаратный.
  1. Загрузить больше активности
×