-
Количество публикаций
3 873 -
Зарегистрирован
-
Посещение
-
Days Won
346
Все публикации пользователя Smorodov
-
Вероятно открылась только одна камера. У VideoCapture есть метод isOpened, желательно бы его тоже проверять после открытия камер. Если не открываются, то надо проверять могут ли эти камеры вообще совместно работать. Нашел, кстати свой тест 3-х камер: #include "opencv2/highgui/highgui.hpp" #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <vector> #include <stdio.h> using namespace cv; using namespace std; int main(int ac, char** av) { VideoCapture capture0(0); VideoCapture capture1(1); VideoCapture capture2(2); if (!capture0.isOpened()) { cout << "Cam 0 failed to open." << endl; return 0; } if (!capture1.isOpened()) { cout << "Cam 1 failed to open." << endl; return 0; } if (!capture0.isOpened()) { cout << "Cam 2 failed to open." << endl; return 0; } namedWindow("Cam0"); namedWindow("Cam1"); namedWindow("Cam2"); Mat frame0; Mat frame1; Mat frame2; int k = 0; while (k != 27) { capture0 >> frame0; capture1 >> frame1; capture2 >> frame2; if (!frame0.empty()) { imshow("Cam0", frame0); } else { cout << "frame from cam 0 empty" << endl; } if (!frame1.empty()) { imshow("Cam1", frame1); } else { cout << "frame from cam 1 empty" << endl; } if (!frame2.empty()) { imshow("Cam2", frame2); } else { cout << "frame from cam 2 empty" << endl; } k = waitKey(20); } return 0; } Код проверок добавил сейчас, не компилировал, должно работать, но мог где нибудь опечататься.
-
Ну тогда надо идти в отладчик и смотреть где падает, и что чему равно. Проверьте открылись ли камеры, открываются ли они по одной, не идут ли пустые кадры, в общем добавьте нормальную обвязку с обработкой ошибок. Нумерация камер у вас в системе вполне может вас удивить, попробуйте разные варианты. Я читал с трех камер и все было нормально. ЗЫ: Не нужно каждый раз звать waitKey, достаточно одного раза для обновления всех окон.
-
GTX1070 работает в TF с CUDA 8.0 на Ubuntu 16.04. Как ставил, если честно не помню уже, вроде проблем не было. TF особо не использую, тестил на немного модифицированном скрипте из примеров (добавил установку девайса): # Copyright 2015 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================== """A very simple MNIST classifier. See extensive documentation at http://tensorflow.org/tutorials/mnist/beginners/index.md """ from __future__ import absolute_import from __future__ import division from __future__ import print_function # Import data from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf with tf.device('/gpu:0'): flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_string('data_dir', '/tmp/data/', 'Directory for storing data') mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) sess = tf.InteractiveSession() # Create the model x = tf.placeholder(tf.float32, [None, 784]) W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x, W) + b) # Define loss and optimizer y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # Train tf.initialize_all_variables().run() for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) train_step.run({x: batch_xs, y_: batch_ys}) # Test trained model correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels})) Лог скрипта: В configure вроде явно спрашивают про GPU. configure Еще наткнулся на похожие вопроы на SO: http://stackoverflow.com/questions/39817645/cuda-cudnn-installed-but-tensorflow-cant-use-the-gpu и http://stackoverflow.com/questions/38794497/tensorflow-bazel-0-3-0-build-cuda-8-0-gtx-1070-fails
- 1 reply
-
- cuda
- deep learning
-
(и ещё %d)
Теги:
-
А если проверять что изображение не пустое перед отображением ?
-
Можно извлечь дескрипторы контуров (например дескрипторы Фурье, или моменты hu (hu moments), или еще какие ) и хранить их.
-
Нейронная сеть для распознавания символов номерного знака
Smorodov replied to Андрей_Андрей's topic in Вопросы по нейросетям и ИИ
Ну это перебор конечно. 50-200 нейронов в скрытом слое вполне хватит (по опыту), (в несколько раз больше кол-ва нейронов выходного слоя). И одного скрытого слоя вполне хватит. -
Нейронная сеть для распознавания символов номерного знака
Smorodov replied to Андрей_Андрей's topic in Вопросы по нейросетям и ИИ
Нормально должна полносвязная работать. Не такая уж она и большая для данного случая. Только нормализацию данных предварительно проведите (вычесть среднее, привести к диапазону [0:1] или [-1:1] ). -
Почитайте этот топик: А так то, в большинстве случаев с консольным вариантом удобнее работать.
-
Получится, но лучше было бы vs2015 community edition, он более новый и бесплатный. На ютубе полно видео по установке:
-
Borland C тоже в шаблонах не силен , тем более такой старый, то что Вы привели выше, только верхушка айсберга. Лучше переходите на visual studio или Qt, намного меньше проблем будет.
-
Да вроде отсюда: http://releases.ubuntu.com/16.04/
-
Ну не знаю, у меня по тому руководству на свежепоставленную ubuntu 16.04 все сразу установилось безо всяких манипуляций с FFMPEG. Для CUDA 8.0 пришлось поставить свежий thrust, а так все без проблем.
-
Ну так PID/VID гуглите и libusb . Не заводской номер конечно, но большего я думаю можно добиться только через драйвер (если заводской номер там вообще вытаскивается).
-
Попробуйте поставить: sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
-
А пробовали другие форматы видео файлов ?
-
Я ставил примерно как здесь написано: http://embedonix.com/articles/image-processing/installing-opencv-3-1-0-on-ubuntu/ может еще с кодеками проблемы, изображения читаются нормально ?
-
Нейнную сеть научить определять цвет
Smorodov replied to maxfashko's topic in Вопросы по нейросетям и ИИ
Мне думается, здесь важно иметь "опорные" цвета, их можно вычислить зная что за объекты изображены на картинке. Для этого нужна сегментация сцены. По абстрактной кучке пикселей, мне кажется параметры хорошо установить не получится. -
Нейнную сеть научить определять цвет
Smorodov replied to maxfashko's topic in Вопросы по нейросетям и ИИ
Соорудите датасет, состоящий из изображений со сбитыми вами параметрами как вход, и величины на которые сбиты параметры как желаемый выход. Еще посмотрите родственный по теме проект: https://github.com/richzhang/colorization -
Кстати DIGITS умеет как то делать батчи больше за счет последовательной обработки при нехватке памяти. Не тестировал, но видел эту фичу.
-
Ну если на других сетях учится, значит caffe работает. Можно попробовать среднее вычесть, если это не делается до сих пор. Обычно первые итерации сеть примерно этим и занимается.
-
Может быть из за GPU, у меня было что то очень похожее, но вроде как это был баг 0.16 версии. На 970 сеть училась, а на 1070 нет. А может проблема настроек сети: похожий коммент bhargavaurala commented on 8 Jan Hi @mavenlin. I am using the NiN architecture to train ImageNet 2012. After about 50k iterations, the validation accuracy is around 0.1% which corresponds to random chance. I am using the same structure and initialization as you have. Can you please let me know when (iteration number) the validation accuracy starts to increase? This will help me decide if the network is learning anything useful and if I should restart with different hyperparameters. Thanks.
-
Еще вот этот проект посмотрите, там вшита параметрическая модель номера. objectmarker.cpp данные к программке: https://cloud.mail.ru/public/7ZU4/Hmt6Xa4Gp
-
Вот проект нашел, делал давно, посмотрите, может что полезное найдете. Он, насколько помню, извлекал цифры номера, без распознавания. Справлялся с довольно сложными случаями. Кстати, вы свой детектор тестировали на грязных номерах ? LicensePlateDetector.zip
-
Интересно, а что за фрагменты сверху-справа? Там вроде номер почти не появляется.
-
gpu-шные версии opencv-шных команд по-любому используют не одно ядро. Наибольшие издержки обычно возникают при передаче данных host-device и обратно, также занимает время выделение/освобождение памяти (gpuMat), которое у вас в цикле. Еще неплохо бы инициализировать GPU, насколько помню метод setDevice или что то в этом роде, иначе первая операция занимает много времени. Плюс к тому, можно одновременно производить загрузку следующей порции данных и обработку текущей. В общем почитайте, про оптимизацию для CUDA.