Последние публикации ML Глоссарий

@ml_glossary
Последние публикации
Дата публикации: 13 Apr, 19:50
Amazon с ноги влетает в мир AI-ассистентов и выдает бесплатный доступ к своему аналогу Copilot. Буду тестить.
https://aws.amazon.com/ru/codewhisperer/
CodeWhisperer is trained on billions of lines of code and can generate code suggestions ranging from snippets to full functions in real time based on your comments and existing code. Bypass time-consuming coding tasks and accelerate building with unfamiliar APIs.
👁 714 👍 1 💬 4 🔁 11 Дата публикации: 10 Apr, 20:49
Прежде чем перейти к разбору следующей знаковой YOLO архитектуры — YOLOv4-scaled — разберем статью, которая лежит в основе новой модели. Статья называется “CSPNet: A New Backbone that can Enhance Learning Capability of CNN” (тык) и посвящена тому, как уменьшить вычислительный бюджет сверточной сети, при этом по максимуму сохранить, а то и повысить ее качество. Начинаем.
CSPNet означает Cross Stage Partial Network. Разберем, что это такое, на примере DenseNet (картинка 1). DenseNet состоит из dense block-ов и transition layer-ов. Forward dense block-а выглядит следующим образом:
x_1 = w_1 * x_0
x_2 = w_2 * [x_0, x_1]
…
x_k = w_k * [x_0, …, x_{k-1}]
где * — свертка, […] обозначает конкатенацию. Обновление весов таких блоков выглядит, соответственно, так:
w_1’ = f(w_1, g_0)
w_2’ = f(w_2, g_0, g_1)
…
w_k’ = f(w_k, g_0, …, g_{k - 1})
Как видно, одни и те же градиенты очень много переиспользуются на разных dense слоях.
Теперь рассмотрим CSPDenseNet (картинка 2). Его forward выглядит следующим образом:
x_0 = [x_0’, x_0’’]
x_k = w_k * [x_0’’, x_1, …, x_{k - 1}]
x_T = w_T * [x_0’’, x_1, …, x_k]
x_U = w_U * [x_0’, x_T]
Обновление весов таких блоков выглядит, соответственно, так:
w_k’ = f(w_k, g_0’’, g_1, …, g_{k - 1})
w_T’ = f(w_T, g_0’’, g_1, …, g_k)
w_U’ = f(w_U, g_0’, g_T)
Как видим, несмотря на то, что x_0’ не использовалась в dense блоке, все равно получает свою порцию градиентов. Таким образом, нам удалось сократить количество дублирующихся градиентов разделением gradient flow и сократить количество флопсов (10-25% в зависимости от архитектуры сети).
Далее рассмотрим различные виды fusion, которые могут применяться к данному подходу: fusion first и fusion last (картинка 3).
Fusion first подход представляет собой конкатенацию x_0’ и x_k и применение transition слоя на этом. При таком подходе у нас переиспользуется значительное число градиентов.
Fusion last подход представляет собой конкатенацию x_0’ и x_T. В данном случае происходит явный gradient flow truncation и, соответственно, градиенты не будут переиспользоваться.
На 4 картинке представлено сравнение двух данных подходов зависимостью bflops-accuracy. Как видно, fusion last приносит значительное уменьшение компьюта при минимальной потере качества.
Данный подход (CSP) очень удобно можно перенести и на другие архитектуры. На картинке 5 показана обновленная под CSP версия ResNet-а. Аторы говорят, что из-за того, что в part2 идет только половина каналов, то можно избавиться от bottleneck в ResBlock. На 6 картинке показано сравнение сравнение ResNeXt-50 и CSPResNeXt-50 на имаджнете. Как видно, наряду со значительным снижением компьюта, удалось добиться и более высокого итогового качетсва.
Разбор данной статьи является, на мой взгляд, очень полезным поспорьем для разбора yolov4-scaled. Чем, собственно, в следующем посте и займемся. :)
👁 429 👍 1 💬 0 🔁 4 Дата публикации: 27 Mar, 18:51
Хорошая музыка. Хороший текст. Хороший клип + ControlNet. Классно, насколько быстро технология вошла в обиход.
youtube.com/watch?v=H6d9U8iDH2g
👁 463 👍 1 💬 0 🔁 0 Дата публикации: 20 Mar, 20:06
Блок постов про детекцию. Часть 3: one-stage object detection models, YOLO family
Intro в object detection и главные метрики (тык)
Часть 2: two-stage object detection models (тык)
Итак, в прошлом посте были разобраны самые известные two-stage модели и подходы детекции. В данном посте рассмотрим все то, что касается самых известных представителей one-stage моделей, а именно модели YOLO семьи.
Немного предварю. YOLO (you look only once) модели уже в самом своем наименовании намекают на то, что для детекции объектов нужен всего один forward pass, а именно поэтому они обладают real-time перфом и являются сотой в данного роде детекции.
Итак, как же они работают?
* YOLO (тык)
Данная модель супер простая:
* архитектура модели -- это просто последовательность из 20 сверток и макспулов + фидфорвард для предсказаний, претрейнута на именджнете;
* входное изображение “делится” на грид размера S x S, причем если центр объекта попадает в какую-то из клеток, то данная клетка становится ответственной за детекцию данного объекта;
* После forward-а модели каждой такой клетке соповставляется вектор размера 5 * B + C, где B — это количество предсказаний каждой клетки, 5 — это x, y, w, h, confidence, что в данном bbox-е есть объект, а С — вероятностое распределение классов;
* Во время инференса при предсказании confidence score умножается на вероятность определенного класса, что дает общую уверенность модели в предсказании;
* инференс 45 кадров/с.
* YOLOv2 (тык)
Улучшение прошлой модели, направленное на большее число предсказываемых классов и ускорение.
* добавили anchor box-ы, относительно которых уже выдают предсказания;
* добавили батчнормы для стабильности тренировки и доп регуляризации;
* обновили бекбон, сделали его поменьше и быстрее;
* в отличие от прошлой модели, которая одновременно тюнила бэкбон и на детекцию, и на high resolution, YOLOv2 сначала тюнит бекбон на большее разрешение, а только потом уже под задачу детекции;
* для улучшения предсказаний на мелких объектах используют фичермапы с более ранних слоев и стэкают их с крайними, а потом уже по всему этому предсказывают bbox-ы и тд;
* добавили multi-scale training, то есть во время тренировки периодически семплируют батчи с разными размерностями изоюражений, чтобы научить модель хорошо работать среди разных разрешений;
* инференс до 2 раз быстрее прошлой модели, причем на самой быстрой модели качество выше аж на 15 пунктов mAP!
* YOLOv3 (тык)
* обновили бекбон, теперь он — DarkNet-53, при этом модель тюнилась на 256х256 разрешении, что уменьшило число флопсов в сравнении с прошлой моделью;
* ввиду более глубокой модели с резидуал связями YOLOv3 работает лучше прошлой YOLO в плане метрик: прирост до 15 пунктов;
* в отличие от прошлой модели данная модель тренировалась на anchor box-ах разных размеров, что улучшило модель в предсказании bbox-ов для объектов разных форм и размеров;
* использование FPN (feature pyramidal network), то есть используют фичермапы с разных разрешений для предсказаний;
* по скорости данная модель слегка медленнее прошлой, но на уровне 78 кадров/с.
* YOLOv4 (тык)
* новый бекбон — CSPDarkNet-53, CSP — cross-stage partial connections;
* новая добавка к основному лоссу — GHM loss для улучшения предсказаний на мелких объектах;
* улучшение FPN по сравнению с прошлой моделью;
* метрики по сравнению с прошлой моделью выросли на 10 процентов, fps на 12 процентов.
* YOLOv5 (тык)
* новый более сложный бекбон — EfficientDet;
* новый датасет с большим числом категрий объектов;
* новый способ генерации anchor box-ов для тренировки — dynamic anchor boxes;
* используется SPP — spatial pyramid pooling для улучшения работы на мелких объектах;
* новая добавка к лоссу — cIOU loss для лучшей работы с дизабаланснутым датасетом.
В следующем посте постараемся рассмотреть YOLOv6 и YOLOv7, у них больше изменений как в архитектуре, так и в способе детекции.
👁 481 👍 5 💬 5 🔁 8





