Все почалося з того, що дружина захотіла повісити годівничку для птахів. Ідея мені сподобалася, але відразу захотілося оптимізувати. Світловий день взимку короткий — сидіти вдень і дивитися на годівницю часу немає. Значить потрібно більше Computer Vision!

Ідея була простою: прилітає пташка — вжуууух — вона виявляється на телефоні. Залишилося придумати, як це зробити і реалізувати.
У статті:
  • Запуск Caffe на Raspberry Pi B+ (давно хотів це зробити)
  • Побудова системи збору даних
  • Вибір нейронної мережі, оптимізація архітектури, навчання
  • Обернення, вибір і приделывание інтерфейсу
Всі вихідні коди відкриті + описаний повний порядок розгортання отриманої конструкції.

Читати далі →

Детектор руху на основі биоинспирированного модуля OpenCV

image
Дана стаття буде корисна новачкам, які тільки почали використовувати бібліотеки OpenCV і ще не знають всі її можливості. Зокрема, на основі биоинспирированного модуля бібліотеки OpenCV можна зробити адаптивний до висвітлення детектор руху. Даний детектор руху буде працювати в напівтемряві краще, ніж звичайне віднімання двох кадрів.

Читати далі →

Ненудний SCRUM і сегментація зображення для виділення Post-it наклейок

image
" Натхнення, яке шукав весь ранок,
наздогнало в найневдаліший момент.
І як пояснити, що я йду на SCRUM?
— Підемо зі мною ?! "


imageКомунікація в команді— сувора необхідність великих проектів. Це не повинно виглядати як ешафот або примусове збори анонімних алкоголіків. Від команди потрібно участь, потрібен блиск в очах, кожного має рвати від бажання висловитися, як від пафосності цієї пропозиції. Поступово наша команда еволюціонувала до SCRUM-моделі, багато в чому завдяки простим і наочним наліпок. Який же SCRUM без наклейок? Майже у кожного в дитинстві були наклейки і, десь глибоко в підсвідомості засіли спогади, коли нас, ще будучи дитиною, вчила клеїти вихователька і, якщо наклейка була приклеєна рівно, як заохочення, вона не била по руках. Але навіть в нашому безтурботному дитинстві доводилося робити речі, які здавалися нам нудні і незрозумілі — прибирати іграшки, відтирати стіну від ручки або писати під диктовку. Подорослішавши, у нас з'являється вибір — ми можемо перекласти роботу на інших. А хто захоче за всіх писати backlog (звіт) і потім переносити дані в Jira? Використання Jira безпосередньо в процесі мітингу виводить учасника з обговорення, тому, після прийняття конвенції ООН про скасування рабства, залишається перекласти це завдання на роботів.
У результаті народилася ідея написати програму розпізнавання і відстеження карток завдань на SCRUM-дошці.

Читати далі →

Простий варіант системи відеоспостереження в приміщенні з використанням датчика руху і Python на платформі Raspberry

Доброго часу доби, хабровчане!
Після декількох експериментів з розробкою системи відеоспостереження, які я відобразив у попередньої публікації, вирішив поділитися підсумковим рішенням.




Читати далі →

Установка OpenCV в Windows для чайників та підключення бібліотеки Code Blocks

image
Дана стаття буде корисна чайникам новачкам у програмуванні, які хочуть почати вивчати технічне зір за допомогою бібліотеки OpenCV з повного нуля. Якщо Ви користувач Windows і не знаєте, що таке «командний рядок», або що означає «прилинковать бібліотеку», і при цьому Ви мрієте глибше вивчити роботу OpenCV та програмування «під залізо», перейти на багатоплатформовий, піти по шляху тру фахівця, то Вам сюди. У статті будуть наведені докладні інструкції з картинками, так що не зрозуміти, що до чого, буде просто неможливо!

Читати далі →

OpenCV: установка таймауту на очікування кадру в класі VideoCapture

Всім доброго часу доби! З'явилася тут якось завдання: відтворити RTSP-відеопотік з камери. Т. к. я в достатній мірі знайомий з API OpenCV, було прийнято рішення використовувати саме його. Для захоплення відеопотоку в OpenCV використовується клас VideoCapture. На жаль, мережа досить часто у нас обривається, і ця проблема на моєму рівні не вирішується, тому необхідною умовою для комфортної роботи стала досить швидка реакція на падіння відеопотоку — стандартний таймаут на підключення і очікування наступного кадру становить 30 секунд, причому всередині VideoCapture виклики open() і read() блокують, що змушує писати навколо простого насправді коду різні обгортки зразок виклику їх в окремому потоці і очікування отримання результату в асинхронному режимі. Природно, ніякої радості з цього приводу я не відчував — все це ресурси, які в програмі повинні були йти на інші цілі, не кажучи вже про ускладнення коду. Було прийнято рішення: змінити стандартний таймаут, або додати можливість його зовнішньої установки. Вийшов досить брудний хак, який, втім, може комусь стати в нагоді. Можливо, якщо є спосіб краще — якщо такий є — дуже б хотілося дізнатися його, так що прошу коментарів. В ідеалі — може бути, серед читачів Хабра знайдуться розробники OpenCV, які таки звернуть увагу на цю проблему. Метою було змусити код «працювати, як треба, під Windows x64».

Кому цікаво — прошу під кат.

Читати далі →

Itseez, двічі Intel Company

Intel, як і інші корпорації, постійно купує і продає бізнеси – в цьому немає нічого незвичайного. Однак покупка російської компанії для неї – подія вкрай неординарна. Та й сама купівля — неординарна. Цей пост про останнє придбання Intel – фірму Itseez, відому, насамперед, своєю ключовою роллю в розвитку бібліотеки OpenCV.



Читати далі →

Чому супер-мега-про машинного навчання за 15 хвилин все ж не стати

Вчора я опублікував статті про машинне навчання і NVIDIA DIGITS. Як і обіцяв, сьогоднішня стаття — чому все не так вже й добре + приклад виділення об'єктів в кадрі на DIGITS.

NVIDIA підняла хвилю піару з приводу розробленої і имплиментированной в DIGITS сітки DetectNet. Сітка позиціонується як рішення для пошуку однакових/схожих об'єктів на зображенні.



Читати далі →

Так швидкий ваш улюблений З нативна або реалізація лінійної алгебри на D

Тим, хто займається системами машинного навчання та комп'ютерним зором, добре знайома така бібліотека як OpenBLAS (Basic Linear Algebra Subprograms). OpenBLAS написаний на C і використовується повсюдно там, де потрібна робота з матрицями. Так само у нього є кілька альтернативних реалізацій таких як Eigen і двох закритих імплементацією від Intel і Apple. Всі вони написані на С\С++.

Зараз OpenBLAS використовується в матричних маніпуляціях в таких мовах як Julia і Python (NumPy). OpenBLAS дуже добре оптимізована і значна її частина взагалі написана на асемблері.

Проте так чи хороший для обчислень чистий C, як це прийнято вважати?

Зустрічайте Mir GLAS! Нативна реалізація бібліотеки лінійної алгебри на чисто D без єдиної вставки на асемблері!

Читати далі →

OpenCV і обробка зображень

Доброго ранку, пані та панове. Уважні читачі помітили, що на російському ринку знову проклюнулися перекладні книги на тему комп'ютерного зору. Нас також не могла не зацікавити наступна книга:


Оскільки технології комп'ютерного зору в значній мірі зав'язані і на Python, і на C++, ми підібрали статтю з розбором проблеми і кодом на обох мовах. Крім того, щиро сподіваємося, що дівчина під катом вам сподобається.

Читати далі →