• Компенсация движения opencv (emgucv) в c#?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Оптический поток есть в OpenCV, в версии 3.2.0 завезли очень быстрый алгоритм Dense Inverse Search Optical Flow, в с++ создается он так:
    Ptr< cv::optflow::DISOpticalFlow > dis_op = cv::optflow::createOptFlow_DIS(
                cv::optflow::DISOpticalFlow::PRESET_ULTRAFAST);
    dis_op->calc(next_frame_gray, prev_frame_gray, opt_flow);

    Но для кодирования видео оптисеский поток - это как с пушки по воробьям, так как он очень ресурсоемок для вычисления, даже этот DISOpticalFlow. Есть и другие методы, например Farneback, Simpleflow, но последний ужасно медленный (но очень точный), а фарнбэк не видит быстрого движения и он медленнее, чем DISOpticalFlow.
    Ответ написан
    Комментировать
  • Сравнение двух фотографий?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Можно сделать с помощью нейронной сети
    Это делается так, берем обученную, например, на имэджнэте глубокую сверточную сеть, отбрасываем у нее последние 2-3 слоя, так как они являются классификаторами и нам не нужны
    То, что сталось - это слои, которые выделяют признаки
    И потом прогоняем одну картинку через НС, вторую, если активированные на выходе нейроны практически одинаковы, значит и картинки похожи
    Ответ написан
    2 комментария
  • Есть ли в android элементы реализовывающие сворачивающиеся layout?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Поидее, в любом месте, список это или нет, это реализуется изменением относительной высоты элемента с помощью анимации, которую можно описать в xml файле с анимациями
    Ответ написан
  • Как открыть приложение через NFC?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Создать фоновый сервис, который будет запускаться при запуске системы и смотреть на то, какая информация содержалась в прочитанной метке, если она подходит по формату, то откроет приложение
    Ответ написан
    Комментировать
  • Как происходит процесс хранения и получения данных в приложениях типа "ВКонтакте"?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    На клиенте лучше создать sqlite базу данных и в нее кэшировать все, что загружается с сервера, но если в приложении 1-2 страницы (активити) и не длинные списки надо отображать, то можно и без этого обойтись, просто в коллекцию/список загружать их и с помощью двустороннего биндинга привязывать эту коллекцию/список к твоим вьюшкам
    Ответ написан
    3 комментария
  • Как защитить запрос UPDATE от SQL-иньекций в SQLite?

    Luonic
    @Luonic Автор вопроса
    Студент, Unity3d, DotNet, Xamarin
    В общем, нельзя использовать preapred statement в этом плагине. Я сделал в лоб замену одинарных апострофов на двойные регекспом.
    Ответ написан
    Комментировать
  • Чем отличаются нейронные сети?

    Luonic
    @Luonic
    Студент, Unity3d, DotNet, Xamarin
    Перцептрон позволяет подобрать примерно такую функцию, которая позволит классифицировать данные или предсказывать то, какими будут неизвестные признаки у данных, обучившись на данных, для которых искомые признаки уже известны.

    Сверточный слой в нейронной сети - просто слой, который позволяет уменьшить размерность карты признаков (признаки называтся features в англоязычной литературе и лекциях). Свертки не являются противоположностью глубоких нейронных сетей, глубокие нейронные сети - это просто нейронные сети с большим, по сравнению с перцептроном, количеством слоев, только и всего. Для классификации изображений используют в основном несколько основных типов слоев: сверточный (convolutional), max pooling, ReLU (Linear Rectifier Unit), и в качестве нескольких последних слоев, для проведения самой классификации, используют полносвязные слои, как в перцептроне, а количество выходов = количеству классов для классификации.

    А глубокое обучение само определяет, сколько слоев делать, какие будут идентификаторы. Т.е. само определяет, как находить дорожный знак и конкретизировать его.

    Нет, количество слоев, их размер, размер входа НС нельзя определить автоматически. Эти параметры называются гиперпараметрами. Существуют методики их подбора, но в основном полагаются на опыт и интуицию.

    Для работы с сетями существует несколько основных фреймворков, а это Caffe (пожалуй, самый распространенный), Torch, Theano, TensorFlow. И еще есть CNTK, он подкупает тем, что может работать на 4 gpu одновременно на одной машине. Но большинство из них работают с питоном, среди data scientist'ов для управления нейросетями больше распространены скриптовые языки, или матлаб.

    В качестве совета, как изучать эту непростую тему скажу следующее: не нужно тянуться к коду и практике, пока не будет достаточно четкого понимания в теории, как все работает. Каждое видео, каждую статью нужно разбирать до слова, чтобы разжевать все, что не понятно. Что-то не ясно, гуглим, читаем, осознаем, возвращаемся к статье. Рекомендую начать с видео лекций на ютубе, там проще понять принципы работы слоев, не загружая себя математикой, так как от математики толку не будет, пока не понятны основы.

    Вот несколько ссылок:
    scs.ryerson.ca/~aharley/vis/conv - отличная интерактивная демонстрация работы сверточной сети для распознавания цифр, обученная на наборе MNIST
    https://www.youtube.com/watch?v=2aF_yhVtlH0 - вот это отличный ролик для начала
    https://www.youtube.com/watch?v=VhmE_UXDOGs
    https://youtu.be/CLSy5WlaWKc - немного скучно, но позновательно
    https://www.youtube.com/watch?v=ByjaPdWXKJ4&index=... - суперинтересно и познавательно, но после осознания основ
    Ответ написан
    5 комментариев