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

Smorodov

Главные администраторы
  • Количество публикаций

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

  • Посещение

  • Days Won

    346

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


  1. Если провести бинаризацию, может и не сильно, надо пробовать. 

    У меня этот метод давал неплохой результат: https://stackoverflow.com/questions/22122309/opencv-adaptive-threshold-ocr/22127181#22127181

    Еще думается если найти фазовый сдвиг, то он тоже даст границу стекла.

    Можно после бинаризации наложить изображения по И темные линии станут толще, затем инверсия, эрозия, и найти convex hull.

    • Like 1

  2. Можно попробовать сыграть на преломлении. Поясню. Если взять подложку с нарисованной сеткой, и сфоткать, затем поставить стекло и снова сфоткать. После этого наложить изображения и найти разницу. Конечно придется поэкспериментировать, но может сработать. По поводу размеров, вы же пишите что ряд фиксированный. Поставьте в соответствие каждому размеру площадь в пикселях.


  3. Возможно связано с засветкой. Ведь диафрагма открыта на полную. Номер покрыт световозвращающим покрытием и может просто слепить камеру. Да и изображение через широкую диафрагму по определению менее четкое. 


  4. Не уверен что хуже, задавать размер тензора вручную, или мешать C и C++, но так-то теоретически возможно:

    https://www.oracle.com/technetwork/articles/servers-storage-dev/mixingcandcpluspluscode-305840.html

    Может оптимально будет просто записывать при заморозке еще один файл, с дополнительной инфой ?

     


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


  6. В 06.09.2019 at 11:51, Nuzhny сказал:

    Smorodov, это то, что называется re-id.  Кажется, что оно может плохо работать, ведь сеть обучается не различать отдельные объекты между собой, а отличать типы объектов. Кажется, что все люди будут близки друг с другом, машины друг с другом, а надо ещё и их различать между собой. Впрочем, я тут ещё не экспериментировал, надо попробовать, раз уж YOLO в проект проинтегрировано, благо и образец имеется.

    Надо ещё из OpenVINO потестить, у них есть обученная модель на "Identify Someone in Different Videos". Но это опять таки же сеть специально обученная различать пешеходов между собой. Также там есть "face reidentification" - различать лица между собой.

    Кстати, еще подумалось, ведь уровень абстракции сети растет от входа к выходу, то есть чтобы получить  признаки для описания конкретного экземпляра объекта, нужно просто отрезать побольше выходных слоев. 


  7. Подкину еще один скрипт, выдранный из работающего проекта. FreezeMe.py  тут некоторых вещей нехватает, но может чем и пригодится. И еще, чтобы смотреть что записалось попробуйте Netron, я его как то уже упоминал. 

    Скриншот 2019-09-08 15.03.53.png

     

    • Like 1

  8. Ну тут от сети зависит, есть ведь сети для распознавания лиц, например. Что мешает обучить сеть на пешеходах под разными углами зрения, и научить извлекать признаки для различения их между собой. И соорудить каскад, тип объекта + дескриптор. 


  9. По поводу нейронок, согласен, с мелкими объектами их применять проблематично. 
    Но можно попробовать применить метод, похожий на распознавание лиц, когда вычисляют расстояние или угол между векторами, выдаваемыми сетью. Где то видел трекер, в котором используется подобная технология. Там берется что то вроде AlexNet и обрубается последний слой, и выходы предпоследнего слоя, используются как признаки для трекинга. Вот их и используют как часть метрики схожести, наряду с расстоянием и скоростью. 


  10. Я не использовал питоновскую либу, но помнится намучился строить TF на MSVS, проект сейчас не нашел, было давно. 
    Но помнится, что там еще много чего надо было кроме DLL-ины.  
    Вот здесь посмотрите,  может поможет: https://joe-antognini.github.io/machine-learning/windows-tf-project 

     


  11. Там все на базель завязано, проекты тоже в нем собираются. Дело вкуса, но мне эта штука не нравится, и как решение, можно попробовать напрямую грузить замороженные модели прямо OpenCV-шным dnn модулем, либо преобразовать через ONNX в любой другой формат и опять же, либо через OpenCV, либо CAFFE, ncnn, .... или другой понравившийся фреймворк. 

    TF -> ONNX:  https://github.com/onnx/tensorflow-onnx

    Кстати, классная штука: https://github.com/lutzroeder/netron

    И эта тулза может пригодиться: https://github.com/daquexian/onnx-simplifier


  12. Используется еще вектор скорости. Предполагается что объекты инертны, и векторы скорости быстро не меняют.

    Ну еще копайте разные фильтры Кальмана и иже с ними.

    Есть еще наш с Сергеем Нужным проект: https://github.com/Smorodov/Multitarget-tracker  

    правда по коммитам сейчас он много больше его чем мой :) 


  13. Ну не факт :) .

    Наиболее частые ошибки:

    не тот порядок каналов;

    неправильная раскладка цветовых данных (чередующиеся или по плоскостям);

    не вычтенное среднее, не тот диапазон (0-255 вместо 0-1). 


  14. Просто тут не будет :)

    AAM , по опыту, довольно медленный.

    ASM , как правило, быстрый, но дерганый, нужно сглаживать движение.

    Посмотрите этот проект: https://github.com/TadasBaltrusaitis/CLM-framework/tree/master

    Там есть и матлабовские скрипты для обучения моделей.

    Может пригодится еще : https://github.com/patrikhuber/eos 

     

     

     

    • Like 1

  15. Для начала соберите изображения, на которых сеть ошибается и дообучите сеть на них. 

    (лучше новые, собранные при реальной работе)

    Можно просто дублировать их в датасете, чтобы встречались почаще.

    Ну и повторять процесс, пока результат не устроит.

×