Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

Практический онлайн курс „Object Detection with PyTorch”

Не так давно родилась идея делать крутые практические курсы по разным областям. Так сказать 100% сок и никакого булшита, проверенные рабочие темы. Пилотным курсом решили сделать «Object Detection with PyTorch», так как тема довольно гарячая, а реально в сети найти нормальное обьяснение направления нужно очень сильно постараться.

Обьясню проблему детальнее:

— Почти весь код который я смотрел или недописан или содержит кучу ошибок или настолько программно плохо написан что понять что и куда займет месяц (и это причина почему вместе с МЛем неплохо учить и програмирование)

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

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

— Одна сетка которая работает на одном датасете может с большой вероятностью вообще не работать на другом без доп настройки.

Вообщем боли там хватает. Посему хочется сделать курс где эта боль будет по мере сил решаться.

Все лекции будут в Google Colab, а посему не стоит волноваться о железе. Все будет рабочее и проверенное.

Датасеты будем юзать: Voc2012 и Penn-Fudan Database for Pedestrian Detection and Segmentation

Курс будет состоять из 6 лекций:
— PyTorch Basics
— Single Object Localisation
— Multi-object detection with One Shot Detection models. Yolo
— Multi-object detection with One Shot Detection models. SSD
— Multi-object detection with Regional models. Fast-RCNN
— Multi-object detection with Regional models. Mask-RCNN

Требования для курса:
— Знание Python
— Базовые знания в Машинном обучении и Конволюционных сетках

Немного обо мне:
— В данный момент делаю ИИ ситему обучающую играть в игры типа Dota
— Пишу новости по мл и фильтрую пейперы t.me/ml_world
— Пишу статьи по мл/деву medium.com/@a.nikishaev
— Выступаю с лекциями по мл/деву www.slideshare.net/mobile/anikishaev

Цена: 40$

Если тема вам интересна — подписывайтесь upscri.be/vg7ilp

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Заканчивается набор на лекции по «Object Detection with PyTorch»

15го января стартует новая сессия по «Object Detection with PyTorch»

На курсе вы изучите все от простой локализации обьекта до state-of-the-art Mask-RCNN.
Тренировать сеточки будем с нуля для понимания тонкостей и боли этого процесса.
Как конечный проект засабмитимся в одно из интересных Kaggle соревнований: www.kaggle.com/...​cience-bowl-2018/overview

Спешите, кол-во мест ограничено.

learnml.today

Не так давно родилась идея делать крутые практические курсы по разным областям. Так сказать 100% сок и никакого булшита, проверенные рабочие темы. Пилотным курсом решили сделать «Object Detection with PyTorch», так как тема довольно гарячая, а реально в сети найти нормальное обьяснение направления нужно очень сильно постараться.

Обьясню проблему детальнее:

— Почти весь код который я смотрел или недописан или содержит кучу ошибок или настолько программно плохо написан что понять что и куда займет месяц (и это причина почему вместе с МЛем неплохо учить и програмирование)

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

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

— Одна сетка которая работает на одном датасете может с большой вероятностью вообще не работать на другом без доп настройки.

Вообщем боли там хватает. Посему хочется сделать курс где эта боль будет по мере сил решаться.

Все лекции будут в Google Colab, а посему не стоит волноваться о железе. Все будет рабочее и проверенное.

Датасеты будем юзать: Voc2012 и Penn-Fudan Database for Pedestrian Detection and Segmentation

Курс будет состоять из 6 лекций:
— PyTorch Basics
— Single Object Localisation
— Multi-object detection with One Shot Detection models. Yolo
— Multi-object detection with One Shot Detection models. SSD
— Multi-object detection with Regional models. Fast-RCNN
— Multi-object detection with Regional models. Mask-RCNN

Общение с аудиторией:
— Будет происходить по средствам GitHub Issues.

Требования для курса:
— Знание Python
— Базовые знания в Машинном обучении и Конволюционных сетках

Немного обо мне:
— В данный момент делаю ИИ ситему обучающую играть в игры типа Dota
— Пишу новости по мл и фильтрую пейперы t.me/ml_world
— Пишу статьи по мл/деву medium.com/@a.nikishaev
— Выступаю с лекциями по мл/деву www.slideshare.net/mobile/anikishaev

