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

idrua

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

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

  • Посещение

  • Days Won

    3

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


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

    В OpenCV уже давно есть модуль для нейросетей opencv_dnn, есть специализированный для детекции на dnn, а сейчас есть и dnn на CUDA. Так что он актуальности своей терять не собирается, не хороните

    А пользоваться этим как? Есть примеры? Ну и касательно сетей. Обучить на Python, а потом подсовывать в OpenCV (или как-то форматировать после обучения)?
    Вообще инфы ноль.


  2. Нейросетью можно найти даже на таких картинках. Только для обучения нужна хотя бы сотня картинок.
    Помню как-то нужно было искать углы стелажей при разном свете на чб и цветных картинках (на форуме ниже есть описание, если поискать). 97% точности давала сеточка.


  3. 18 часов назад, Nuzhny сказал:

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

    Размер объекта относительно статичен +- 20 пикселей. Больше на сколько? 30х30, 40х40, 80х80. Насколько я понял, чем больше размер объекта, тем дольше ждать результат.

    18 часов назад, Nuzhny сказал:

    P.S. В OpenCV 4 тренировка каскадов уже depricated, а opencv_createsamples удалена из сборки. Фактически есть, но закомментирована и, если включить, не собирается из-за чистки старого API. Так что надо подумать, насколько необходимо использовать каскады Хаара в будущем.

    Думал. Стандартными средствами OpenCV я детектирую с точностью 90%, но это не всегда устраивает пользователей. Хотелось уйти в сторону DL, но ПК слабые, не тянут. Какие еще альтернативы?


  4. Перечитал много разных публикаций, но не нашел ответа на вопрос высоты/ширины (-w 20  -h 20). Значит ситуация следующая: картинки размеров 400 на 300, сам объект  имеет размер 100 на 130. Во всех примерах размер объекта минимален. Что-то из серии 20 на 20 или 30 на 10. Собственно, вопрос. Я должен уменьшать свои картинки, чтобы объект принял нужные размеры? Или как? В одной публикации видел, что объекты еще больше чем у меня (300 на 300), а значения высоты и ширины в параметрах обучения ставят 20 на 20. Или это абстрактные значения в  параметрах? Где читать или, может, кто подскажет по своему опыту?

    Заранее спасибо!
     

    opencv_createsamples.exe -info E:\BAZAS\Sova\Good.dat -vec samples.vec -w 20 -h 20

     


  5. Если картинки не сдвинуты по осям относительно друг друга, то самый простой и быстрый вариант это использовать логические операции. Тот же XOR, а после смотреть количество белых пикселей countNonZero (если совпали, то их будет мало). Бинаризировать только сперва обе картинки надо.


  6. Это ты называешь серьезным распознаванием? Насмешил ))

    Картинки покажи. Есть более простые логическое И, ИЛИ и исключающее ИЛИ. Возможно, MorphologyEx+TopHat с маской. Предложил бы классификатор, но ты называешь matching сложным. Всякое можно придумать, в зависимости от задачи. Но все это не очень-то робастно.


  7. 1 час назад, iskees сказал:

    Через conda установил tensorflow, tensorflow-gpu, keras

    Кстати, вопрос. Keras имеет несколько версий инсталла ( keras-gpu(вер 2.2.2)  и keras(вер 2.2.4)). Какую ставить рекомендуется?
    Поставил keras-gpu отказал модуль image для аугментаций. Как снести это чудо и поставить просто keras?


  8. На win действительно проблематично работать с python. Сам недавно столкнулся и через pip tensorflow нормально не установился. Установился через conda install.

    Ну а вообще, есть бесплатный Google Colab, где уже всё установлено. Бери и пользуйся.


  9. 19 минут назад, Nuzhny сказал:

    Сама работа обученной сети или inference. Да, это делал на С++ и сейчас делаю.

    Т.е. обучаешь ты на Python, а inference  на плюсах. Я правильно понял?
    Ок. Даже если так, то как добыть из файла h5 весовые коэффициенты. Где-то описан формат файла?

    А были модели на Keras в обучении? Выходной файл обученной модели отличается чем-то для TF и Keras?


  10. 18 минут назад, Sergey1985 сказал:

    А где можно почитать про нейросети и про UNet в частности что - нибудь из рубрики  ДЛЯ ЧАЙНИКОВ

    Это достаточно новая архитектура. Если не ошибаюсь в 2015 изобрели, а в 2016 начали активно использовать. Поэтому с чтением на русском вообще беда.
    Далее. Все эти вещи писаны на Python и только. По шагам это выглядит так: изучаем Python, изучаем азы сверточных нейронных сетей, покупаем или арендуем GPU  — аллилуйя.

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

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

    Все современные подходы к таким вещам сводятся к использованию нейросетей. Если интересует сегментация мостов, то архитектура типа Unet. Если детектирование прямоугольника, то SSD, RetinaNet, Faster RCNN, YOLO.

    Серега , все хочу спросить, а ты не переписывал на плюсы подобные архитектуры? Насколько этот процесс трудоемок?


  11. Бегло глянул на карты Google. Цвет речки всегда одинаковый. Возможно, выделение по цвету и дальнейший поиск прямых линий что-то даст.
    А вообще, конечно, более простой способ это UNet в нейросетях. Достаточно просто собрать датасет, НС сама найдет фичи и выделит мосты.


  12. 8 часов назад, korvintag сказал:

    Именно так - вырезать и удалить :-)
    Нужный край - это нижний левый край текущей ячейки. Т.е. он отличается логически, но не материалистически. Другие края тоже могут быть нижними левыми краями уже других ячеек. Потому и обрезка нужна.

    Задача мне кажется интересной. Могу попробовать нейросетями выделить зону с нужной ячейкой. Но есть проблема с картинками. Для обучения потребуется 350 картинок(для начала).


  13. 3 часа назад, korvintag сказал:

    Поиск нужно осуществлять только в части изображения (там где ожидается примерно увидеть край уголка ячейки). См. аттач ниже - я пометил зеленым прямоугольником.

    Ответ не совсем понятен. Т.е. можно смело вырезать и удалить 50% изображения  и оставить только центр? Ведь именно там "ожидается примерно увидеть край уголка ячейки". Или как?
    Чем отличается нужный край ячейки от остальных краев на фото? Он всегда под одним углом?

    3c2df7235c54fdab5866d7f39cdfb184-full.jp


  14. 21 час назад, Nuzhny сказал:

    На правах идеи, подглядел где-то у Смородова:

    3. В цикле увеличиваем размер прямоугольника следующими 4-мя преобразованиями: сдвиг границы прямоугольника влево, вправо, вверх и вниз на 1 пиксель (можно и больше сначала). Получаем 4 новых прямоугольника, у каждого из которых смотрим отношение белых пикселей к общей площади k1. Если отношение больше, скажем, k = 0.95, то получаем новый прямоугольник с центром C1 и размерами на 1 пиксель больше. Из 4-х прямоугольников выбираем тот, у которого отношение наибольшее.

     

    С пунктом 3 как-то не очень понятно.
    Было 3х3, увеличили, стало 5х5. Или увеличиваем по одной стороне, а не все сразу?
    Имеем 5х5, разбили на 4 по 3х3. Предположим, все белого цвета, отношение одинаковое. Оставляем старый центр?
    Еще увеличили и теперь общий размер 6х6. Разбивать с другим размером 4х4?

     


  15. А кто мне подскажет, как найти контуры прямоугольников в такой сложной ситуации? Выделил красным желаемый результат разделения.

    Вероятно, можно нейросетями (не пробовал, но уверен, что получится), но хотелось бы классическими методами OpenCV.ce4119cc6e4b396f4a4a379e18fbc268-full.pn

×