Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Класифікація об'єктів в реальному часі

  1. Розпізнавання зображень дуже широко використовується в машинному навчанні. У цій області існує безліч...
  2. DarkNet і TensorFlow
  3. Адаптивний Yolo для TensorFlow
  4. навчання моделі
  5. Архітектура моделі і потік даних
  6. Реалізація
  7. Інтеграція з IoT
  8. висновок
Розпізнавання зображень дуже широко використовується в машинному навчанні. У цій області існує безліч різних розв'язків, однак потребам нашого проекту жоден з них не відповідало. Нам знадобилося повністю локальне рішення, яке здатне працювати на крихітному комп'ютері і передавати результати розпізнавання на хмарний сервіс. У статті описується наш підхід до створення рішення для розпізнавання зображень за допомогою TensorFlow.

Yolo

Наша взаимовыгодная связь https://banwar.org/

YOLO - передова система виявлення об'єктів в реальному часі. На офіційному сайті ви можете знайти SSD300, SSD500, YOLOv2 і Tiny YOLO, які пройшли навчання з двома наборами даних: VOC 2007 + 2012 і COCO. Ще більше варіантів конфігурацій і наборів даних для машинного навчання ви можете знайти в Інтернеті (наприклад, YOLO9k). Завдяки широкому діапазону доступних варіантів, можна вибрати версію, найбільш підходящу для ваших нужд. Наприклад, Tiny YOLO - самий «компактний» варіант, який може працювати швидко навіть на смартфонах або Raspberry Pi. Останній варіант нам сподобався, і ми використовували його в проекті.

DarkNet і TensorFlow

Модель Yolo була розроблена для нейронної мережі на основі DarkNet , Для нас же деякі особливості цього рішення не підходять. DarkNet зберігає навчені коефіцієнти (ваги) в форматі, який можна розпізнати за допомогою різних методів на різних платформах. Ця проблема може бути каменем спотикання, тому що вам може знадобитися навчити модель на надпотужний обладнанні, а потім використовувати її на іншому обладнанні. DarkNet написаний на C і не має іншого програмного інтерфейсу, тому, якщо вимоги платформи або власні переваги змусять звернутися до іншої мови, доведеться додатково попрацювати над його інтеграцією. Також він поширюється тільки у форматі програмного коду, і процес компіляції на деяких платформах може бути досить проблематичним.

З іншого боку, у нас є TensorFlow, зручна і гнучка обчислювальна система, яка може використовуватися на більшості платформ. TensorFlow надає API для Python, C ++, Java, Go і інших мов програмування, підтримуваних спільнотою. Фреймворк з конфігурацією за умовчанням може бути встановлений одним кліком миші, але, якщо ви хочете більшого (наприклад, підтримки конкретних інструкцій процесора), можна легко провести компіляцію з джерела з автоматичним визначенням апаратного забезпечення. Запуск TensorFlow на графічному процесорі також досить простий. Все, що вам потрібно, - NVIDIA CUDA і tenorflow-gpu, спеціальний пакет з підтримкою графічного процесора. Величезна перевага TensorFlow - його масштабованість. Він може використовувати і кілька графічних процесорів для підвищення продуктивності і кластеризації для розподіленої обробки цих.

Ми вирішили взяти краще з обох світів і адаптувати модель YOLO для TensorFlow.

Адаптивний Yolo для TensorFlow

Отже, наше завдання полягало в перенесенні моделі YOLO на TensorFlow. Ми хотіли уникнути будь-яких сторонніх залежностей і використовувати YOLO безпосередньо з TensorFlow. Спочатку нам потрібно було перенести структуру моделі, єдиний спосіб зробити це - повторити модель пошарово. На щастя для нас, є багато конвертерів з відкритим вихідним кодом, які можуть це зробити. Для наших цілей найбільш підходящим рішенням виявився DarkFlow . Ми додали просту функцію до DarkFlow, яка дозволяє нам зберігати контрольні точки TensorFlow в метадані, її код можна подивитися тут . Ви можете зробити це вручну, але якщо хочете спробувати різні моделі, простіше автоматизувати процес.

Обрана нами модель YOLO має строгий розмір масиву вхідних даних 608x608 пікселів. Нам потрібен був якийсь інтерфейс, який може приймати будь-яке зображення, нормалізувати його і подавати в нейронну мережу. І ми цей інтерфейс розробили . Для нормалізації він використовує TensorFlow, який працює набагато швидше, ніж інші випробувані нами рішення (нативний Python, numpy, openCV).