Регистрация на курс: learnml.today/?rid=dou

Пилотным курсом решили сделать «Object Detection with PyTorch»

В туториале к detectron и detectron2 всё уже за тебя сделали и да в

Google Colab

та да)) прям отличные туторы в стиле скачай запусти и надейся на лучшее. Сразу прям профи становишся и можешь делать сетки любой сложности)))
Искренне желаю удачи с таким подходом к обучению)

Кстати, сейчас играюсь с сегментаций сетками. И вот сложилось такое впечатление, что сегментации на много классов работает лучше, чем на 2. Это ошибочное впечатление или нет?
Как бы с одной стороны сегментация на 2 класса проще и должна работать лучше.
Но с другой стороны там наивный байес и ему таки лучше больше классов (добавление априорной вероятности или что по сути тоже веса классов ему никогда особо не помогало).
Чуть лучше с этим работал SVM. Но такого стандартного выходного слоя нет и он тоже всегда страдал от того, если классы не «компактны» и априорные их вероятности сильно разные. Но в SVM были трюки для борьбы с этим.
Еще подходы на деревьях с большего эту ситуацию отрабатывали, но такого выходного слоя для нейронок я не видел еще.
Да, сделать дифференцируемый вариант для SVM или деревьев я не знаю как.

З.Ы. И да сетки я начал разбирать недавно. До этого всегда делать на более классическом подходе с кучей шаманства на базе опыта. Сетки интересны тем, что этому шаманству они сами в теории обучаются.

Сегментация тоже тема ее простая.
Если юзал сетку без пирамиды то больше класов реально лучше так как уменьшается размер области скгментации а следовательно не нужен доп контекст. Но без пирамиды делать норм сегментацию зачастую нельзя, так как контекста нехватает.
Сам же лос тоже лучше работает на большом количестве классов вызвано это дисбалансом. Так как по сути 10% у тебч это обьект и 90% бекгранд. В детекшене для этого юзается харднегатив майнинг(беруть том н бекграунд оььектов и лос тока по ним считается. Так же можно тот же фокал лос юзать он хорошо работает по удалению дисбаланса. Ещк можно добавлять обучаемые переменные для управления лосом кастомным

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

Рекомендую посмотпеть на маск-рснн она довольно хорошо сегментирует

Для типичного железа тяжелые.
Мне интересны больше те, что 256×256 на 1080 дадут не меньше 100 fps.

Без оптимизации ни один) если хочешь дикого задроства посмотри сверточные сети на оптике)

Как у нас происходит сегментация бакодов сетками (SVM). Делится изображение на плитки одинакового размера, далее посчитанные features плитки и окружающих её в определенном окне передаются на сетку и она определяет относится ли эта ячейка к баркоду или нет (4 класса по углу наклона баркодов). Далее волновым алгоритмом эти плитки кластеризируются(объединяются волновым алгоритмом) и уже другая SVM по параметрам кластера плиток определяет является ли данный кластер баркодом или нет. Работает довольно точно и быстро, так как все, кроме волнового алгоритма масштабируется линейно от количества ядер.

Ты вообще не понял, что я спрашивал.

я канеш могу ошибаться. но баркод состоит из вертикальных линий который трекаются отлично через HogLine detector, много паралельных линий рядом вот вам и баркод.
Даже больше. тут походу прям готовое решение на Си есть www.learnopencv.com/...​er-using-zbar-and-opencv
Вот еще метод www.pyimagesearch.com/...​des-images-python-opencv

Так что если честно не понял зачем эти загоны с SVM и прочим. Ну это если надо было сделать решение канеш а не поиграться.

Не работает с баркодами с высоким размытием, где разница между барами в 1-2% контраста. Не работает с баркодами где высота баров = 2x ширины баров.

Вот пример, покажите как работает решение на этой картинке (это не самый худший вариант, скажем средне-хороший по качеству)
i.piccy.info/...​/149935/1338440/Test4.jpg

И да, у нас решение тоже градиентное, но базируется на алгоритме из LSD(+SVM)
www.ipol.im/pub/art/2012/gjmr-lsd

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

шейк размытие сводиться обратной функцией.

