mixa7638
Пользователи-
Количество публикаций
28 -
Зарегистрирован
-
Посещение
-
Days Won
2
mixa7638 last won the day on May 8 2013
mixa7638 had the most liked content!
Репутация
5 НовичекО mixa7638
-
Звание
Бывалый
- День рождения 01.04.1993
Profile Information
-
Пол
Мужской
-
да по сути ни чем не отличается, кроме как вероятностью существования уже готовых алгоритмов. если для трехмерных случаев алгоритмы есть, то под 4-х мерный вариант их надо переписывать. Но это не проблема, перепишу. за ссылку спасибо)
-
Доброго времени суток. Нужен совет по поводу кластеризации четырехмерных данных) собственно вопрос демонстрирует приведенное изображение. это моя визуализация моих 4-х мерных данных в трехмерном пространстве) на приведенном изображении присутствуют, если присмотреться, 7 классов. стоит оговориться, что число классов за ранее не известно, и может различаться от случая к случаю... думал написать свою реализацию кластеризации 4-мерных данных, но решил, что, вероятно, задача уже кем-то решена) пока наткнулся на 3-мерный вариант k-means, думаю что смогу переделать его и под 4-х мерный вариант, но вопрос в том, что алгоритм требует задавать количество кластеров вручную, а моя задача именно понять, сколько кластеров здесь присутствует. еще картинка с данными уже 5 классов в общем, если у кого какие соображения есть на этот счет буду рад, если поделитесь.. пока решил по изучать библиотеку Points Cloud Library, может кто работал с ней и может что посоветовать?
-
mixa7638 начал следование за Алгоритмы кластеризации 3-мерных данных
-
все ясно) спасибо
-
добрый день. собственно суть вопроса: пусть имеется видеоролик с движущимся объектом. у данного объекта выделяющиеся относительно фона границы, а вот область внутри - безтекстурная. без большого количества ключевых точек. При вычислении оптического потока в каждой точке последовательности изображений получаю хорошую маску движения для контуров и прилегающих областей, а вот в середине обьекта получаю дыру. причем порой такую, что даже морфологические операции не помогают. есть ли какие нибудь медоты борьбы с этимы дырками. ( для полной картины скажу, что камера расположена зенитно, а движущиеся объекты - люди, которые под ней проходят. однородные области - всякие лысины, да и просто спины, на которых почти нет ключевых точек )
-
там вся проблема в том, что бы каждый многоугольник был минимальными... я пока пробегаю каждый пиксель изображения, и если он черного цвета, то делаю копию изображения, потом в этой точке делаю floodFill. из получившегося изображения вычитаю сделаную копию и получаю маску. звучит как костыль, но вроде быстро...
-
идея хороша, но не прокатило. не запускается на 64 битной семерке. может попозже запущу... кстати вопрос не в тему, но в openCV есть такая функция, которая могла бы сегментировать такие изображения? что бы получить непересекающиеся многоугольники, что бы потом по ним маски сделать. а то вручную много писать.... если что, для каждой линии знаю её координаты.
-
а, случайно, никто с HOG ом не работал? возможно ли обучить классификатор, что бы скользящим окном проходить сверху вниз и смотреть ответ? у меня же получается HOG дескриптор, на котором можно попробовать обучить нейронную сеть. так не? и еще вопрос есть. для такой картинки гистограмма яркости будет однородной и без провалов как горизонтальная, так и вертикальная. есть ли способ по гистограме понять что здесь два обьекта?
-
день добрый. стоит задача сегментации изображений в оттенках серого и интересует мнение общественности. пусть имеется картинка, полученая методом аккумуляторной линии с оптического потока (18.png), маска движений (20.png), ну и бесхитросно полученый передний план (22.png). хотелось бы узнать количество людей, за данный проход ( реально там 10 человек прошло ) и услышать конструктивные предложения по методам их подсчета. может как то можно на этой картинке обучить неиронку, но не понятно какие данные ей подавать. формируется данная картинка следующим способом: поток людей проходит под зенитной камерой, расчитывается оптический поток на линии (counting line) и данная линия высотой в пиксель и шириной с линию подсчета закидывается в аккумулятор. маска формируется на основе движения (оптического потока) на линии. пока анализирую распределение оптического потока и получаю картинку примерно такую, как на последней картинке. получается что несколько человек слепляются в один кластер. можно анализировать, конечно, границы, но это, мне кажется, трудоёмко. собственно, если есть какие нибудь идею буду рад услышать.. С одиночными, двойными, тройными проходами проблем в принципе нет... самая большая проблема, что второй и третий человек, идущие параллельно похожи на четвертого широкого человека и трудно их различить. где один широкий человек, а где два параллельно.
-
именно они)
-
два куска кода - Flandmark_detector и headtracker-master с гитхаба. собрал их в один проект для своих целей, вроде работет. это мой проект. Надеюсь вопрос правильно понял) там нет библиотек, все в исходниках.
-
покопавшись в исходниках можно найти для себя несколько заготовок, таких как построение 3d модели лица, его трекинг и даже ( на начальном этапе ) вычисление значения фильтров габора в ключевых точках этой модели. может кому пригодиться... трекинг работает весьма быстро для одного человека, но я по быстрому переделал под свои цели для двоих. в основе детектирования ключевых точек - Flandmark_detector, трекинга - headtracker-master. (лиценция которых GNU GPL, для тех кого это вообще интересует). должно даже собраться и заработать (под ubuntu писалось) Написано на С++, есть куски на С. для работы нужна opencv2.4.4 lndmark.tar.gz
-
в том то и проблема что бинарные классификаторы не дели желаемого результата. я же чисто для примера прокружки и квадратики говорил) как начальный этап для понятия работы нейронной сети. если брать что - то сложнее, лица к примеру, то проблема отсечения по порогу возникает... именно её я имел ввиду
-
похоже еще читать и читать) Кстати, я так понимаю возможности применения этой нейронной сети ограничиваются задачей классификации из закрытой базы? просто если мне надо не только к примеру отличать кружки от квадратиков, но и все остальные всевозможные фигуры классифицировать как "не круг и не квадрат". то есть если будем иметь нейронку с двумя выходами ( квадрат и круг ), хорошо ей натренируем, а потом подадим неизвестную нейронке фигуру. По идее будет ошибка. И что бы ее небыло надо добавить еще один выход - "остальные фигуры" и натренировать всевозможными и невозможными изображениями произвольных фигур? а возможных фигур бесконечное множетсво, а невозможных фигур - еще больше... Я надеюсь все правильно понимаю)
-
с такими параметрами херово) как что нибудь дельное получется напишу)
-
спасибо что отвечаете) пока делал так, применительно к задаче распознавания лиц std::vector< std::vector < cv::Mat > > peoples - вектор людей, в котором хранятся векторы фоток каждого человека. так же предполагается, что число фотографий каждого человека фиксированно void NeuralNetwork::trainNeuralNetwork( std::vector< std::vector < cv::Mat > > peoples, Settings mysettings ) { int widthFace = mysettings.faceWidth; int heightFace = mysettings.faceHeight; int countPeople = peoples.size(); cv::Mat layerSizes( 1, 3, CV_32SC1 ); layerSizes.at<int>(0,0)= widthFace * heightFace; layerSizes.at<int>(0,1)= 500; layerSizes.at<int>(0,2)= countPeople; this->myMLP.create( layerSizes, CvANN_MLP::SIGMOID_SYM, 0.6, 1); std::vector< cv::Mat > datafaces; for( unsigned int i = 0; i < peoples.size(); i++ ) { cv::Mat dataface( peoples[i].size(), widthFace * heightFace, CV_32FC1 ); for( unsigned int j = 0; j < peoples[i].size(); j++ ) { cv::Mat trainSample = peoples[i][j].reshape( 1, 1 ); cv::Mat row = dataface.row(j); trainSample.copyTo( row ); } datafaces.push_back( dataface ); } cv::Mat bigMat( datafaces[0].rows * datafaces.size(), widthFace*heightFace, CV_32FC1 ); cv::Mat bigMatOutputs( datafaces[0].rows * datafaces.size(), countPeople, CV_32FC1, cv::Scalar(0) ); int countPicture = 0; int counterBigMatRows = 0; while( countPicture < countPeople ) { for( int i = 0; i < datafaces[countPicture].rows; i++ ) { cv::Mat tempRow = datafaces[ countPicture ].row(i); cv::Mat tempBigMatRow = bigMat.row( counterBigMatRows ); tempRow.copyTo( tempBigMatRow ); counterBigMatRows++; bigMatOutputs.at<float>( counterBigMatRows, countPicture ) = 1; } countPicture++; } cv::Mat weigth( 1, counterBigMatRows , CV_32FC1, cv::Scalar::all(0.3) ); int train = this->myMLP.train( bigMat, bigMatOutputs, weigth ); std::cout<< "Train - " << train << std::endl; } И сразу вопрос возникает надо ли исходные картинки преобразовывать во float вручную? то есть брать значение каждого пикселя каждой картинки, делить на 255 и пихать обратно? а то приходят они в функцию как unsigned char. а так же какая примерно стуктура подойдет(скрытые слои и нейроны в них), если я собираюсь сравнивать лица. хотя бы порядок чисел)