Останній шар моделі YOLO повертає функціями, які потребують перетворення в дані певної форми, які може прочитати людина. Ми додали деякі операції після останнього шару, щоб отримати координати зони виявлення.

У підсумку ми розробили Python-модуль, який може відновити модель з файлу, нормалізувати вхідні дані і потім обробити функції з моделі, щоб отримати обмежують поля для прогнозованих класів.

навчання моделі

Ми вирішили використовувати попередньо навчену модель. Навчені коефіцієнти доступні на офіційному сайті YOLO. Наступним завданням було імпортувати ваги DarkNet в TensorFlow, це було зроблено в такий спосіб:

  • Зчитування даних шару в файлі конфігурації DarkNet.
  • Зчитування навчених коефіцієнтів з файлу ваг DarkNet відповідно до структури шару.
  • Підготовка шару TensorFlow на основі даних шару DarkNet.
  • Додавання зв'язків у новому шарі.
  • Повторення для кожного прошарку.

Для цього ми використовували DarkFlow.

Архітектура моделі і потік даних

Зазвичай з кожної итерацией класифікатор робить припущення, який тип об'єкта знаходиться в вікні. Він виконує тисячі прогнозів для кожного зображення. Це гальмує процес, внаслідок чого робота з розпізнавання йде досить повільно.

Найбільша перевага моделі YOLO, власне, відображено в назві - You Only Look Once. Ця модель накладає на зображення сітку, розділяючи його на осередки. Кожна осередок намагається передбачити координати зони виявлення з оцінкою впевненості для цих полів і ймовірністю класів. Потім оцінка впевненості для кожної зони виявлення множиться на ймовірність класу, щоб отримати остаточну оцінку.

Ілюстрація з сайту YOLO .

Реалізація

В нашому GitHub-репозиторії ви можете знайти наш демопроект, який являє собою попередньо навчену модель TensorFlow YOLO2. Модель може розпізнати 80 класів. Для її запуску вам потрібно встановити додаткові залежності, необхідні для демонстраційних цілей (для інтерфейсу моделі потрібно тільки TensorFlow). Після установки просто запустіть python eval.py, і він буде захоплювати відеопотік з вашої веб-камери, оцінювати його і відображати результати в простому вікні зі своїми прогнозами. Процес оцінки - покадровий - і може зайняти деякий час в залежно від обладнання, на якому він запущений. На Raspberry Pi для оцінки одного кадру може знадобитися кілька секунд.

Ви можете вказати відеофайл для цього скрипта, передавши аргумент --video зразок цього: python eval.py --video = "/ path_to_video_file /". Також може бути переданий URL відео (протестовано на YouTube): python eval.py --video = " com/watch?v=hfeNyZV6Dsk> https://www.youtube.com/watch?v=hfeNyZV6Dsk ".

Скрипт буде пропускати кадри з камери під час оцінки та приймати наступний доступний кадр, коли попередній етап оцінки завершено. Для записаного відео він не пропускає жодних кадрів. Для більшості завдань цілком можна пропускати деякі кадри, щоб забезпечити роботу процесу в реальному часі.

Інтеграція з IoT

Звичайно, було б непогано інтегрувати в цей проект службу IoT і налаштувати доставку результатів розпізнавання туди, де до них зможуть отримати доступ та інші служби. Існує ще один демоскріпт - python daemon.py, який буде запускати простий сервер, що відображає відеопотік з веб-камери з прогнозами на http://127.0.0.1:8000/events/.

Він також запускає клієнт DeviceHive. Конфігурація доступна на http://127.0.0.1:8000/.

Це дозволяє відправляти всю прогнозовану інформацію в DeviceHive у вигляді повідомлень.

висновок

Як бачите, є безліч готових проектів з відкритим вихідним кодом практично для будь-яких випадків, потрібно просто вміти правильно їх використовувати. Зрозуміло, необхідні певні зміни, але скористатися їхнім досвідом набагато простіше, ніж створити нову модель з нуля. Величезна перевага таких інструментів - їх кроссплатформенность. Ми можемо розробити рішення на настільному ПК, а потім використовувати той же код на вбудованих системах з операційною системою Linux і ARM-архітектурою. Ми дуже сподіваємося, що наш проект допоможе вам у створенні власного витонченого рішення.

PS За час розробки проекту та підготовки статті до друку, OpenCV обзавівся підтримкою YOLO всередині себе ( https://github.com/pjreddie/darknet/issues/242 ). Можливо, для деяких випадків це рішення виявиться краще.

Com/watch?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: