Перейти к содержимому

Введение в архитектуру Swin transformer

Vizuara

0:00 / 0:00

Введение в архитектуру Swin transformer

5 066 просмотров · 9 месяцев назад
Vizuara
225 тыс. подписчиков
5 066 просмотров · 9 месяцев назад
Присоединяйтесь к курсу «Трансформеры для профессионального зрения»: https://vizuara.ai/courses/transforme... В этой лекции я расскажу вам об интуитивном понимании архитектуры Swin Transformer, которая, честно говоря, является одной из самых увлекательных, но в то же время несколько сложных идей, появившихся в исследованиях компьютерного зрения. Из-за этой сложности я решил разделить тему на две части, чтобы у вас было достаточно времени сегодня, чтобы усвоить суть и подготовиться к следующей неделе, когда мы начнем кодировать Swin Transformer с нуля. Реализация совсем не проста, она сложнее всего, что мы делали до сих пор в этом курсе, поэтому будет очень полезно, если вы внимательно послушаете сегодня и еще раз повторите ключевые идеи, прежде чем мы начнем кодировать. Статья о Swin Transformer от Microsoft Asia чрезвычайно объемна и имеет около тридцати восьми тысяч цитирований. И хотя идея блестящая, а результаты новаторские, лично мне показалось, что текст написан очень лаконично, что затрудняет чтение для тех, кто читает его впервые. Поэтому в этой лекции я буду разбирать каждый компонент медленно и понятно, чтобы вы действительно поняли, что происходит, а не механически следовали за текстом. Основная идея Swin основана на сдвинутых окнах, и сегодня мы поговорим о том, что такое окна, чем они отличаются от патчей, почему внимание ограничивается локально и какие проблемы возникают из-за этого перехода от глобального внимания к вниманию на основе окон. Мы начнем с обзора идей Vision Transformer, таких как патчинг, линейное встраивание, сложность внимания и роль токена CLS, а затем перейдем к основной вычислительной проблеме ViT, где сложность внимания масштабируется квадратично с количеством пикселей, что делает ViT чрезвычайно затратным для задач высокого разрешения, таких как обнаружение и сегментация. С этого момента мы постепенно раскрываем мотивацию для Swin, поскольку Swin преодолевает эту проблему, ограничивая внимание небольшими неперекрывающимися окнами, что сразу же снижает затраты с квадратичных до линейных по количеству пикселей — изменение, которое очень важно для практических систем компьютерного зрения. После того, как мотивация будет понята, мы рассмотрим, как строится внимание на основе окон, как архитектура становится иерархической на разных этапах, как слияние патчей уменьшает количество токенов, одновременно увеличивая размерность канала, и как эта иерархия напоминает поведение многомасштабных сверточных нейронных сетей, которое помогает Swin работать в задачах классификации, обнаружения и сегментации. Вы ясно увидите, почему поэтапное уменьшение пространственного разрешения и увеличение ширины канала имеют важное значение, и как эти идеи объединяются, образуя согласованную архитектуру. Во второй половине лекции мы углубимся в наиболее сложный компонент всей архитектуры — многоголовочное самовнимание на основе сдвинутых окон, и именно здесь у большинства людей возникают трудности, поскольку в статье это не объясняется достаточно просто. Я покажу вам, как именно работает сдвиг, почему необходим циклический сдвиг, как присваиваются идентификаторы окон до и после сдвига, как создается маска для предотвращения перекрестного внимания к окнам, и как сочетание обычного внимания к окнам и внимания к окнам со сдвигом позволяет фрагментам, которые раньше не могли взаимодействовать друг с другом, теперь взаимодействовать косвенно, восстанавливая тем самым долгосрочную зависимость без увеличения вычислительных затрат. К концу этой лекции у вас будет четкое и ясное представление о том, как Swin Transformer строится с нуля, почему он масштабируется линейно, как иерархические признаки естественным образом возникают в модели и почему эта архитектура стала мощной универсальной основой для современных задач компьютерного зрения. На следующей неделе мы расширим это понимание до полной реализации на PyTorch с нуля, где каждый шаг будет объяснен построчно. Если вы хотите глубже изучить саму статью о Swin, я также выпущу отдельный обзор статьи, где подробно рассмотрю оригинал, обсужу его сильные и слабые стороны и выделю те части, которые не сразу бросаются в глаза при первом прочтении.