Оно все сводится от деблюринга методом Лапласа или обычным ядром резкости на 3×5x точек или же вообще фильтром виннера в частотном диапазоне. Проблема в том, что распознавание 35 мегапиксельных картинок на managed коде (без GPU) должно происходить за 2-3 сек. Вот здесь и нужно шаманство. Если можно было бы все алгоритмы переписать на GPU, то в 4K оно бы детектило со скоростью 60 кадров в сек.

помоему гпу стоит дешевле чем заточка под цпу. даже на ембедеде гпу уже довольно таки выносливое. мы вон на распбери запускали yolo на 3-5fps.

Код еще с 2008 года. Была идея сделать поддержку через OpenCL, но его поддержка в то время была не очень, да и сейчас не особо. При этом придется переписывать кучу алгоритмов. Код портируется .NET, Java, C++ и работает с коробки почти на всех существующих устройствах. При этом пока нет нормального универсального GPU фреймворка для вычислений, который был бы установлен по умолчанию на 90% существующих на рынке вычислительных устройствах. Так что текущим решением мы охватываем более 90% устройств от мощных мейнфреймов до смартфонов, причем библиотеки работают на локальном оборудовании пользователя без ограничений на количество ядер и инсталлируемых устройств.

Ну по сути Aspose Barcodes — сейчас ТОП-решение на рынке.

А зачем вам фрейм который гдето будет, это же ваше решение, ставте под него то что нужно. а гпу можно отдельно боксом подрубать да еще и за хард решение доп деньги брать))

Наверное потому что мы за жалких 20 тыс$ продаем standalone версию на компанию, без ограничений на количество инсталляций и ядер или за ~2 тыс$ на разработчика. Это шара по сравнению с клауд решениями где берутся центы, но за каждую картинку.

Проблема в том, что распознавание 35 мегапиксельных картинок на managed коде (без GPU) должно происходить за 2-3 сек.

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

А у вас какая точность детекшена на вашем датасете?

У нас 99% правда там включены в основном картинки что распознаются. Те которые нельзя распознать просто не включаются. Хотя не распознаются они уже на уровне распознавалки, часто полностью вытертые бары или нечто подобное.
i.piccy.info/...​64920/1338440/cropped.png

А что в этой сложного, кроме как найти собственно место этого баркода?
Я еще понимаю, если принтер его размазал при печати, тут посложнее будет.

Место и угол оно чудесно находит, вот только не распознает. Там шум + блюр + низкий контраст на некоторых барах, я такие называю «фукусима». Поэтому чексумма не сходится, даже подбор сегментов через баес позволяет распознавать, но выдает мусорное распознавание.

Там шум + блюр + низкий контраст на некоторых барах

А вот это ну совсем мелочи. Вам даже не нужно никаких фильтраций и подобного, главное повернуть до вертикали баров. Дальше стандартные оптимизационные алгоритмы вам все сделают, начиная от МНК — в этой вообще никаких итераций (обратить матрицу и всё).
Можно вообще тупо усреднить по вертикали, найти максимумы, учесть расстояния между ними...

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

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

Так CNN сейчас уже такое запросто делают. Причем в вашем случае не нужны всякие резнеты-152 и подобное, а прекрасно сработает и сильно более простые и быстрые.
Но да, если самим ее сочинять и учить с нуля, тут уже специалисты нужны, а не МЛ-формошлепы (коих много и им больше платят).

Опять же какая скорость этого будет на:
1. CPU
2. managed коде.

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

Не работает с баркодами с высоким размытием, где разница между барами в 1-2% контраста. Не работает с баркодами где высота баров = 2x ширины баров.

Наше как раз работает, да там полностью свой набор features, по сути разработан с нуля свой вариант R-CNN, но заточенный на баркоды и серьезно оптимизированный по скорости.

Я говорил про HogLine detector, который не работает с коробки. Так что по сути у нас есть около 3 конкурентов и это не Google, Гугл со своим zxing уже сосет с причмоком.

судя по прошлым темам автора на доу, автор решил опять срубить быстрых денег. Как обычно нашел интерестную тему, постарался добавить красивое описание , про то что нада платить деньги умолчал и закинул тему в топик програмистов. Еще мне нравится что у автора откудато резко взялось 15 лет опыта программирования ))) а недавно было вроде 5

Для описанного выше и 5 лет много. Оными примерами сейчас весь инет битком забит.
Но, кому-то проще просто поставить питорча и по мануалу с сайта научиться пользоваться, а другому нужно видео посмотреть.
И для прослушивания того, что выше Питона знания особо не нужны. Там в питорче уже пакетах всё есть и красиво.

Ну и не конвулюция, а конволюция, то бишь свертка.

Да вы правы, забит. Проблема только в том что толком ничего не обьяснено, куча багов в коде и чтобы собрать все вместе у не специалиста уйдет месяца 2. Возьмем например cs231n курс по cv. Один из лучших, и тем не менее многие кто его прошел так и не смогли сами натренить сетку по тому же детекшену. Потому как курс не углублялся в детали, а именно эти детали и заставляют сетки работать. Про остальные гавно курсы в стиле войти в ит за неделю я вообще молчу.

Я же просто предлагаю это качественно и быстро.

Если вы вот сходу можете вспомнить курс который бесплатно даст тоже самое в доступной форме кидайте линк обсудим.

Проблема только в том что толком ничего не обьяснено

Уже объяснено много где и на ангельском и на русском. Вот только везде к сеткам этим подходят, как к чему-то данному богом (гуглом).
На сайте питорча собственно великолепный мануал, как заюзать и получить приемлемый результат.
Вот habr.com/en/post/414165 здесь отлично и на пальцах (ну да требуется понимание в общем некоторой математики для понимания его курса). Потому как формул мало и почти всё на пальцах и надо понимать, что за математика скрывается под его объяснением. Мне кстати этот курс сильно помог разложить по полочкам особенности сетей и почему и как.
Но и в этом курсе нет ничего по особенностям обучения с нуля, почему сети стрятся такие, а не другие. Из кирпичиков для сетей можно хоть черта лысого сложить и он даже как-то будет работать.
Вот у меня по сетям сейчас 4 главных вопроса не решены:
1. Как и почему выбираются такие кирпичики, а не другие.
2. Как обучать сеть с нуля на своем датасете, не базируясь на предобученной.
3. И очень бедно с кирпичиками для последнего слоя. По сути кроме наивного байеса больше ничего и не юзают (softmax). А у наивного байеса куча минусов известных.
4. Нужны ли сеткам для обучения алгоритмы типа монтекарло, га и подобные и достаточно и градиентного спуска со случайной точки.

Спасибо за линк. А теперь по порядку

1) если рл область в одной лекции как и снн то там скажем так вообще них не обьясняется кроме самой базы.

2) тот же например макспулинг как и батчнорм и любой слой который уничтожает данные имеют эпическое количество нюансов в зависимости от общей архитектуры и таска. По одним им есть около 400пейперов.

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

4) давай материал из разных областей достигается психологическое утомление и человек почти нихрена нормально с курса не выносит. Именно по этому людей всему подряд и не учат, а сегментируют

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

Сори за ошибки, с мобилки

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

Вообще-то у меня 15+ лет опыта :) и если бы вы ебошили как я то возможно и у вас было бы. Если же вас смущает что у меня больше то рекомендую повзрослеть.

Что касается курса то ваше желание получить все на халяву обесценивая труд, говорит о вашем воспитании. Вы ведь небось сами за денежку то работаете?) жаба давит признайтесь)
Любой же адекватный человек думаю понимает и так что работа стоит денег, а обмен опытом тем более.

И топик не программистов а по обучению.

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

Тренировки с нуля, кроме фичер экстрактеров, так как их тренить неделю на недешевой машине. Но если кому будет интересно это то можно задать вопрос и я отвечу как это делать. Все просто.

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

Про слои тоже рассказываю там где это реально критично, а не выбраны путем грид серча

Тренировки с нуля, кроме фичер экстрактеров, так как их тренить неделю на недешевой машине. Но если кому будет интересно это то можно задать вопрос и я отвечу как это делать. Все просто.

Ответь здесь. Заодно и оценкой предварительной твоего курса будет.

у кого нету гпу

Оно почти у всех сейчас есть. Как минимум 1050, у многих для игр и 2080.

И да, сейчас, если полез в ML, то только нвидиа твой выбор. АМД забила на эту тему полностью.

Поверь гпу есть далеко не у всех и далеко не все геймеры.

Что касается тренировки то там все намного сложнее чем описывают везде. Основная причина проебы в датасете и жесткий дисбаланс по классам.

Если кратко то лечиться это так:
— доразметка классов руками
— использование весов в лосе для каждого класса, или вариант фокал лоса(с авто* взвешиванием)
— аугментация. Если агментация на рендерах то сначала трениться на реальных данных, потом первые 3-4 базовых слоя фризяться, так как содержат распределение базовых фич картинки и без этого дроп на синтетике будет гдето 30-40%
— так как базовые сетки без пирамиды то желательно еще подавать на вход картинки разного размера
— сила регуляризации динамическая, начинается с отсутсивия

— так же проверка другим класификатором разбежностей в датасете( есть 1-3% попутаных классов обычно) + возможная переразметка.
— использование кропов для аугментации, с обрезкой обьекта от 0.1 до 0.5 со сепом 0.1-.0.15
— лернинг рейт по контролю гепов в лосе(тут пару раз нада прогнать записывая лосс чтобы понимать его структуру) по этим данным выставляются параметры для уменьшения лоса на платно.
— так же иногда помогает увеличение лоса. Тоесть больше потом меньше потом снова больше и снова меньше и т.д
— первые слои максимально жирные(но тут вопрос к скоросте и весу). На класификатор слоях если часто лучше убирать биас
— так же биас слабо полезен на батч норме.
— при батч норме дропаут лишний. Да и вообще дропаут зачастую дичь гребаная. Ибо все что не умное все дичь. Лучше заменить на атенекн слой.
— если обьекты очень мелкиема картинка большая нужно юзать spatial attention network для их выделения перед класификацией, а иначе кина не будет.
— батчнорм можно заменять активацией selu, работает неплохо

Ну и еще много всего что зависит от данных в большей мере и типа сетки

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

Ну и мне интересно откуда столько негатива. Вы же Карпатому или Нг не пишите тоже самое, мол хули они зарабатывают рассказывая банальные вещи которых в сети полно?)

Кста на тему «в сети полно» рекомендую найти лекцию Карпатого о бекпропагейшене))

У меня пока нет критики тебя, но есть критическое восприятие очередного...

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

Так мы о доверии или о курсах?) бо если о курсах то сравни их курсы с мануалами торча и скажи обьективно мнение)

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

И объективное мнение — это когда 100 человек высказались и их высказывания как-то обобщили. Мое одно в любом случае субьективное.

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

Ну а если заработаешь определенный имидж, то дальше уже всё пойдет по накатанной.
Сейчас твой имидж 0 и ты можешь его двинуть в любую сторону. И да, я подписался по твоей ссылке выше :).

Мой имидж далеко не ноль) просто из доу девов редко кто тусит в комьюнити в Украине) если что обо мне даж ебаное писало(правда не по теме ит :( )

Сча добавлю линк на медиум, там есть пару статеек, публичных.

росто из доу девов редко кто тусит в комьюнити в Украине)

Но ты же тут сейчас на ДОУ. На ДОУ пока 0. О тебе ничего неизвестно большинству тут.

Гонор вещь хорошая, но с ним нужно аккуратно.

И кcтати, что за ML комьюнити в Уукраине?

На доу я тож известен) прочти первый комент хейтера)) просто я там по другим темам был тогда) хотя видишь помнять до сих пор а уже столько лет прошло))

Всё, что тобой было сказано или написано, будет использовано против тебя. И инет помнит всё.

Я никогда не делаю того о чем сожалею, все кто чет ко мне имеет могу дать адресс, я как бы не скрываюсь))

Ну и помнит тема спорная, небольшая ПР компания и все забудется как страшный сон)

Этот гонор заработан 20годами работы с очень непростыми людьми и не в простых условиях)) ну и зп канеш тоже (20 лет опыта это 20лет опыта)

А у меня больше и что?
Но я уже давно стараюсь не махать гонором лишний раз. Всегда будет кто-то круче меня и таких будет много.

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

Ну и лучший способ получить бесплатные знания это быть неправым))

Подписаться на комментарии