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

Андрей_Андрей

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

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

  • Посещение

Все публикации пользователя Андрей_Андрей

  1. Над дорогой установлена камера с ик подсветкой. На фото наблюдаю непонятные артефакты - обведены на снимке. На разных фото они всегда в разных местах. Иногда они появляются над автомобилем, иногда перед ним, иногда их нет совсем. Но если они есть, то всегда недалеко от автомобиля. Что это такое может быть?
  2. Коллеги, суть проблемы: не удается загрузить мной созданную модель 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 прочитать? Спасибо.
  3. не удается загрузить модель в 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 } } } что я не так делаю?
  4. DNN на CPU из C++

    GRU не хватает. я так понимаю тема давно поднималась, но не хватает до сих пор...
  5. svm.predict возвращает int, вместо float.

    Коллеги, svm.predict возвращает мне int, вместо float. Я никак не могу оценить с какой достоверностью он мне распознает. Что я делаю не так? код примерно такой (С++): vector <float>predicted_vector(img_vector.size());{ for (int i = 0; i < img_vector.size(); i++){ img_vector = symbRecognitor.deskew(img_vector); //наклон перед распознаванием hists = symbRecognitor.preprocess_hog(img_vector); // hog predicted_vector = svm.predict(hists, true); .... } вот параметры: SVMParams param; param.kernel_type = SVM::POLY; param.svm_type = SVM::C_SVC; param.C = 1; svm.load(datFilePath);
  6. svm.predict возвращает int, вместо float.

    нет, это не скользящее окно. это символы автомобильного номера, разделенные по градиенту яркости вдоль широкой стороны номера. в целом все хорошо, но есть символы, которые этим алгоритмом режутся пополам ( м, н, 8, 6 ) - у всех них есть ложный максимум гистограммы яркости посередине, довольно большой, простым сравнением с соседними надежно отфильтровать его не удается. А для буквы М он даже выше чем соседние максимумы. И вот дилемма - то-ли это 2 цифры "1"? то-ли одна буква "м"... вот как-то так. вроде питонская библиотека sklearn.svm обучает классификатор с возможностью определять вероятность, но эта либа не для С++. Ищу аналог. вот народ вроде про аналоги пишет: https://stackoverflow.com/questions/11378819/scikit-learn-equivalent-for-c не знаю во что у меня все эти приседания выльются в плане быстродействия...
  7. svm.predict возвращает int, вместо float.

    Коллеги, огромное спасибо за Ваши комментарии. Насколько я понимаю, получить значение функции для классификации у меня нет вариантов, бо я распознаю 22 символа (буквы и цифры) и это никак не бинарная классификация. У меня нет проблемы, что получить из алгоритма - надежность (confidence) или вероятность (probability) - мне хоть-бы что-нибудь заиметь, уже было-бы неплохо, т.к. сейчас нет вообще ничего. Из описания упомянутого mrgloom'ом в предыдущем посте хака, я вынес только то, что все сказанное справедливо только для бинарной классификации, что не есть мой случай. Разбираюсь в упомянутом RVM. Беда моя в том, что без достоверности (вероятности),в любом виде, ничего у меня не выйдет, т.к. у меня нет четких областей в которых я распознаю символ. а есть набор предположительно областей, каждую из которых я отправляю на распознавание и вот по достоверности( вероятности) хотел определять, что-же за символ на самом деле передо мной. Что еще можно придумать, прежде чем отказаться от SVM в пользу другого алгоритма?
  8. svm.predict возвращает int, вместо float.

    Похоже проблема в том, что я использую классификацию, CvSVM::C_SVC C-Support Vector Classification; а должен исп регрессию CvSVM::EPS_SVR \epsilon-Support Vector Regression. тогда predict вернет значение функции. переучиваю каскад. UPD. predict стал возвращать float. но количество ошибок с 0.11% выросло до 74%... а новый *.dat файл стал размером в 1 кБ вместо 6кБ у старого.. что-то не так..
  9. svm.predict возвращает int, вместо float.

    может у вас это getDecisionFunction()? в opencv2 svm.predict(Mat img, true) должен мне возвращать это значение отражающее дистанцию от плоскости. но почему-то он мне возвращает label... Кто знает почему?
  10. svm.predict возвращает int, вместо float.

    ну например значения векторов у меня такие: 0.055761, 0.0971997, 0.188256, 0.149404, 0.176307, 0.16017, 0.167007, 0.0969387 количество векторов - всегда 5650, сумма значений длин векторов для разных символов тоже одинаковая. Например для первого она вседа 536.1, для второго 634.7 и т.д. но эти цифры повторяются, для разных символов, в том числе для неправильно распознанных. Я как-раз все и делаю на основе этого примера. Вот тут: http://www.recognition.mccme.ru/pub/RecognitionLab.html/methods.html#nonLinearSVM автор в разделе Уверенность классификации говорит о некоем значении классифицирующей функции, по которому можно судить о достоверности классификации. Где ее, эту функцию взять?
  11. svm.predict возвращает int, вместо float.

    оох. Андрей Владимирович, расстояние не меняется ни в примере points_classifier, ни у меня в программе, и не зависит от параметра С. я ставил С =1000, и цифры суппорт вектора абсолютно такие-же вне зависимости даже от того, корректно распознался символ, или нет. Подскажите что еще можно подумать?
  12. svm.predict возвращает int, вместо float.

    Спасибо. запускаю points_classifier, разбираюсь. svm.predict возвращает float, но десятичная часть всегда ==0 . я не очень Вас понял - какой именно параметр из Вашего списка у меня может быть целочисленный? я распознаю символы на картинке методом hog + svm пробую выводить svm.get_support_vector(i) - для совершенно разных символов он мне выводит абсолютно одинаковые числа.
  13. svm.predict возвращает int, вместо float.

    дистанция до гиперплоскости меня абсолютно устроит. и в документации говорят, что, мол если returnDFVal = true, то predict ее и вернет . а у меня все равно int на выходе... как мне ее (дистанцию) получить?
  14. svm.predict возвращает int, вместо float.

    да, но я ставлю returnDFVal = true
  15. Чем лучше распознать цифры?

    я искал связанные контуры (findContours), оставлял из всех только символы ( по размеру и соотношению сторон), преобразовывал их в полигоны (approxPolyDP), и обводил их прямоугольниками (boundingRect) . Потом строил прямую между левыми нижними углами прямоугольников в одной строке, и искал наклон (арктангенс разности по y / разность по x.), и потом этот наклон компенсировал. Получилось хорошо.
  16. Здравствуйте. Наша фирма занимается разработкой микропроцессорных встраиваемых систем. Появились новые проекты, и нам требуется программист Python, C++ Требования: Уверенные знания Python, CPP, опыт разработки приложений под Windows, Linux от 2-х лет. Опыт работы с opencv, уверенное знание основного функционала этой библиотеки. Опыт работы с системой контроля версий, багтрекером (любыми) Приветствуется опыт решения задач классификации объектов, использования нейронных сетей. Мы предлагаем: Работу над проектами в области машинного зрения, систем "Умный город", интеллектуальных транспортных систем. Дружный коллектив, спокойная, доброжелательная атмосфера. Работа в офисе в 3 минутах ходьбы от метро Фонвизинская. Полное соблюдение трудового законодательства РФ. ЗП по результатам собеседования. Не агентство, прямой работодатель. пишите: fader@mail.ru
  17. Сегментация

    1 померяйте соотношение ширины/высоты всех найденных прямоугольников. 2 отсейте все, у которых это соотношение получилось больше 1.1 ... 1.2 3 ??? 4 Profit!
  18. Здравствуйте, для распознавания символов на на номерном знаке автомобиля хочу применить нейронную сеть. Читаю про "обычную" полносвязную НС. В качестве недостатка упоминается большое чисто ее элементов, и как альтернатива рассматривается сверточная сеть. А она, наряду с DeepLearning вроде как относится к другому классу сетей. И вот думаю: действительно мне нужна сверточная НС, нужно-ли мне для задачи идентификации 22-х символов поднимать caffe или подобную серьезную систему, или смотреть в сторону SVM. Сложно сориентироваться, т.к. у меня в этом деле нет опыта совсем. Вообще входные требования - максимальная точность классификатора при условии что на входе будет картинка символа с различной яркостью, контрастностью, и четкостью монохромного (не бинаризованного, т.к. бинаризовать некоторые символы без существенного искажения не выходит) изображения символа, как чистая, так и зашумленная (пыль, грязь, различные артефакты вызванные деформацией номерной пластины, тенями, неравномерной освещенностью). Размер картинки с символом примерно 20Х20 пикселей. Как мне определиться с выбором метода, пожалуйста, посоветуйте.
  19. Сделал. Почитал инет и решил пока отложить сеть в сторону, и сделал распознавалку на hog+SVM. Получилось неплохо (0.11 % ошибок ) на 13300 картинок в символами. Пока меня устраивает, хотя сети изучать тоже конечно нужно.
  20. Спасибо за ответ. вот тут: http://nordavind.ru/node/550 для моей задачи автор пишет : " 625 нейронов во входном слое. Количество нейронов скрытых слоев нейронной сети обычно выбирается в 10-20 раз больше количества входных значений нейронной сети. Пусть наша нейронная сеть состоит из двух скрытых слоев. Первый скрытый слой состоит из 6000 нейронов (и 3,75 млн. связей с входным слоем), а второй из 3000 нейронов (и 18 млн. связей с первым скрытым слоем). " 18 млн связей - приличное количество. сколько -ж они учиться будут....
  21. Захват картинки в opencv

    Здравствуйте, у меня такая ситуация - web сервер RaspberryPI из пакета RPi_Cam_Web_Interface выдает мне непрерывно меняющиеся картинки на адрес вида http://<ipaddr>/html/cam_pic.php? в браузере эта картинка видна, обновляется по F5. Пытаюсь получить ее с пом. cv2.imread() в opencv - выдает ошибку warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:545) файл при этом на месте. Картинки из jpg файлов открываю нормально, ffmpeg установлен. Видеопотоки h264 и MJPEG из файлов открываю, также открываю поток сгенерированный с помощью Raspivid (h264) поток этот получаю с адреса http://<ipaddr>:8160 -путем cap = cv2.VideoCapture('http://<ipaddr>:8160') c задержкой в 40 сек, но получаю. встречал рекомендации удалить все opencv_** **.dll из C:/Windows/System32 - у меня там нет таких dll. переключение в web-сервере RaspberryPi с передачи последовательности картинок на MJPEG ( с переходом, соответственно, от imread к VideoCapture) ничего не изменило Что это может быть? Как мне эту картинку вытащить? Спасибо.
  22. Сборка OpenCV 2.4

    Пытаюсь собрать Opencv 2.4.11 с TBB и IPP в надежде что это уменьшит тормоза моего приложения Если кто знает, просветите пожалуйста насчет следующих моментов: - встречал посты где люди пишут, что начиная с версии OpenCV 2.4.5 нет необходимости в сборке с TBB, якобы автоматом будут задействованы методы, которые используют мультрединг, так-ли это? - я с первого раза собрал Opencv 2.4.11 с TBB под студию 2013 с родным компилятором студии. посмотрел getBuildInformation() - TBB задействовано, но прироста производительности я не замечаю - как было 60 мс на один проход цикла, так и осталось. Что с TBB, что без него, загрузка всех 4-х ядер процессора равномерная. - при попытке собрать и с TBB и с IPP компилятор валит ошибки вида: Error 95 error LNK1181: cannot open input file '..\..\lib\Release\opencv_calib3d2411.lib' C:\opencv\build_tbb_ipp\modules\ocl\LINK opencv_ocl - хотя делаю все так-же, с чем это может быть связано? - в скомпилированной директории я не нахожу файлов #include <opencv2/highgui/highgui.hpp> и #include <opencv2/opencv.hpp> и дело не в путях , в получившейся в рез-те компиляции папке build этих файлов *.hpp нет в принципе. ЧЯДНТ? Спасибо.
  23. Сборка OpenCV 2.4

    mrgloom, правильно я понял Вашу мысль, что если есть TBB, то OpenMP задействовано не будет? Что Вы имеете ввиду "cv::parallel_for может иметь несколько "бэкэндов" ? в файле по ссылке упоминаний про IPP я не нашел...
  24. Сборка OpenCV 2.4

    Да
×