Нейрокоп Часть 0. Или Нейро- Без Курятника



Или как правильно спрятаться в нейросети

Нейрокоп часть 0. Или нейро- без курятника

Курица снесла яйцо.

Сам процесс выглядит ужасно.

Результат съедобен.

Массовый геноцид кур.

В этой статье будут рассмотрены:

  1. Где, как и почему можно БЕСПЛАТНО, СЕЙЧАС и НЕ БЫСТРО получить немного качественного самообразования в области работы с нейронными сетями;
  2. Будет описана логика рекурсии и рекомендованы книги по теме;
  3. Будет описан список основных терминов, которые необходимо разобрать на 2-3 уровня абстракции;
  4. Будет предоставлен ipynb-блокнот, содержащий необходимые ссылки и основные подходы;
  5. Будет уникальный саркастический юмор;
  6. Будут описаны некоторые простые закономерности, с которыми вы столкнетесь при работе с нейронными сетями;
Статьи о нейро-курятнике Название спойлера
  1. Введение об обучении нейронным сетям
  2. Аппаратное обеспечение, программное обеспечение и конфигурация для наблюдения за курами
  3. Бот , который постит события из жизни кур - без нейросети
  4. Маркировка наборы данных
  5. Работающий модель для распознавания кур в курятнике
  6. В результате получился работающий бот, распознающий кур в курятнике.



Философское введение начинается здесь

С чего начать? Название спойлера Вы можете начать с этого то, что написала моя девушка, прекрасно статья о моем путешествии и установке системы мониторинга кур в курятнике.

За что? Потому что прикладная задача мотивирует гораздо больше, чем задачи на Kaggle, где тоже все далеко от идеала (половина задач отсутствует, выигрышные архитектуры — это стеки из 15 моделей, переобучение для поиска немасштабируемых паттернов и т. д.).

Моя задача — написать нейронные сети и код на Python, которые будут различать кур, а, возможно, и логировать события из жизни кур в нашем любимом СУБД .

В процессе вы сможете узнать много интересного и, возможно, даже изменить свою жизнь, поделившись своей мини-работой.

Это приятно, полезно и весело.

Вы также можете начать с , что в принципе сейчас на рынке технологий новая ветвь «пузыря» — все вдруг побежали «к ИИ».

Раньше все бежали в IT, в онлайн, в BigData, в Сколково, в AR/VR. Если сидеть в тематических русских чатах, то там люди обычно либо пишут всё с нуля на { вставь свой экзотический язык } или сделать одноразовых чат-ботов, освоив средства пиара корпораций.

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

И тут мне на помощь пришел неизвестный человек и вставил строчку в мой файл , где я собрал обучающие полезности в области работы с данными.

Что удивительно, так это то, что эти Люди (fast.ai - ссылка, которую кто-то вставил) проделали просто гигантскую работу по популяризации и обучению даже с нуля, следуя принципу инклюзивность и целостность образования против эксклюзивность и принцип «башни из слоновой кости» .

Но обо всем по порядку.



Нейрокоп часть 0. Или нейро- без курятника

Коротко о подходе к образованию.

Сами авторы расскажут вам лучше меня.

Я как-то видел, как в чате ОД (если вы знаете, что это такое, то поймете) сформировалась команда, занявшая второе место в конкурсе по распознаванию спутниковых изображений, но общее количество человеко-часов, необходимых для такого выступления, не превышает не мотивируют участвовать в подобных соревнованиях, учитывая несовершенство мира.

Также в принципе не внушает энтузиазма соотношение вознаграждения исследователей к общей стоимости конкурса.

Поэтому все описанное ниже делалось для нейро-курятника и только для него.

На всякий случай уточню, что НЕ входит в мои задачи: Очень толстый слой сарказма

  • Написать курс, чтобы потом продавать лиды от его молодых выпускников на Mail.ru xD;
  • Писать о том, как мне нравится Caffe против Theano или Tensorflow — все это не имеет никакого значения для промышленного профессионального уровня, если только вы не являетесь опытным исследователем в этой области и не пишете научные статьи;
  • Напишите нейронные сети с нуля на {вашем экзотическом языке};
  • Продать вам что-то за деньги (только идеи и бесплатно);
Я хочу поделиться прекрасными вещами и познакомить как можно больше людей с самым простым и широким описанием пути, который сработал для меня.



На этом философское введение заканчивается.



Описание как научиться обучать нейронные сети

TLDR (в порядке установки/обучения от простого к сложному) Если вы хотите эффективно и современно обучать нейронные сети для прикладных целей (а не переписывать все в {X} или собирать ПК с 10 видеокартами), то вот короткое и очень рекурсивное руководство: Список здесь
  • 1. Изучите хотя бы базовые понятия:
    1. Линейная алгебра.

      Цикл вводные видеоролики.

      Начни хотя бы с них;

    2. Математический анализ.

      Цикл вводные видеоролики;

    3. Почитайте о градиентном спуске.

      Здесь обзор методы и здесь визуализация .

      Остальное вы найдете сами на курсах;

  • 2. Если вы ничего не знаете ни о чем из списка, будьте готовы потратить 200-300 часов своего времени.

    Если только нейросети и/или питон — то 50-100 часов;

  • 3. Приобретите себе Ubuntu или ее аналог (да здравствуют комментарии в стиле «не работает»).

    Мой краткий обзор гид (Интернет поможет найти более подробные технические руководства).

    Конечно, можно и через виртуалки, докер, мак и т.п.

    извратить;

  • 4. Устанавливаем третий питон (обычно уже из коробки, 2017 года).

    Именно третий.

    Но лучше сказать это еще раз.

    Не пытайтесь менять системный питон в Linux — всё сломается;

  • 5.Если вы не очень знакомы с питоном, то (все, опять гугл):
    1. Самый простой и бесплатный источник "базового" уровня и бесплатный (никаких курсов по 30-50к руб, а потом идти работать инструктором на те же курсы за 30к руб, когда якобы заявлена средняя зарплата 100к руб) );
    2. Идеальный вход точка рекурсии по использованию Python для работы с данными;
  • 6. Установите Юпитер блокнот и это расширение ( вам нужно свернуть код ).

    Это значительно сокращает время работы.

    Это правда ;

  • 7. Купите себе видеокарту (сейчас дешевле купить, чем арендовать - начало 2017 года):
    1. Что я собрал в 1 почта на канале;
    2. Лучший быстрый о железе;
    3. Лучший нить о настройке и сборке программного обеспечения;
    4. Мой быстрый со ссылками и конфигами;
  • 8. Лучшие образовательные (БЕСПЛАТНЫЕ) ресурсы:
    1. www.fast.ai - вход точка рекурсия.

      В блоге, видео, на форуме, в вики и заметках есть безумное количество информации;

    2. Великолепный книга о нейронных сетях и первом код из него в третьем Python (погуглите, может кто-то весь код напутал, я после первых двух глав поленился);
    3. Поразительнй хорошо Эндрю Нг и он интерпретация в питоне;
  • 9. Блокнот Jupyter ( HTML ipynb ), который:
    1. Содержит иерархическую структуру ячеек, каждая из которых описывает, что и почему делается;
    2. Основные включает, утилиты и библиотеки разделены по типам;
    3. Предоставляет ссылки на основные источники, необходимые для понимания происходящего;
    4. Сахар для работы с Керасом предоставляется (подробнее без продаж).

      здесь , сами люди из fast.ai рекомендуют);

    5. Для набор данных точность предсказания класса ~80% получена для машин, проезжающих за окном (рандом дает 50%, но картинки хреновые и маленькие);
    6. Для набора данных с конкурса отвлеченное вождение полученная точность предсказания для 10 классов составляет ~50% и ошибка определенно входит в топ-15-20% решений в мире;
Список дел для достижения лучших результатов (например, при отвлеченном вождении вы можете получить точность ~ 60-75%): Список улучшений на будущее
  1. Использование визуализаций для понимания того, что изучает сеть;
  2. Использование обучающего набора из 300-500 изображений, чтобы быстро понять, какие параметры искажения изображения подходят лучше всего;
  3. Использование набора тестовых данных (или перекрестной проверки) для повышения точности.

    Таких картинок нужно добавить не более 25-30% (полуконтролируемое обучение);

  4. Использование тонкой настройки imagenet в качестве дополнительной опции модели;


