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

svoyak

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

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

  • Посещение

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

  1. Добрый день, уважаемые форумчане. Есть задача считать повторяющиеся движения в видеопотоке. Например человек приседает.. или отжимается.. ну или машет рукой "Пака!!". Я почему-то решил обучить для этого сеть(не исключено, что это ошибка и есть способы получше). Подскажите плз в какую сторону копать? То что я видел в гугле сводится к подсчету каких -либо попугаев на картинке(т.е. их наличие и количество). Как это обобщить на видео не понятно. Должно фиксироваться ведь движение целиком.. Есть вот идея обучить распознавать к примеру несколько положений и скармливать кадры сети и фиксировать обнаружение какого-либо положения - потом переходить к следующему, останется только задать правильную последловательность распознавания..Но чесно говоря.. это нужно разбить движение на фазы.. для каждой фазы нужна своя выборка и т.д. Чот смахивает на неоптимальность.. Может есть лучшие предложения?? Премного благодарен.
  2. Здравствуйте, подскажите плз, есть ли методики дообучения классификатора. Ну вкратце, чтобы в сеть, натренированную на 100 классов можно было добавить новый класс без полного переобучения. Или может быть можно как то "складывать" сети, треированные на разные наборы классов?
  3. Оу..Спасибо, а не подскажите какой-нить документ или пример со "срезанием слоев".. или правильное название этого действия(можно english) чтоб прогуглить. Не хватает знаний матчасти в том, как это сделать.. и, к примеру, сколько слоев срезать..Спасибо..
  4. Добрый день! Есть вот такая ситуация: собрал и заработал OpenFace, с ним все хорошо..128 точек мне выдается.. Теперь возник вопрос как имея 100000 таких записей осуществлять по ним поиск для выявления наиболее похожего? вот в этой статье https://habrahabr.ru/post/306568/ автор разделил весь процесс на 4 шага и последний шаг - это как раз то что мне нужно, но я немного не понял предложения использовать SVM(может потому что я не знаю что это:-) Я считал, что получив координаты искомого, мы сможем довольно легко найти наиболее похожего путем наложения каких-нить фильтров, или вычисления длины векторов в пространстве..Не могли бы вы немного прояснить где я не прав, похоже я не вижу проблемы там, где она есть. И если можно чуть прояснить как использовать метод опорных векторов, может на каком нить примере, почитал в википедии про него, но там как всегда сферический конь в ваккуме:-)) Я чесно говоря думал, что мне нужен какой-то алгоритм поиска ближайшего соседа в N-пространстве, или не так? Спасибо.
  5. Добрый день всем! Прогнал я все что предлагает openface и столкнулся наверно с непониманием своим.. Плз проясните где я неправ.. Опишу ситуацию. Я пользовался https://cmusatyalab.github.io/openface/demo-3-classifier/ вот этой инструкцией от производителя так сказать. Скачал LFW набор и решил провести на нем тесты. Цель - проверить предлагаемый производителем классификатор. Я выбрал всех у кого есть 5 и более фото(иначе там варнинги на какомто из этапов), это все равно несколько тысяч человек. Обрезал и отцентрировал их фотки согласно инструкции, скормил их извлекателю фич, получил два файла(как в инструкции) и потом скормил их тренировщику классификатора. Он тренировался минут 15-20 и закончил(сформировал файл). Далее я начал проверять сам классфикатор(он там в виде файла *.pkl) Я давал ему картинки из того же набора, на котором он и тренировался..для облегчения его работы. Результаты он выдавал очень грустные, то ошибки то правильное совпадение с confidense около 0,1 - это в лучшем случае. Тогда я начал последовательно уменьшать набор и результаты стали шикарными, когда в наборе осталось 3-4 разных класса, я так понимаю чтото здесь не так или я чего-то не сделал.. Я хотел использовать классификатор для быстрого поиска наиболее похожего и вроде бы по инструкции он там так и используется.. но у меня чтото не работает. Проясните плз куда смотреть.Спасибо. Я понимаю, что саму сеть ведь мне не нужно перетренировывать?? Она уже обучена и должна работать? только классификатор для моего набора, на фичах извлеченных готовой сетью?
  6. Я так понял OpenFace - это натренированная сеть и совсем чуток помогательных скриптов вокруг нее..А openBR - судя по их сайту, это целый фреймворк для работы..
  7. Спасибо, я думаю руками в любом случае лучше сделать, как запасной/проверочный и самый понятный вариант..ок .. Подскажите плз, еще а где можно качнуть какойнить датасет с лицами? нашел вот такой CASIA-webface - но его и оригинальный не дают скачать, а еще говорят он весьма грязный.. ну в смысле там много мусора.. вроде бы его разраб OpenFAce почистил и выложил кудато но все сцылки дохлые.. Может еще есть чегото?? Спасибо
  8. я не проверял еще... тогда сделать предвыборку по длине не получится.. Я как-то упустил этот момент.. т.е. что, там все длинны векторов равны 1?? kNN сейчас тоже курю...:-)) вот интересно есть некие алгоритмы, встроенные сразу в несколько СУБД( MSSQL, postgres), вроде MSSQL Analysis Services(както так) и вроде бы эти алгоритмы как раз так и называются: Поиск ближайшего соседа(ей). Я бегло гуглил примеру работы с ними - они все для геоданных, у которых размерность маленькая.. и чесно говоря непонятно, можно ли натянуть их на задачу поиска среди 128ммерных данных.. Может кто слышал об этом что-нить?? Хорошо наверно было бы запользовать готовый велосипед.. Спасибо.
  9. Ок..спасибо за поддержку..как всегда понятно, что ничего не понятно..:-)) Вы имеете ввиду перебирать все наличиствующие вектора?? наверно это будет очень долго..или я неправильно понял?? а по поводу SVM, если его научить классификации на некотором наборе, а со временем этот набор будет меняться(расти), то точность классификации будет ухудшаться??? Я вот кстати еще подумал..можно ведь хранить базу частями на нескольких серверах и запускать поиск сразу на всех.. хоть это и топорно но даст ускорение прямо пропорционально количеству серверов. после поиска на всех - сделать поиск по результирующей выборке.. Хотелось бы только узнать как максимально быстро с точки зрения математики сравнивать вектора..
  10. Добрый день/вечер! Натолкнулся я на такие вот грабли. Есть проект на дотнет использует сетку , построенную FANN(есть враппер), вроде бы все неплохо..сетка считается, сходится, все это интегрировано в код. Родной гуй для FANN построенную враппером сетку тоже понимает и работает с ней. Проблема в том, что сетка считается отшень долго, ну скажем так часы.. понимаю что может это и недолго, но есть два GPU и захотелось научиться считать на них, все пишут что очень быстро считает.. ДЛя этой цели был найден libcudann и вкручен в проект по работе с Gpu(CUDA). После долгих исправлений, ибо libcudann изначально был под linux он таки заработал GPU посчитали иии... Формат файла, в котором сохраняется сеть совсем не похож на формат FANN, очевидно я из непонимания или еще каких-то тараканов посчитал, что они должны быть совместимы.. Я ошибся и это прискорбно..Теперь вот прошу совета, можно ли как то сконвертить их. В атаче приложу примеры файлов. Я к сожалению непонимаю смыслы того что в них написано, поэтому не могу это сделать, может кому-то их формат понятен будет..Спасибо. Собссно вот почему я посчитал что они должны быть совместимы http://corpocrat.com/2014/11/09/running-a-neural-network-in-gpu/ FANN.rar gpu.rar
  11. да, может не самый простой..но вроде бы работает.. прикручивается в виде с++ dll, которая работает с libcudann..описать подробней??
  12. Снимаю свой вопрос как дурацкий, в Libcudann есть своя функция для работы с сетью(в смысле уже классификации) Кстати на gpu считается ну просто очень быстро..
  13. Здравствуйте, добралось и до меня распознавание тескста.. Много прочитал коечто сделал ну и соотвественно натолкнулся на некоторые трудности.:-)Я их перечислю ниже, если не тяжело то дайте советы по преодолению..:-) Общий алгоритм таков: 1. Повышаю контраст. 2. Перевожу в градации серого. 3.Делаю бинаризацию.4 Получаю контуры.5 - сортирую их по площади выбираю больше определнного числа(это буквы).Далее хочу настрогать большое количесвто разных и скормить нейросети FANN. До скармливания наборов сети еще не дошел, т.к. хотел получить максимально вменяемый набор символов. Итак о трудностях: 1. При бинаризации(обычная OTSU) очень часто получаю прерывистую змейку вместо линии, очевидно что промежуточный серый и около него отбрасывается, а хотелось бы наоборот чтоб он считался как черный, чтоб линии были без разрывов. Мне кажется тогда контуры будут получше находится. Из чтения форума выяснил что стоит попробовать адаптивную бинаризацию, так ли это? Может что нить еще? 2. Самая большая проблема - слипшиеся символы.. Пока решение не придумал, как их разделять. Есть метод ConnectedComponents, что делает я понял, но как это натянуть на разделение символов - не понял. Может он и не для этого совсем? Подскажите плз. Ну и вообще как бы решить задачу разделения. Единственное, что пока придумал - бежать окном и смотреть степень похожести с последующим вырезанием. Но я вот не знаю скорость работы нейросети, мне кажется она не справится(реал тайм не обязателен, но время меряется единицами минут). Ну и сопуствующий вопрос - может tesseract прикрутить для разделения? Почему не хочу полностью использовать tesseract - шрифты сильно разные, поэтому думаю не справится - отсюда выбрал нейросеть. Да вот еще не знаю стоит ли гдето в процессе вставить скелетизацию, так как плохо понимаю ее влияние, стоитл ли? и где?:-) Вообщем както так..Спасибо всем за советы.
  14. mrgloom - еще раз большое спасибо, правильно ли я понимаю, мне нужно установить DIGITS на винде, - это будет как я понял чтото типа надстройки над Caffe. Caffe - это собственнно фреймворк для работы с нейросетями. В нем есть несколько, что ли типов сетей, один из которых Lenet(специально созданный для работы с символами, скажем так)? И мне нужно будет сделать и обучить сеть такого типа, используя DIGITS(Caffe). MNIST - это стандартный набор данных для проверки результатов?. Я так понял в нем только цифирь находится. Про файнтюнинг пока не буду спрашивать, хочу пока научиться получать такие же результаты как у вас на картинке:-) - очень они отличаются от моих на FANN. Поправьте если что неверно. Спасибо :-)
  15. mrgloom - большое спасибо, не могли бы вы уточнить - вы конвертили картинки, или так 80x100 из архива и давали в сеть?? и параметры сети если можно, может я их неправильно выбираю..Обучение долго шло? И если не тяжело, можно кратко написать что есть Lenet, Digits и зафайнтюнится на MNIST.. а то буду читать и что нить не так себе представлю.. Похоже мне надо уйти с FANN :-)) ил правильные параметры сетки подбирать, что звучит довольно грустно..
  16. С тренировкой разобрался..:-)) как ни стыдно сказать, но ошибся опять я..:-)) теперь уже когда подсовывал данные для готовой сети.. Тупой копипаст с примера, селяви.. в примере из-за специфичности работало, а у меня 50/50.. или еще хуже.. Однако все равно результаты не радуют, хотя гораздо лучше чем было. Я бы хотел попробовать сделать входные данные более похожими, так сказать..чтоб сеть не сходила с ума при обучении.. Для этого я бы хотел для начала научиться заливать изображения как на рисунке. Контуры я их получаю и могу закрасить, вопрос в том, как из закрашенного вычесть фон, чтоб как в примере получилась дырка вверху цифры 9.. Насколько я понимаю о чем-то похожем писал но я непонял как это сделать, если можно подробней. Мне кажется нужно научится выделять контуры с фоновым цветом, тогда они были бы маской? Что нибудь типа волшебной палочки фотошопа, но в отношении всей картинки для какого-нить определенного цвета +- Tolerance. Можно такое сделать?? или я сильно увлекся теорией..:-))Спасибо. После препроцессинга изображений у меня получаются картинки 80x100, если я их смасштабирую 20x25 с количеством нейронов в скрытом слое 150 то за пару часов сеть как-то обучается. Я подумал, что если увеличить размерность входных данных и не масштабировать, то наверно это будет лучше, однако уже на 40x50 и 600 нейронов во входном - сеть не обучилась в течение несокльких суток.. Что я неправильно понимаю здесь? Спасибо.
  17. Подскажите плз такой момент, варианты враппера делятся по типу(вот не пойму чего, точности чтоли), ну т.е. есть одинаковые либы для float, double и fixed. Я вот никак не могу вписать это в свое понимание, не могли бы вы прояснить плз. Как тип влияет и как его надо выбирать? Спасибо.
  18. Здравствуйте, подскажите, что делает этот кусок, если можно то сигнатуру конструктора, никак не могу найти подходящий в с# врапере // Архитектура сети. Создадим трехслойную сеть. Mat layer_sizes1( 1, 3, CV_32SC1 ); // По размеру входного вектора layer_sizes1.at<int>(0) = image_area; // Ну, так мне захотелось layer_sizes1.at<int>(1) = image_area/10.0; // По количеству классов layer_sizes1.at<int>(2) = DirNames.size(); последний параметр в к-ре задает точность как я понял, что присваивается понятно, неясно чему присваивается. Спасибо у меня есть вот такой конструктор, но тут еще количество каналов нужно, не знаю чего туда написать public Mat( int rows, int cols, DepthType type, int channels ) здесь вроде бы DepthType - это ваш последний параметр
  19. Я не большой спец по с++, я так понял мне нужен один файл из архива, main.cpp - точней нужно заставить его скомпилироваться и заработать. Это верно?? Я решение открыл там три проекта..вообщем чегото недопонял:-) Ушел читать про установку opencv на винду и ее пользование.. я до этого враппер пользовал..:-))
  20. вот решение для VS.. полученная сеть сохраняется в корень C. ну это поправить там не долго. Новый файл - нужно создать файл рядом с папками с сэпмлами и выбрать его(train.tr например).. туда запишутся данные..потом Тренировать и выбрать этот файл. Потом выбрать полученную сеть и подсовывать ей сэмплы. FileMaker.rar
  21. А что за матлабовский формат?? там вроде картинки просто.. а в матлабе что-то другое на входе?? Я из картинок делаю тренировочный файл, там одна строка - входной вектор(картинка), следующая - выходной вектор, где на соотвествующем месте 1, а остальные 0. Получается такой большой текстовый файл, его скармливаю уже сети.. если нужно могу выложить делалку таких файлов.
  22. Читая доки по FANN понял, что у меня создается сетка с одним скрытым слоем: uint[] layers = { (uint)(char_size.Width * char_size.Height), 2000, (uint)ch_arr.Length }; net.CreateStandardArray(layers); наверно мне нужно больше слоев?? вот только как их выбрать, и количество нейронов в них..
  23. Вот полный набор сэмплов, когда их готовил я был излишне оптимистичен по поводу производительности, поэтому сделал их 80x100(это почти без сжатия), но с такими параметрами сеть вообще залипает наверно навсегда, поэтому последние разы для тренировочного файла и тестов конвертил в 20x25.. если надо могу выложить этот же набор в таком разрешении.. Если не тяжело посмотрите плз на предмет того, что не так с этим набором..Спасибо. 1.rar
  24. Выкинул из каждого набора для символов наиболее нехарактерные сэмплы, к примеру есть символы полностью нарисованные черным, а есть как бы контур символа черным а внутри белое(я писал выше), так вот вторые выкинул и уменьшил количесвто входных данных - не заработало. Выкинул 2/3 символов вообще, т.е. было 16 оставил 5 - заработало. Может кто нить сказать по этому признаку чего не хватает моей сети?? нейронов/слоев/мощности/итераций?. Т.е. на меньшем разнообразии входных данных сетка начала работать.
  25. Добрый вечер всем..:-)) Дошло у меня наконец то дело до обучения сети, я пользовал FANN и враппер для нее с#, сделал файл тренировочный и вперед. Хочу оговорится, у меня есть не мой проверочный проект, на котором я проверял работу своего кода - т.е. файл делается правильно и сеть тренируется правильно - смотрел потом отклики.На моих данных все вышло очень печально(FAIL). Вкратце проблема в том, что при сравнимых объемах входных данных(и одинаковых настройках сети) тестовый проект обучается минут за 5 и работает четко, а с моими данными получается ерунда - обучается может чуть подольше - но отклики радикально неправильные. Попробовал увеличить количество итераций(2000->10000) - начал считать часами(наверно так не должно быть), при том что тестовый сходится на 500 итерациях, а мои данные после 2000 считают неправильно. Вот думаю куда теперь мне копать.. Неплохо наверно было бы GPU подключить как нить, чтоб быстрей хоть было. Или понять что не так: у меня условно 3000 картинок 20x25 -> это 16 символов, картинки бинарные, если код делает сеть, которая отлично решает тестовые 3000 таких картинок и не может сделать сеть для моих, то 1. картинок нужно больше?, 2.картинки в пределах одного символа нужно сделать более похожими? может нужно использовать адский шушпанцер типа NVdida Tesla?4. какието настройки в сети менять? я чесно говоря немного в растерянности.. Спасибо за советы.. Посчитал 10000 итераций(2 часа) - результаты неверные..печалька
×