-
Количество публикаций
3 873 -
Зарегистрирован
-
Посещение
-
Days Won
346
Сообщения, опубликованные пользователем Smorodov
-
-
В DLIB встроен неплохой обучаемый детектор на основе HOG.
Можно попробовать OpenCV-шный cascade detector.
-
Можно тут взять базовый пример: http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html
Только что то не сильно я верю, что это будут хорошо работать в данном случае, но попробовать можно.
Посмотрите еще такой вариант: http://fox.ino.it/home/cosimo/public/ICIAP2013_CR.pdf
Ну и трекер здесь нужен.
-
Немного радикально, но как вариант : https://devblogs.nvidia.com/parallelforall/detectnet-deep-neural-network-object-detection-digits/
А вообще, неплохо было бы изображения добавить в вопрос.
-
Можно на OpenCL программить была статейка на хабре: https://habrahabr.ru/post/269009/ .
Сложный последовательный код тащить на FPGA не резон, ну а так, все что можно параллелить пойдет очень хорошо.
-
FPGA плата для обработки изображений. (Open hardware):
https://hackaday.io/project/15696-rggber-a-open-hardware-for-image-processing
-
Вот неплохая статейка с кодом для начала.
http://www.learnopencv.com/image-recognition-and-object-detection-part1/
-
Лучше не использовать старый интерфейс, используйте cv::Mat вместо IplImage и функции cv::Функция вместо CvФункция.
Относительно доступа к пикселам посмотрите здесь:
http://docs.opencv.org/2.4/doc/tutorials/core/how_to_scan_images/how_to_scan_images.html
Может еще это будет интересно:
-
Ну наверное я перепутал ее с той что в примерах к CUDA была.
-
DenseCut : http://mmcheng.net/densecut/
Есть еще любопытная библиотека: http://research.project-10.de/dgm/doc/index.html , но я пока не тестил.
Вроде в OpenCV была GPU-шная версия gpubcut, или ее тоже удалили ?
- 1
-
-
Камеры резервируют поток при подключении, а не при захвате кадра, и вышибают друг друга если потока не хватает.
USB все таки осуществляют синхронный обмен данными, и кадры с камеры идут постоянным потоком, независимо от того как часто Вы их запрашиваете.
-
Скорее всего это связано с нехваткой пропускной способности порта.
Камеры, как и цифровые колонки и микрофоны кстати, резервируют для себя определенной (довольно большой) ширины канал, поэтому обычно больше одной камеры на один usb-хост не вешают.
Ну еще может быть питания не хватает, хотя это менее вероятно чем первое.
-
Вероятно открылась только одна камера.
У 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}))
Лог скрипта:
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so.8.0 locally
Extracting /tmp/data/train-images-idx3-ubyte.gz
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:118] Found device 0 with properties:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.683
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.42GiB
W tensorflow/stream_executor/cuda/cuda_driver.cc:572] creating context when one is currently active; existing: 0x2cc5c00
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:118] Found device 1 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.2155
pciBusID 0000:07:00.0
Total memory: 3.94GiB
Free memory: 3.88GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:61] cannot enable peer access from device ordinal 0 to device ordinal 1
I tensorflow/core/common_runtime/gpu/gpu_init.cc:61] cannot enable peer access from device ordinal 1 to device ordinal 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:138] DMA: 0 1
I tensorflow/core/common_runtime/gpu/gpu_init.cc:148] 0: Y N
I tensorflow/core/common_runtime/gpu/gpu_init.cc:148] 1: N Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:867] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:867] Creating TensorFlow device (/gpu:1) -> (device: 1, name: GeForce GTX 970, pci bus id: 0000:07:00.0)
0.9169В configure вроде явно спрашивают про GPU.
Еще наткнулся на похожие вопроы на 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
-
А если проверять что изображение не пустое перед отображением ?
-
Можно извлечь дескрипторы контуров (например дескрипторы Фурье, или моменты hu (hu moments), или еще какие ) и хранить их.
-
Ну это перебор конечно.
50-200 нейронов в скрытом слое вполне хватит (по опыту), (в несколько раз больше кол-ва нейронов выходного слоя). И одного скрытого слоя вполне хватит.
-
Нормально должна полносвязная работать.
Не такая уж она и большая для данного случая.
Только нормализацию данных предварительно проведите (вычесть среднее, привести к диапазону [0:1] или [-1:1] ).
-
Почитайте этот топик:
А так то, в большинстве случаев с консольным вариантом удобнее работать.
-
Получится, но лучше было бы vs2015 community edition, он более новый и бесплатный.
На ютубе полно видео по установке:
-
Borland C тоже в шаблонах не силен , тем более такой старый, то что Вы привели выше, только верхушка айсберга.
Лучше переходите на visual studio или Qt, намного меньше проблем будет.
- 1
-
-
Ну не знаю, у меня по тому руководству на свежепоставленную ubuntu 16.04 все сразу установилось безо всяких манипуляций с FFMPEG.
Для CUDA 8.0 пришлось поставить свежий thrust, а так все без проблем.
Surveillance dataset
в OpenCV
Опубликовано · Report reply
Посмотрите тут, может что пригодится: https://github.com/caesar0301/awesome-public-datasets