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

iskees

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

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

  • Посещение

  • Days Won

    19

Все публикации пользователя iskees

  1. Модель конечно странная, мало того что жутко избыточная так еще и цветная хотя примеры одноканальные. ошибки у вас при тестировании. В этом месте # Преобразуем изображением в массив numpy x = image.img_to_array(img) x = 255 - x #Нормализуем изображение x = np.expand_dims(x, axis=0) вместо x=255-x это же инвертирование у вас там нужно делить на 255 что бы привести в диапазон 0-1 x =x/255.0 x = np.expand_dims(x, axis=0) это не нормализация а просто добавление одного изменения в массив ну и loaded_model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"]) делать не нужно сеть же уже готовая import numpy as np from keras.preprocessing import image from keras.models import model_from_json json_file = open("D:\\neuro\\NS.json", "r") loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) loaded_model.load_weights("D:\\neuro\\NS.h5") img_path = 'D:\\neuro\\test\\circle\\2986.png' img = image.load_img(img_path, target_size=(150, 150), grayscale=False) x = image.img_to_array(img) x =x/255.0 x = np.expand_dims(x, axis=0) prediction = loaded_model.predict(x) if prediction<0.5: print('circle') else: print('square') img_path = 'D:\\neuro\\test\\square\\2976.png' img = image.load_img(img_path, target_size=(150, 150), grayscale=False) x = image.img_to_array(img) x =x/255.0 x = np.expand_dims(x, axis=0) prediction = loaded_model.predict(x) if prediction<0.5: print('circle') else: print('square') вывод: circle square Да и число эпох сделал 10 и батчсайз 128 что бы не ждать "пол часа"
  2. судя по svm.setKernel(SVM.RBF); у вас RBF функция, а HOGDescriptor принимает только линейную (https://docs.opencv.org/3.4.1/d5/d33/structcv_1_1HOGDescriptor.html). virtual void cv::HOGDescriptor::setSVMDetector ( InputArray _svmdetector ) virtual Sets coefficients for the linear SVM classifier. Ну и вызовите getDescriptorSize да сравните с размером вашего детектора.
  3. Вообще все книги на данную тему довольно однотипные, берите первую какую найдете. Есть хороший курс для начинающих "Введение в компьютерное зрение и глубокое обучение", читаемого на факультете ВМК МГУ в весеннем семестре 2017 года. На ютубе лежит.
  4. Пo C# OpenCV и linux: принципиальных сложностей там нет, emgu есть в Xamarin версии и спокойно запускается на Linux, Unix. Если проект написан только с использованием emgu, то ничего переписывать не придется. По в целом ANPR системам: на рынке(российском) есть несколько хороших продуктов, но все они рассчитаны больше на корпоративных клиентов (основной заказчик госсектор). Для "частников" особо ничего нет, связано это частично с высокой стоимостью и сложностью таких систем и частично с низким спросом. Под требования vash_sa (unix, русские номера, и железо типа малинки) вообще ничего нет, ни в виде сдк ни в виде готовых продуктов. В OpenSource нормального тоже ничего нет, есть много поделок типа: нашли номер соболем ( хааром, cnn) натравили на него tesseract и получили номер. Точность у них в лучшем случае 80-90%. Что бы выйти на хоты бы 95%, нужно потратить очень много времени и ресурсов, соответственно в отрытый доступ никто это не выложит.
  5. [Help] Работа с видео

    CopyFromScreen это пример метода который "встроен" в C#, в питоне есть аналоги. Можно вообще на заморачиватся, и взять vlc запустить там захват экрана и пустить все это в rtsp поток, который уже без проблем подхватит opencv.
  6. [Help] Работа с видео

    В opencv нет методов для захвата картинки с экрана, да и не должно их там быть. Используйте другие библиотеки или winapi(в том же C# из коробки есть метод CopyFromScreen), по скорости 10fps у вас точно будет, нужно будет больше потом перепишете это место. Проблемы у вас возникнут явно не с этим. И подумайте 10 раз над выбором языка, с++ не самый просто язык.
  7. Для начала глубокое знание теории не обязательно. Достаточно общего представления. Можете пройти курс на stepik.org потратив пару дней. По практике: Используйте более высокоуровневые фреймворки типа Keras (есть учебник с примерами на русском "библиотека Керас - инструмент глубокого обучения"). Там все довольно просто.
  8. Тренировка (haar cascade training)

    1. количество примером чем больше тем лучше. Количество положительных и отрицательных должно быть примерно равным. 2. Положительный пример - это фотография где есть искомый объект. Т.е. это целая фотография, в которой указывается область где есть объект. Обрезать ничего не нужено. Сам размер области и всей фотографии не важен. Но каскад у вас 20 на 20, т.е. квадрат и область желательно делать тоже квадратной. И да надо будет руками отмечать области. 3. Отрицательный пример - это фонография где нет искомого объекта. ЕЕ размер тоже не важен. 4. Качество телефона вполне хватит.
  9. Работа с камерами

    Была такая же проблема, помогла установка частоты опорных кадров на 1.
  10. Распознавание лиц

    Hog + нейронная сеть мягко говоря ну лучший вариант для распознавания лиц. Напишите зачем вам эту нужно, какие требования к качеству, как планируете использовать и почему именно hog.
  11. Я могу, язык C# под windows. Если устраивает то пишите в личику.
  12. Выделение области

    Emgu это Emgu.CV.CvInvoke.MinAreaRect() OpenCVSharp это NativeMethods.imgproc_minAreaRect_Point
  13. обнаружение объекта на видео

    1. Покажите видео 2. Уточните это вам нужно только для этого видео, или для целого класса подобных видео. Если класса, то какие они могут быть 3. Требования к производительности и точности Самое просто стройте гистограмму каждого видео по компоненте цвета, там где красный компонент усилится там ваш шарик появился.
  14. cvSetImageROI это выбор области куда будет "наложено" изображение. выберите другу и копируйте в нее. не забудьте потом сделать cvResetImageROI
  15. не знаю как в С++ но должно быть что-то типа: cvSetImageROI(mat_big , cvRect(1280-64,480-64,64,64)); cvCopyImage(img, mat_big); cvResetImageROI(mat_big);
  16. Если вы случайно обращаетесь к памяти то никакая архитектура не поможет. Ваш пример немного не понятен, вы хотите общую гистограмму всего изображение или скользящих окон. Для общей гистограммы, так там последовательное обращение будет внутри каждого потока, а результат в разделяемой памяти А для скользящего окна, если окно достаточно крупное можно использовать интегральное изображение (по одному на регистр) и на порядок сократить обращение к глобальной памяти.
  17. http://5argon.info/portfolio/d/SegNetSummary.pdf на тесле 500*500 пикселей 33мс, на cpu 10секунд
  18. Тоже интересует эта тема, но для C#, смотрю пока в строну cntk от microsort. Там вроде бы есть импорт из keras но толком не пробовал еще.
  19. Что то у вас рисунок явно не DetectMultiScale 1. находим минимальный прямоугольник(со сторонами параллельными осям) в который вписан ваш контур ( а в DetectMultiScale у вас и так будет уже прямоугольник и делать ничего не надо ) var box = NativeMethods.imgproc_minAreaRect_Point(contours, contours.Length); 2. Вырезаем image.SubMat(f)
  20. Работа с float изображением

    Была подобная задача, но не угол нужно было определить, а расстояние на плоскости пройденное объектом, но одно к другому сводится. Решалась так: 1. задаем условно 4 точки на кадре 2. Замеряем чему эти точки соответствует на плоскости (или какому углу) 3. рассчитываем коэффициенты для полинома второго порядка, решая систему уравнений 4. получаем результат. Есть момент что чем ближе к краю кадра тем менее точно полином второго порядка соответствует реальным искажениям объективов.
  21. Вместо cvMinMaxLoc(res, &minval, &maxval, &minloc, &maxloc, 0); пробегайте сами по "res" и выбирайте максимальные значения с нужным фильтром.
  22. ffmpeg и потоковое видео

    В opencv декодируется видео с ip камеры силами самой opencv (3.1, ffmepg), через некоторое время число кадров выданное opencv и пришедших с камеры (перехват udp пакетов) начинает отличатся. Opencv пропускает кадры, собственно вопрос куда деваются кадры: 1. При нехватки ресурсов кадр который пришел в момент когда еще не обработан предыдущий просто отбрасывается 2. или они кэшируются и последовательность кадров не нарушается но возникает задержка
  23. ffmpeg и потоковое видео

    Это происходит 1 раз на 10 000 кадров в среднем, рывок сложно будет заметить.
  24. minNeighbors. Число минимальных объектов найденных в данной области. Т.Е. на один знак(область изображения) может откликнутся сразу несколько окон (+- несколько пикселей в сторону, разный масштаб), если этих откликов меньше чем minNeighbors то область отбрасывается. При значении 0 будут возращены все варианты (на один знак может быть несколько пересекающихся областей). Грубо говоря чем больше это значение, тем более параноидальным будет поиск и тем чаще он будет пропускать объекты, считая, что это ложное срабатывание.
×