• Как создать свой каскад для распознавания объектов?

    Vindicar
    @Vindicar
    RTFM!
    Я создавал лабораторную по этой теме, могу привести инструкцию.
    1. Загрузите набор утилит opencv(гугл-диск, но я советую поискать самостоятельно), в частности opencv_createsamples и opencv_traincascade, а также необходимые им DLL-библиотеки. Распакуйте их в рабочий каталог в корне диска, без русских букв и пробелов в названии. Здесь и далее предполагается, что C:\MyDirName - ваш рабочий каталог.
    2. Подготовьте фото вашего объекта. Используйте контрастный объект без движущихся частей, и желательно не дающий бликов. Для этой цели хорошо подходят логотипы.
    3. Подготовьте отрицательные примеры (не менее 100 изображений). Для этого можно снять короткое видео помещения, затем написать программу, которая разделяет это видео на отдельные кадры. Рекомендуется поместить их в отдельный подкаталог negatives.
    4. Подготовьте файлы, содержащие список файлов в этом каталоге. Их можно сгенерировать следующей парой команд в терминале:
      dir C:\MyDirName\negatives\*.jpg /B /S >C:\MyDirName\negatives\negatives_abs.txt

      dir C:\MyDirName\negatives\*.jpg /B >C:\MyDirName\negatives\negatives_rel.txt

    5. Создайте пустые подкаталоги C:\MyDirName\positives и C:\MyDirName\training. Поместите ваше изображение - положительный пример в каталог C:\MyDirName\ и назовите его positive.jpg. В качестве положительного примера желательно разместить ваш объект на светлом фоне, если он тёмный, и наоборот.
    6. Сгенерируйте положительные примеры с помощью утилиты opencv_createsamples. Команда будет выглядеть примерно следующим образом:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -img positive.jpg -bg negatives\negatives_rel.txt -maxxangle 0.1 -maxyangle 0.1 -maxzangle 0.1 -bgcolor 0 -bgthresh 0 -w 50 -h 50 -num 100

      Параметры:
      -info - выходной файл.
      -img - входное изображение - положительный пример
      -bg - фоновые изображения. Положительный пример будет наложен на них (в оттенках серого).
      -max?angle - допустимые углы поворота примера. Утилита выполнит перспективное преобразование примера перед наложением.
      -bgcolor и -bgthresh задают яркость (среднее и диапазон изменения) для "прозрачного цвета". Например, если ваш объект на белом фоне, задайте эти параметры равными 240 и 15 (диапазон яркости 225-255). Задав оба параметра равными 0, вы отключите эту функцию и все цвета будут непрозрачными.
      -w и -h задают минимальный размер для размещаемой копии вашего образца.
      -num - количество примеров, которые стоит генерировать. Не должно превышать количество изображений в каталоге.
      Утилита должна вывести ряд сообщений вида "Open background image", а в конце вывести "Done".
    7. Сгенерируйте vec файл следующей командой:
      C:\MyDirName\opencv_createsamples.exe -info positives\info.lst -num 100 -w 20 -h 20 -vec positives\positives.vec

      где info.lst был сгенерирован в ходе пункта 6.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада.
      -num - количество сгенерированных примеров. Столько же, сколько и в пункте 6.
    8. Проведите обучение каскада с помощью утилиты opencv_traincascade. Команда будет иметь примерно следующий вид:
      C:\MyDirName\opencv_traincascade.exe -data training -vec positives\positives.vec -bg negatives\negatives_abs.txt -numStages 100 -numPos 100 -numNeg 100 -featureType haar -w 20 -h 20 -minHitRate 0.999 -maxFalseAlarmRate 0.4 -precalcValBufSize 4048 -precalcIdxBufSize 4048 -numThreads 24 -acceptanceRatioBreakValue 10e-5

      -data - каталог для рабочих данных, который вы создали в пункте 5.
      -vec - индекс, который был создан в пункте 7.
      -bg - файл со списком отрицательных примеров (используйте абсолютные пути!)
      -numPos и -numNeg - количество положительных примеров (пункт 6) и отрицательных примеров (пункт 3).
      -numStages - максимальное количество этапов каскада. Итоговый каскад может содержать меньшее количество этапов.
      -featureType - определяет тип признаков. Признаки Хаара обучаются медленнее, но зато более точны.
      -w и -h задают минимальный размер для объекта, распознаваемого в ходе работы каскада. Должны строго совпадать с заданными в пункте 7.
      -minHitRate и -maxFalseAlarmRate задают качество работы одного каскада.
      -acceptanceRatioBreakValue определяет момент, когда каскад перестаёт обучаться.
      -precalcValBufSize и -precalcIdxBufSize задают потребление памяти процессом.
      -numThreads определяет число рабочих потоков.
    9. По итогам обучения в каталоге training должен появиться файл cascade.xml, который можно загружать так же, как типовые каскады, поставляемые с opencv. Обратите внимание, что если вы хотите запустить обучение с начала, нужно очистить содержимое каталога training, иначе утилита будет дообучать существующий каскад.
    Ответ написан
    5 комментариев
  • Шпаргалки по языкам программирования?

    @floog
    Ответ написан
    Комментировать
  • Шпаргалки по языкам программирования?

    viktorvsk
    @viktorvsk
    zealdocs.org бесплатный даш, типа
    Ответ написан
    Комментировать
  • Лучший ЯП для парсинга веб-сайтов

    Guran
    @Guran
    Для такой задачи пару лет назад использовал Perl с подключением библиотек CPAN'а (в частности HTML::Parser), ибо очень понравилась его работа с regexp'ами. Посмотреть что-то подобное можно тут или тут
    Ответ написан
    Комментировать
  • Как изучать на практике SQL, MySQL?

    ZUZ
    @ZUZ
    я изучал по www.chtivo.ru/book/1307630
    Очень лампово, наглядно, понятно.
    Подробно расписано установка и настройка MySQL.
    ЗЫ Порадовало, что за всё время (около месяца) "прохождения" книги процесс mysql (я ноут не выключал, а засыпал) потребил лишь 1 секунду процессорного времени.
    Ответ написан
    Комментировать
  • Как изучать на практике SQL, MySQL?

    @evgeniy_trebin
    Ruby on Rails developer
    Вот тут можешь попрактиковаться sql-ex.ru
    Ответ написан
    1 комментарий
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    @Nkly777
    git chery-pick - ты забираешь комиты из одной ветки в другую, это бывает полезно когда изменения сделаные другим разработчиком в его ветке, прямо сейчас нужны тебе в твоей ветке, и что бы не писать этот код заново, ты забираешь его комит себе в ветку

    git rebase master - ты синхронизируешься с главной веткой в которую коммитят все разработчики проекта, это полезно когда кто-то изменил участок кода с которым ты сейчас работаешь в своей ветке, дабы через неделю ты смог без проблем смержиться с master веткой. Обычно делается каждое утро перед началом рабочего дня и в конце когда фича готова.

    git merge - обычно используется когда у вас 2 и более master ветки (к примеру master и prototype) в этих ветках очень много комитов (и rebase здесь не подходит) и обчно через пару недель, maintainer репозитория наработки из prototype ветки "сливает" в master ветку по средствам этого самого git merge

    P.S. Что бы легче предствить разницу между git merge и git rebase. Представь что merge как собачка на молнии у одежды - "сшивает" комиты по дате их создания.
    В то время как git rebase как пожарная лестница - при применении твои коммиты крепится на конец родительской ветки

    git merge используйте для мержа фич и фиксов в master ветку (как и делает это Github)
    а git rebase используется для своей ветку в которой вы работаете над фичей что бы забрать последние изменения с master ветку (для этого есть очень удобная команда `git pull --rebase origin master`, аналог 3х команд (`git checkout master; git pull origin master; git checkout mybrach; git rebase master`)
    Ответ написан
    2 комментария
  • Какие ресурсы есть для прокачки навыка написания SQL выражений?

    Antonoff
    @Antonoff
    Разработчик
    Ответ написан
    Комментировать
  • Какие ресурсы есть для прокачки навыка написания SQL выражений?

    Bandicoot
    @Bandicoot
    Вась-программист
    Ответ написан
    Комментировать
  • Какие ресурсы есть для прокачки навыка написания SQL выражений?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    Ответ написан
    Комментировать
  • Сайт с упражнениями по SQL?

    @batmanXVII
    https://leetcode.com (раздел Database)
    Ответ написан
    Комментировать
  • Сайт с упражнениями по SQL?

    DimonSmart
    @DimonSmart
    Kaspersky Lab Developer
    Полностью поддерживаю вариант sql-ex.ru
    Там есть и схемы баз и тестовые данные и очень неплохие обсуждения по всем задачкам.
    Задачки идут по возрастанию сложности. Есть и просто SQL есть и задачки на оптимизацию и скорость выполнения запросов. И описание способов решения приложу: www.sql-tutorial.ru/sqlbook/ru
    Ответ написан
    Комментировать
  • Сайт с упражнениями по SQL?

    Bandicoot
    @Bandicoot
    Вась-программист
    Можно пощелкать задачки здесь: https://www.hackerrank.com/domains/sql/
    Ответ написан
    Комментировать
  • Сайт с упражнениями по SQL?

    @immaculate
    Программист-путешественник
    Ответ написан
    Комментировать
  • Сайт с упражнениями по SQL?

    gobananas
    @gobananas
    finishhim.ru
    sql-ex.ru
    Ответ написан
    Комментировать
  • Книги с большой Буквы

    ShashkovS
    @ShashkovS
    Прочитайте «Вы, конечно, шутите, мистер Фейнман».
    Это замечательная книга, с хорошим юмором, реальными историями, например, о том, что происходило, когда делали атомную бомбу, про то, что в мире очень много всего интересного и очень много дураков.

    На русском
    В оригинале на английском
    Ответ написан
    Комментировать
  • Как правильно учиться PHP / mySQL?

    beono
    @beono
    Очень рекомендую getjump.github.io/ru-php-the-right-way
    Процитирую, чтобы не пересказывать своими словами:
    В интернете очень много устаревшей информации, которая приводит к заблуждению, распространению неверных решений и написанию плохого кода у начинающих PHP-разработчиков. PHP: Правильный Путь — легкочитаемое руководство для быстрого ознакомления с правилами эффективного использования PHP
    Ответ написан
    Комментировать
  • Как правильно учиться PHP / mySQL?

    С самого начала поставьте ХAMPP или Denver (а лучше виртуальную машину и линукс/юникс, очень пригодится в будущем) ну и Д.Котеров без сомнения, в нём насколько помню описан процесс инсталяции Denver. Как только выполните свой певрый echo 'Hello world', осилите общий синтаксис (циклы, функции, переменные, инклуд) берите любой движок чего-либо, я в своё время расковырял punbb 2.2.х, движок форумный — это помогло понять функциональное программирование плюс научится делать чистые запросы к бд, то есть стало логичным продолжением изучением mysql — составлять запросы, ставить индексы, джоины и тд. для начала можно поставить задачу — изменить внешний вид главной страницы форума, вынести блок «войти» на главную.

    Как только вы почуствуете что вы как рыба в воде в этом движке, можно взять фрейморк и так же расковырять его до основания. Я в своё время взял Codeigniter — с помощью него я немного узнал про ООП, routing, ORM, MVC и затем и HMVC, кеширование.
    Ответ написан
    Комментировать