Нейрокоп часть 0. Или нейро- без курятника

Если вы дочитали до этого места, то вот курица, с которой сняты подозрения, что она не несет яйца.

Из-за этого в суп он пойдет гораздо позже.

Теперь опишу то, что показалось интересным из процесса непосредственно обучения нейронных сетей (не тех, что в голове, а тех, что на Python): Список здесь

  1. Набор данных с автомобилями показал, что если картинки маленькие и выборка классов необъективна (один класс больше другого), то модель хорошо идентифицирует только один класс;
  2. Начните с небольшого набора, чтобы модель могла обучиться за несколько десятков секунд, и настройте метапараметры для изменения изображений;
  3. Если у вас есть какое-то приложение распознавания движения + нейросети, то лучше сразу обрезать картинки в open-cv, не оставлять их на потом;
  4. Нейронные сети обладают так называемым эффектом «легкого выхода», когда функция стоимости может оставаться в локальном минимуме относительно долгое время, поскольку предсказать 50%-ную вероятность постоянного попадания в класс 1 проще, чем учиться;
  5. Сначала попробуйте простые архитектуры и постепенно увеличивайте сложность.

    Если обучение идет медленно, возьмите небольшую выборку или протестируйте свою модель;

  6. Простая архитектура + попробуйте разные метапараметры (скорость обучения);
  7. Если функция стоимости вообще не уменьшается, значит где-то в модели досадная опечатка.

    Самый простой способ найти его — сравнить свою модель с моделью другого человека;

  8. Сейчас на программном уровне (керас) уже есть огромное количество современных возможностей, таких как:
    1. Нормализация изображения;
    2. Искажение изображения;
    3. Выбывать;
    4. Извилины;
    5. Итераторы для последовательного чтения файлов;
  9. Из интересного (не из области укладки 15 моделей) в соревнованиях Kaggle я бы отметил использование комбинаций таких вещей, как:
  10. Предварительная обработка изображения, поиск контуров и форм с помощью open-cv;
  11. Сверточные нейронные сети для базовой классификации;
  12. Нейронные сети для создания метаданных о картинках — например здесь сначала ищут головы китов и только потом опознают кита;
  13. Собрано здесь интересные вещи о новейших архитектурах на Kaggle


Вот набор картинок

Название спойлера

Нейрокоп часть 0. Или нейро- без курятника

Первые 285 машин имеют скромные размеры пикселей + всё размыто.



Нейрокоп часть 0. Или нейро- без курятника

Когда хочется быстро обрезать картинки, но не хочется думать, рождаются вот такие некрасивые решения

Нейрокоп часть 0. Или нейро- без курятника

Разница в точности между обучением и проверкой намекает на то, что набор данных искажен, небольшой и в целом.

Но это хороший показатель прогресса.



Нейрокоп часть 0. Или нейро- без курятника

Не цыплята, а виновники торжества.

Очень размыто - в движении

Нейрокоп часть 0. Или нейро- без курятника

Радости нет предела, когда жлобский код, написание которого занял час, начал срабатывать и отключил машину.



Нейрокоп часть 0. Или нейро- без курятника

На практике в памяти видеокарты либо достаточно места, либо не хватает места сразу.

Сложно подобрать размер картинки и размер партии, чтобы можно было съесть рыбку и.

Эмпирическое правило: сверточные слои требуют много памяти, а плотные слои требуют много времени.



Нейрокоп часть 0. Или нейро- без курятника

Сравните полезную площадь на этой картинке.



Нейрокоп часть 0. Или нейро- без курятника

А сколько там полезных пикселей =) Да у курицы голова больше машины (в пикселях) - моя видеокарта пострадает

Нейрокоп часть 0. Или нейро- без курятника

Не посчитал - память кончилась и все упало.

Функции очистки, кроме перезагрузки, я пока не нашел.

Теги: #нейронные сети #наука о данных #куры #нейронные сети #глубокое обучение #образование #python 3 #с открытым исходным кодом #python #Интеллектуальный анализ данных #математика #Машинное обучение

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.