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

image
Нещодавно на Хабре проскакував посада vfdev-5 DIGITS. Давайте детальніше розберемося що це таке і з чим його їдять. Якщо в двох словах. Це середовище, яке дозволяє вирішити 30-50% завдань машинного навчання на коліні протягом 5 хвилин. Без уміння програмувати. Ну, при наявності бази, звичайно. І більш-менш адекватної картки від NVIDIA.


Де взяти

Офіційна сторінка. Гойдається потім все звідси. Там же інструкції.
Офіційно підтримується Ubuntu 14 Ubuntu 16. Є deb-пакет для 14ой убунты і докер для неї ж. Під 16ую — інструкція по збірці. Збирати потрібно спочатку caffe, потім DIGITS. Развлекуха десь на пару годин.

Що таке в трьох словах

DIGITS — це візуальна Front-end обгортка для відомих фреймворків (caffe та Torch 7). Дозволяє з коробки навчати/донавчати відомі свої сітки. Є велика кількість підготовлених кейсів.
По форм-фактору, це веб-сервіс, який запускається в терміналі і доступний потім за адресоюlocalhost:5000/» на локальній машині. виглядає ось так:

Чомусь навіває Юпітером. Плюс, воно схоже на TensorBoard. На жаль, я не працював з ним багато щоб порівняти.

Як працювати з цим дивом

На головній є всього дві великі кнопочки. Вони нам і потрібні. Спочатку потрібно ткнути в «New Dataset»:

За замовчуванням DIGITS вміє працювати з датасетами заточеними під:
  1. Класифікацію — навчається розпізнавати приналежність N класів зображень
  2. Пошук об'єктів — навчається шукати прямокутник об'єкта на зображенні. Завтра я опублікую більш докладну статтю про цей шматок.
  3. Сегментацію — піксельна сегментація зображення. тьюториал, але я не розбирався.
  4. Процесинг — Не зовсім зрозумів, що це. Тьюториалов теж немає.
Розглянемо класифікацію, як самий простий з варіантів.

На етапі підготовки датасета digits перетискає базу в зручний для себе формат, щоб швидко працювати з ним, не напружуючи хард мільйонами запитів. В принципі, все ясно:
  • Блок ліворуч — описує в якому форматі буде підготовлено зображення. Стандартне правило machine learning: воно має виглядати так, щоб людина успішно розпізнавав будь-яке зображення з бази. Не більше і не менше.
  • Блок справа про базу. Там потрібно показати, де лежить база. Є два варіанти даних, які DIGITS може пережувати. Перший формат: N папок, у кожній папці свій клас. Другий формат: зображення лежать де завгодно, але є текстовий файл формату "<шлях> <ім'я класу>". % for validation — яка частина бази буде використовуватися для тестування під час навчання. %for testing — скільки використовується для підсумкового тестування.
  • Блок знизу — формат бази, яку DIGITS підготує для себе. По суті користувача це мало стосується.
Результат створення бази буде динамічно отображаться. А так же буде виведена підсумкова статистика по базі:

Створення бази завершено! Можна перейти до навчання. Переходимо в головне меню і замість «New Dataset» тикаємо «New Model». Знову вибираємо Classification. Тут параметрів трохи більше (1,2). Обов'язково потрібно вибрати:
  • Підготовлену базу у графі Select Dataset
  • Використовується мережа
Є купа більш тонких налаштувань:
  • Кількість епох навчання (скільки разів прогонится база)
  • Налаштування збереження і тестування
  • Параметри алгоритму спуску: швидкості спуску, їх зміна в процесі навчання
  • Можливість налаштування мережі: можна змінити існуючу, а можна поставити свою
  • Найпростіші збільшення датасета: кроп, віднімання середнього
Можна подивитися як виглядає поточна сіточка:


Запускаємо

Ваш комп'ютер зависає в мертву. Зате ви бачите красиві онлайн графички йде навчання, оцінку часу, поточний результат, і. т. д.:

Після закінчення навчання з'являється менюшка, яка дозволяє зберегти підсумкову модельку, розпізнати один/декілька зображень. Побудувати статистику.

Можна відправляти в продакшн;)

Що ще

У DIGITS ще непогана сітка для детектування об'єктів (опису: 1 2). Завтра я викладу окрему коротеньку статтю на її рахунок. Там, на жаль, не все так добре, як хочеться.



Є можливість налаштувати коректну піксельну сегментацію. Але у мене зараз є налаштовані рішення — це не дуже цікаво. А так, цілий приклад по роботі з DICOM зображеннями:
image
рішення позиціонується як придатний для задач сегментації за медичними даними.

Висновки

Рівень знань необхідний для роботи з нейронними мережами потихеньку падає нижче плінтуса. Напевно, є інші аналоги, чи з'являться найближчим часом. Той же TensorBoard.
Це не означає, що отримується рішення — якісне. Але воно може досить непогано працювати в деяких ситуаціях. Звичайно, хороший тьюнинг, добірка методу, ручна настроювання мережі — можуть значно поліпшити продуктивність. Але щоб показати прототип може вистачити і DIGITS.
По мені — вийшов дуже придатна оберточка. Але, щось його nvidia особливо не піарить і мало підтримує.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.