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

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

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

  1. Today
  2. Yesterday
  3. Картинку не мешало бы прикрепить. А вообще оператор Собеля отлично выделяет линии.
  4. Последняя неделя
  5. Подскажите, пожалуйста, чем лучше распознать слабо отличимые от фона линии, например линии на руке. Я понимаю что скорее всего надо применять усиливающие фильтры (или поднимать контраст), но может есть какие-то специальные алгоритмы, упрощающие жизнь?
  6. FCN

    Мой вопрос не в этом, а в том что у меня явно видны блоки как у jpeg сжатия, а у них плавные границы, хоть и грубые. Походу там stride 32, а kernel 64, а у меня 32 и 32, надо попробовать. https://github.com/shelhamer/fcn.berkeleyvision.org/blob/master/pascalcontext-fcn32s/train.prototxt#L505 Хотя и не понятно как ' Deconvolution ' слой в caffe работает по сравнению с Conv2DTranspose.
  7. FCN

    В 32 шаг свертки больше, результат грубее получается чем в 16 или 8. Восьмерка самая аккуратная по опыту. А так то там, можно вероятности получить размыть и по порогу отсечь должно как раз дать плавные границы.
  8. FCN

    За счёт чего в оригинальной статье получают 'сглаженный' результат? даже для FCN-32S, где по идее должно быть увеличении сжатого блоба в 32 раза. https://github.com/shelhamer/fcn.berkeleyvision.org/blob/master/voc-fcn32s/train.prototxt https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf Я пробовал такую версию на базе VGG16 или проблема в том, что Conv2DTranspose не подходит? def get_fcn_vgg16_32s(inputs): bn = BatchNormalization()(inputs) # Block 1 x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1')(bn) x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block1_pool')(x) # Block 2 x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1')(x) x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block2_pool')(x) # Block 3 x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2')(x) x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block3_pool')(x) # Block 4 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block4_pool')(x) # Block 5 x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2')(x) x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3')(x) x = MaxPooling2D((2, 2), strides=(2, 2), name='block5_pool')(x) x = Conv2D(128, (3, 3), activation='relu', padding="same")(x) x = Conv2DTranspose(128, kernel_size=(32, 32), strides=(32, 32), padding='same')(x) return x
  9. В итоге sloth вроде как неплох, раздражает только 1 вещь что при создании полигона надо жать каждый раз на кнопку, а не по клику мыши. https://github.com/cvhciKIT/sloth/issues/145 И еще поддержка никакая, т.к. проект старый.
  10. Проблема оказалась в том, что после применения фильтров изображение получается одноцветным (черно-белым) И особенность врайтера в том, что он не может сохранить одноцветное изображение в цветной контейнер. Последний параметр isColor пришлось заменить на false, и запись заработала: videoWriter.open(filename, codec, fps, sizeOfFrame, false); Не ожидал такой особенности.
  11. Спрашиваю у тех, кто в теме. Интернет завален непонятками по вопросу неработоспособности VideoWriter::write() в Linux. Создается маленький видео-файл, в котором есть только заголовок (размером 5-8кб в зависимости от используемого кодека) и все. Среда: Debian Linux 9 Stable OpenCV из стандартного репозитария: libopencv-dev 2.4.9.1+dfsg1-2. FFMPEG из стандартного репозитария: ffmpeg 7:3.2.8-1~deb9u1 Кто-то пишет, что неработает из-за путанницы в пакетах ffmpeg* libav*. Кто-то пишет, что нужно экспериментальным путем подобрать кодек, но я попробовал десяток комбинаций, взятых из постов «У меня все работает!» - тоже болт. Кто-то пишет, что не работает по причине отключения флага поддержки видеозаписи в стандартных репозитариях (зачем так делать - непонятно), и надо сносить стандартный пакет и хитро собирать из исходников. Кто-то пишет, что никогда вообще не видел чтоб видеозапись работала под Linux, типа эта подсистема работает только в Windows, и разработчики под Линухом даже не тестируют и не обещают поддержку. Кто-то пишет, что неработает с 2015 года и работать не будет. Перед тем как я уработаю систему кривыми пакетами и не менее кривыми руками, я хочу услышать у того, кто столкнулся с такой проблемой и решил ее: что делать, как заставить писать VideoWriter::write() минимальными средствами? Краткий пример, в котором запись не работает: https://pastebin.com/NZbjek0d
  12. https://github.com/lzx1413/labelImgPlus В итоге заработало под windows на anaconda python 2, но не работает сохранение. https://github.com/wkentaro/labelme И это заработало, но при сохранении зачем то сохраняется изображение прямо в json как бинарная строка (но это довольно легко убрать) и еще нет загрузки сразу нескольких изображений как в labelImg и нет выбора из списка лейблов, а надо каждый раз руками прописывать. Еще попробовал https://github.com/cvhciKIT/sloth Но полигоны там нельзя перемещать и изменять, только удалять.
  13. NamedWindow

    Встроенной функции нет, надо цепляться к WinAPI.
  14. NamedWindow

    Здравствуйте! Вопрос такой, пытаюсь реализовать что-то вроде SeamCarving, и не могу понять как при уменьшении окна namedWindow вызывать функцию определенную. Как мне узнать, что изменяются размеры окна?
  15. У меня такие же проблемы были с утилиткой для аннотации. Сейчас пишу сам, на Qt, с полигонами и Live wire, может еще и другие типы добавлю. Но пока не готово, как будет, может на гитхаб выложу, если что стОящее получится.
  16. https://lear.inrialpes.fr/people/klaeser/software_image_annotation Погонял prebiuild binaries для винды Не читает .jpg. Большие изображения загружает, но когда добавляешь маску лагает. Ну и там разметка кисточкой, а хотелось бы полигонами.
  17. Есть еще https://lear.inrialpes.fr/people/klaeser/software_image_annotation но что то под Убунтой файловая панелька пустая. Так что не знаю как насчет больших файлов.
  18. Ранее
  19. Хочется нормальный тул для разметки полигонами, который работает на винде и убунте, умеет делать zoom мышкой, поддерживает большие изображения. То что посмотрел: 1. https://github.com/lzx1413/labelImgPlus Нет prebuild binaries для винды, надо ставить под python 2 2. https://github.com/AKSHAYUBHAT/ImageSegmentation Разметка кистью типа graphcut, не то что надо. Непонятно как билдить\деплоить, часть под веб. 3. https://github.com/wkentaro/labelme Есть баг при сохранении разметки - видимо из-за того что юникод по разному в python2 и python3. Нету (или не работает) ctrl + mouse wheel для zoom. Надо собирать под анаконду, но на винде норм работает. 4. https://github.com/seanbell/opensurfaces-segmentation-ui Непонятно как билдить\деплоить, часть под веб. Похоже только под linux, непонятно как сохранять данные. 5. https://github.com/CSAILVision/LabelMeAnnotationTool Тоже клиент-сервер-браузерное решение, непонятно как билдить\деплоить. Что то старое. 6. https://github.com/kyamagu/js-segment-annotator Чистый js, работает из коробки в браузере (без сервера и локально). Надо руками копировать изображение в соответствующую папку и добавлять его в мета информацию, иначе его не видно. Разметка по суперпикселям, не подходит. Вешает браузер на размерах изображения 8k x 5k.
  20. Добрый день. Столкнулся с аналогичной проблемой. Вы не нашли ответ на свою проблему?

     

  21. Однозначно второй вариант. Сейчас такая ситуация, что многие менее мощные карты нового поколения могут именно для CUDA оказаться быстрее, чем более мощные предыдущих. К тому же старые карты не будут поддерживать новые стандарты CUDA, что не есть хорошо для программирования.
  22. Решил не плодить тем и спросить тут. Хочу прикупить еще один комп. для работы с cuda, какую лучше видеокарту выбрать nVidia GTX 750Ti 2Gb nVidia GTX 1050 Ti 4Gb или может посмотреть в сторону других моделей (бюджет не сильно раздутый)? Спасибо
  23. Opencv 2.3.2 + C++Builder XE2

    Это старые файлы, видимо они потерялись. Сейчас я не работаю с C++ builder, поэтому не могу их загрузить заново.
  24. Opencv 2.3.2 + C++Builder XE2

  25. Добрый день. Не совсем ясна одна вещь, связанная с преобразованием изображений. К примеру имеется изображение, полученное камерой. Камера внизсмотрящая. Известно положение камеры в мировом пространстве. Их однозначно определяет акселерометр. Мне необходимо воспользоваться данными с акселерометра для афинных преобразований полученного изображения. Как я понял для этого необходимо перевести координаты двумерных точек на изображении в однородные координаты [x,y]-> [x,y,1], и умножить вектор на матрицу поворота. Необходимо ли где-то использовать матрицу внутренних параметров камеры? В конечном итоге необходимо откорректировать проекцию изображения.
  26. Всем привет. Народ подскажите как можно проще реализовать робота помощника. Уже есть проекты и в России и за рубежом роботов промоутеров. Как я понял там все строится на интернет-сервисах и серверах крупных компаний. Например то же распознавание речи. Так вот вопрос кто в теме по каким принципам реализовать ориентацию в пространстве? Как там карта местности задается под каждого клиента или робот самостоятельно бродит по торговому центру например и создает себе по датчикам столкновений карту. Или по каким-то иным принципам это делается например по информации с камеры? И тогда вопрос как реализовано распознавание лиц и различных торговых, отделов мест чтобы робот не заблудился? Например как это делает как робот-пылесос и какие вычислительные ресурсы требуются (объем памяти скорость процессора и т.д.)?
  27. Еще, совершенно случайно, было обнаружено, что печатные буквы можно удалить достаточно простым способом (маской из LSD). Правда и рукописный тоже подчищается, но это мелочи (можно чистить только нужные зоны). Не идеально конечно, прямые линии ("палки" от букв) от LSD в маску не попадают, поэтому удаляются только круглые (о, ф, е, я и т.д.)
  28. Спасибо, посмотрю. Но там шум совсем другой: следы от стаканов, загнутые страницы и т.д. Это все гораздо проще удалить, имхо. У меня же на черном печатном пишут черным рукописным (синий тоже бывает, но с ним легче). Наверное, следует написать пару слов о промежуточных результатах на сейчас. Во первых, спасибо, Nuzhny, что помогает советами и кодом вот уже месяц. 1. Разложить по цвету мои картинки невозможно. Что только не делали: добавляли LBP, оператор Собеля, различные маски. Все мимо. Ни кластеризация, ни классификация не справляются. 2. Решили добавить принадлежность пикселя с типу текста. Ведь что-то таки известно. Можно получить контуры и отобрать только те, которые подходят по размеру печатных букв. Определяются не все, иногда ложные появляются (с этим беда). А еще можно получить рукописный из LSD (длинные линии под углом 10..80 и 100..170) будут говорить о рукописном. В результате получается такая маска(см.ниже). Результаты пока не очень, но заметно лучше, чем просто по цвету с всевозможными "играми" из LBP, Sobel и т.д. В красном и зеленом результат разложения. Это мой первый опыт работы с классификатором. Думаю, что у Nuzhny получше выйдет, но он пока занят.
  29. Кстати говоря https://www.kaggle.com/c/denoising-dirty-documents
  1. Загрузить больше активности
×