[Концепция глубины] Введение в легкие сверточные нейронные сети: SqueezeNet, MobileNet, ShuffleNet, Xception

искусственный интеллект Python

[Концепция глубины] Введение в легкие сверточные нейронные сети: SqueezeNet, MobileNet, ShuffleNet, Xception

 

В этой статье рассматриваются и сравниваются четыре упрощенные модели, предложенные в последние годы: SqueezeNet, MobileNet, ShuffleNet и Xception.

содержание

Введение

2. Легкая модель

2.1 SqueezeNet

2.2 MobileNet

2.3 ShuffleNet

2.4 Xception

3. Сравнение сетей


Введение

 

Начиная с AlexNet в 2012 году сверточные нейронные сети (сокращенно CNN) широко используются в классификации изображений, сегментации изображений, обнаружении объектов и других областях. Поскольку требования к производительности становятся все выше и выше, AlexNet не может удовлетворить потребности всех, поэтому различные Daniels предлагают сети CNN с более высокой производительностью, такие как VGG, GoogLeNet, ResNet, DenseNet и т. д. Из-за характера нейронной сети, чтобы получить лучшую производительность, количество сетевых слоев продолжает увеличиваться, с 7 слоев AlexNet до 16 слоев VGG, затем с 16 слоев VGG до 22 слоев GoogLeNet, до 152. слоев ResNet и более тысячи слоев ResNet и DenseNet. Хотя производительность сети улучшилась, возникают проблемы с эффективностью.

Проблема эффективности - это в основном проблема хранения модели и проблема скорости прогнозирования модели (далее именуемая проблемой скорости).

 

Во-первых, проблемы с хранением. Сотни слоев сети имеют большое количество весовых параметров, а сохранение большого количества весовых параметров требует большой памяти устройства, во-вторых, проблема скорости. В практических приложениях она часто находится на уровне миллисекунд.Чтобы соответствовать практическим прикладным стандартам, либо улучшайте производительность процессора (см. прирост скорости Intel, чего пока не ожидается), либо уменьшайте объем вычислений. Только решив проблему эффективности CNN, CNN сможет выйти за пределы лаборатории и более широко использоваться на мобильных терминалах. Для проблем эффективности обычным методом является выполнение сжатия модели (Model Compression), то есть сжатие на уже обученной модели, чтобы сеть передавала меньше сетевых параметров, тем самым решая проблему памяти и проблему скорости.

 

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

В этой статье рассматриваются и сравниваются четыре упрощенные модели, предложенные в последние годы: SqueezeNet, MobileNet, ShuffleNet и Xception.

 

(PS: вышеприведенные четыре метода не являются методами сжатия моделей!!)

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

 

 

Среди них SqueezeNet цитируется в статье ShuffleNet, MobileNet цитируется в статье Xception.

 

2. Легкая модель

 

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

 

2.1 SqueezeNet

 

SqueezeNet был совместно опубликован на ICLR-2017 исследователями из Беркли и Стэнфорда под названием:

«SqueezeNet: точность уровня AlexNet с в 50 раз меньшим количеством параметров и менее 0,5 МБ»

название:

 

Из названия - SqueezeNet, мы знаем, что новинка этой статьи - сжатие. Сжатие представляет собой слой сжатия в SqueezeNet. Этот слой использует свертку 1 * 1 для свертки карты объектов предыдущего слоя. Основная цель - уменьшить размерность карты признаков.(Размерность - это количество каналов, то есть карта признаков куба, разрезанного на части, всего их несколько штук).

 

Инновации:

 

1. С использованием другого метода свертки предлагается пожарный модуль, пожарный модуль состоит из двух частей: слой сжатия + слой расширения

Инновационный момент очень близок к идее начального сериала! Во-первых, сжимающий слой — это свертка 1*1, а количество ядер свертки меньше, чем количество карт признаков в предыдущем слое.Эта операция доступна с начала серии и называется сжатием.Лично, Я думаю, что "сжатие" является более подходящим.

 

Слой Expand свёртывается с 1*1 и 3*3 соответственно, а затем объединяется.Эта операция также доступна в начальной серии.

 

Ядро SqueezeNet лежит в модуле Fire, который состоит из двух слоев, а именно слоя сжатия + слоя расширения, как показано на рисунке 1 ниже, слой сжатия представляет собой сверточный слой с ядром свертки 1*1, а слой расширения равно 1 * 1, а в слое свертки ядра свертки 3 * 3 в расширенном слое карты признаков, полученные с помощью 1 * 1 и 3 * 3, являются конкатными.

 

 

Конкретная операция показана на следующем рисунке:

 

 

Карта входных объектов модуля Fire — H*W*M, а карта выходных объектов — H*M*(e1+e3).Видно, что разрешение карты объектов не изменилось, а изменилось только измерение Это количество каналов, которое соответствует идее VGG.

 

Во-первых, карта объектов H * W * M проходит через слой Squeeze для получения карт объектов S1, где S1 меньше, чем M, для достижения цели «сжатия».

Во-вторых, карта объектов H*W*S1 вводится в слой Expand, который свертывается с помощью сверточного слоя 1*1 и сверточного слоя 3*3 соответственно, а затем результат объединяется для получения вывода модуля Fire, который представляет собой карту признаков H * M * (e1 + e3).

У пожарного модуля есть три регулируемых параметра: S1, e1 и e3, которые соответственно представляют количество ядер свертки и размерность соответствующей выходной карты признаков, В структуре SqueezeNet, предложенной в этой статье, e1 = e3 = 4s1.

Поговорив о ядре модуля SqueezeNet — Fire, взгляните на сетевую структуру SqueezeNet, как показано на следующем рисунке:

 

Идея проектирования сетевой структуры также аналогична VGG.Стекирование использует операцию свертки, но для стекирования используется модуль Fire, предложенный в этой статье (красный прямоугольник на рисунке).

 

Взгляните на количество параметров и производительность Squezeenet:

 

 

Здесь видно, что значение, указанное в заголовке статьи, меньше 0,5M, что является результатом использования Deep Compression для сжатия модели! !

Посмотрев на картинку выше, вернитесь к названию дипломной работы:

 

SqueezeNet: точность уровня AlexNet с в 50 раз меньшим количеством параметров и менее 0,5 МБ.

 

отметка! вопрос! вечеринка! SqueezeNet

Резюме SqueezeNet:

1 Модуль Fire аналогичен идее GoogLeNet, использующей свертку 1 * 1 для «сжатия» размерности карты объектов, чтобы достичь цели уменьшения весовых параметров;

 

2 Примите ту же идею, что и в VGG - в стеке используется свертка, здесь в стеке используется модуль Fire.

SqueezeNet имеет много общего с GoogLeNet и VGG!

 

2.2 MobileNet

 

MobileNet был предложен командой Google и опубликован в CVPR-2017, название документа:

«MobileNets: эффективные сверточные нейронные сети для приложений мобильного зрения»

название:

 

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

Инновации:

 

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

Применяя метод свертки по глубине, можно достичь: 1. Уменьшить количество параметров 2. Повысить скорость работы. (Эти два момента нужно различать. Те, у которых меньше параметров, не обязательно могут работать быстрее! Это также зависит от метода расчета!)

Свертка по глубине не предлагается MobileNet, а также для справки. Ссылка, приведенная в тексте, является докторской диссертацией 2014 г. - «Л. Сифре. Рассеяние в жестком движении для классификации изображений. Дипломная работа, докторская диссертация. , 2014"

Глубинная свертка аналогична групповой свертке.Глубинная свертка – это ядро ​​свертки, отвечающее за часть карты признаков, и каждая карта признаков свертывается только одним ядром свертки.Групповая свертка – это группа ядер свертки, отвечающая за группа карт функций, каждый набор карт функций свернут только одним набором ядер свертки. Свертку по глубине можно рассматривать как специальную групповую свертку, то есть каждый канал представляет собой группу.

 

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

MobileNet делит стандартную свертку на два этапа:

 

Первый шаг — глубинная свертка, то есть поканальная свертка, за один канал отвечает одно ядро ​​свертки, а один канал «фильтруется» только одним ядром свертки; второй шаг, точечная свертка, особенность полученная сверткой по глубине. Очень важно обращать внимание на эту «нитку», когда карта снова «натягивается». Что означает «строка»? Зачем нужна точечная свертка? Авторы говорят: "Однако он только фильтрует входные каналы, он не объединяет их для создания новых функций. Поэтому для создания этих новых функций необходим дополнительный слой, который вычисляет линейную комбинацию выходных данных свертки по глубине посредством свертки 1 × 1". Особенности. С другой точки зрения, это действительно так: каждая карта объектов выходного слоя должна содержать информацию обо всех картах объектов входного слоя. Однако нет способа сделать это с помощью только свертки по глубине, поэтому требуется помощь точечной свертки.

«Каждая карта объектов выходного сигнала должна содержать информацию обо всех картах объектов входного слоя». Это проблема, которую должны решать все сети, использующие операции свертки по глубине. С этим связано именование в ShuffleNet! Подробности см. в 2.3.

Схематические диаграммы стандартной свертки, свертки по глубине и точечной свертки следующие:

 

Существуют карты входных объектов M и карты выходных объектов N.

 

Для стандартной свертки для работы используются N ядер свертки размером DK*DK (обратите внимание, что размер ядра свертки равен DK*DK, а DK*DK*M — это размер ядра свертки в конкретной операции!)

А как насчет ядер свертки, необходимых для свертки по глубине + точечной свертки?

Глубинная свертка: одно ядро ​​свертки отвечает за один канал, а один канал свертывается только одним ядром свертки, то есть M DK*DK ядер свертки;

Точечная свертка: для выполнения операции вывода N карт объектов для свертки используются ядра свертки N 1 * 1. Метод свертки здесь такой же, как и традиционный метод свертки, за исключением того, что используется 1 * 1. Ядро свертки ; его цель состоит в том, чтобы каждая новая карта объектов содержала информацию о каждой карте объектов предыдущего слоя! Это понимается как «нанизывание» вывода свертки по глубине.

 

В следующих примерах объясняется стандартная свертка, свертка по глубине и точечная свертка.

 

Предположим, что входных карт объектов две 5*5, то есть 5*5*2; количество выходных карт объектов равно 3, а размер равен 3*3 (поскольку здесь используется ядро ​​свертки 3*3), то есть 3*3*3.

Стандартная свертка заключается в копировании ядра свертки (3 * 3) в M копий (M = 2), так что двумерное ядро ​​свертки (ломтик хлеба) расширяется до той же формы хлеба, что и входная карта объектов.

 

Стандартный процесс показан на рисунке ниже, X представляет свертку, а + представляет добавление соответствующих пикселей.Можно видеть, что для O1 он имеет «отношения» с каждой картой входных объектов, включая информацию о каждом входном объекте. карта.

 

Процесс по глубине показан на рисунке ниже.Вы можете видеть, что две карты признаков, полученные из свертки по глубине - fd1 и fd2, только "связаны" с i1 и i2 соответственно, что приводит к нарушению признанная выше точка зрения «каждая выходная карта объектов должна содержать информацию обо всех картах объектов входного слоя», поэтому вводится поточечная свертка.

 

Итак, насколько сократились вычисления? Рассчитывается по следующей формуле:

 

где DK — стандартный размер ядра свертки, M — количество входных каналов карты объектов, DF — размер карты входных объектов, а N — размер выходной карты объектов. В этом примере DK=3, M=2, DF=5, N=3 уменьшение параметров в основном связано с размером ядра свертки DK. В этой статье ядро ​​свертки MobileNet принимает DK=3, что уменьшает количество вычислений примерно в 8-9 раз.

Глядя на сетевую структуру MobileNet, MobileNet имеет в общей сложности уровни 28. Можно обнаружить, что метод понижения частоты дискретизации не использует слой пула, а устанавливает размер шага равным 2 при использовании свертки по глубине для достижения цели понижения частоты дискретизации. .

 

1.0 Сравнение MobileNet-224 с GoogLeNet и VGG-16:

 

Можно обнаружить, что по сравнению с GoogLeNet, хотя параметры похожи, они все одного порядка, но объем вычислений меньше, чем на порядок GoogLeNet, который выигрывает от свертки по глубине!

Резюме MobileNet:

 

1. Основная идея заключается в использовании операции свертки по глубине.При одинаковом количестве весовых параметров по сравнению со стандартной операцией свертки количество вычислений может быть уменьшено в несколько раз, чтобы достичь цели улучшения скорость работы сети. 2. Идея свертки по глубине не первая, и она заимствована из докторской диссертации 2014 г.: «Л. Сифре. Рассеяние в жестких движениях для классификации изображений. Диссертация кандидата наук, кандидатская диссертация, 2014 г. 3. Использование по глубине Существует проблема со сверткой, которая приводит к «вялому информационному потоку», то есть выходная карта признаков содержит только часть входной карты признаков. Здесь MobileNet использует точечную свертку для решения Эта проблема. Позже ShuffleNet использовала ту же идею для улучшения сети, но заменила поточечную свертку на перетасовку каналов, а затем назвала сеть ShuffleNet.

2.3 ShuffleNet

 

ShuffleNet был предложен командой Face++, как и MobileNet, он был опубликован в CVPR-2017, но опубликован на arXiv только на два месяца позже, чем MobileNet. Название диссертации:

«ShuffleNet: чрезвычайно эффективная сверточная нейронная сеть для мобильных устройств»

название:

 

Когда вы смотрите на название ShuffleNet, вы понимаете, что в этой статье основное внимание уделяется перемешиванию, так что же такое перемешивание? Зачем перемешивать?

В частности, перетасовка - это перетасовка каналов, которая заключается в упорядоченном перетасовке каналов каждой части карты объектов для формирования новой карты объектов, чтобы решить проблему «негладкого информационного потока», вызванного групповой сверткой. (MobileNet решает эту проблему с помощью точечной свертки)

 

Таким образом, известно, что перемешивание требуется не для всех сетей.Существует предположение, что используется групповая свертка, поэтому может потребоваться перемешивание! ! Почему это возможно? Потому что точечная свертка может быть использована для решения этой проблемы.

Инновации:

 

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

Среди них групповая свертка не оригинальна, а перетасовка каналов оригинальна. Перетасовка каналов началась из-за групповой свертки, точно так же, как заголовок 3.1 в документе: Перетасовка каналов для групповой свертки;

Использование групповой свертки приведет к неправильному потоку информации, поэтому предлагается перетасовка каналов, поэтому перетасовка каналов имеет предпосылку, поэтому будьте осторожны при ее использовании!

По сравнению с MobileNet, перемешивание используется для замены свертки 1*1, что может уменьшить весовые параметры, а также уменьшить множество весовых параметров, потому что в MobileNet слой свертки 1*1 имеет больше ядер свертки, и вычисление количество параметров и операций каждого уровня MobileNet следующее:

 

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

Group convolution

 

Групповая свертка существует со времен Alexnet. В то время групповая свертка использовалась из-за аппаратных ограничений. Позже, в ResNeXt в 2016 году, было показано, что групповая свертка может использоваться для получения эффективных сетей, Xception и MobileNet используют свертку по глубине. , это серия облегченных сетевых моделей, которые вышли недавно. Конкретную операцию свертки по глубине можно увидеть в 2.2 MobileNet для введения.

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

 

Поэтому перетасовка каналов используется для решения проблемы «неравномерного потока информации» между группами, как показано на рисунке (b) ниже.

 

Конкретный метод: разделить каналы каждой группы на g (g = 3 на рисунке ниже) в среднем, а затем последовательно реконструировать карту признаков.

 

 

Операция перетасовки каналов очень проста.Далее давайте посмотрим на ShuffleNet.ShuffleNet опирается на идею Resnet и постепенно развивается от базовой единицы узкого места resnet до единицы узкого места ShuffleNet, а затем складывает единицу узкого места ShuffleNet в получить ShuffleNet;

На следующем рисунке показана эволюция устройства ShuffleNet.

 

Рисунок (а): Это узкое место со сверткой по глубине; Рисунок (б): Автор вносит изменения на основе (а), заменяет 1*1 conv на 1*1 Gconv, а в первом канале A перетасовывает операция добавляется после 1*1 Gconv; Рисунок (c): Пул AVG добавляется в обход, чтобы уменьшить разрешение карты признаков; поскольку разрешение мало, в конце используется не Add, а concat, тем самым " компенсация" потери информации, вызванной снижением разрешения.

 

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

 

«это критично для небольших сетей, так как в крошечных сетях обычно недостаточно каналов для обработки информации»

 

Поэтому, если в будущем будет задействована небольшая сеть, можно подумать, как повысить эффективность использования канала.

Что касается экспериментального сравнения, то размер сравнения параметров модели не приводится, но используется показатель Сложности (МФЛОП), при одинаковой Сложности (МФЛОП) ShuffleNet сравнивается с каждой сетью, а также сравнивается с MobileNet. По сравнению с MobileNet здесь меньше сверточный слой 1*1, поэтому эффективность значительно выше. Не стесняйтесь опубликовать сравнительное изображение.

 

Резюме ShuffleNet:

 

1. Как и MobileNet, используется свертка по глубине, но для побочного эффекта свертки по глубине — «негладкого информационного потока» ShuffleNet использует операцию перетасовки каналов для ее решения. 2. С точки зрения топологии сети ShuffleNet использует идею реснета, а мобильная сеть использует идею VGG.2.1 SqueezeNet также использует идею стекирования VGG.

2.4 Xception

 

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

Xception был предложен Google, а версия arXiv V1 была обнародована в октябре 2016 года. Название диссертации:

«Xception: глубокое обучение с разделяемыми по глубине свертками»

название:

 

Xception основан на Inception-V3, а X означает Extreme, почему Extreme? Поскольку Xception делает расширенное предположение, это предположение:

we make the following hypothesis: that the mapping of cross-channels correlations and spatial correlations in the feature maps of convolutional neural networks can be entirely decoupled

Инновации:

 

1. Учитесь (не перенимайте) свертки с глубиной, чтобы улучшить Inception V3

Поскольку Inception v3 улучшен, необходимо упомянуть некоторые предположения (идеи) о начале.

«Фундаментальная гипотеза, лежащая в основе Inception, заключается в том, что межканальные корреляции и пространственные корреляции достаточно разделены, поэтому предпочтительно не отображать их вместе»

 

Простое понимание означает, что при свёртке лучше разделять свёртку канала и свёртку пространства. (Теоретического доказательства нет, есть только экспериментальное доказательство, просто примите его как теорему, что сейчас имеет место в большинстве статей по нейронным сетям.

 

Поскольку он улучшен в Inception V3, как Xception шаг за шагом эволюционирует от Inception V3.

Рисунок 1 ниже — это начальный модуль, а рисунок 2 — упрощенный начальный модуль автора (то есть зарезервирована только «дорога» 1*1. Если у вас есть средний пул, как вы можете делать дальнейшие предположения?)

 

 

После принятия упрощенной версии начального модуля далее предполагается, что три ядра свертки 1*1 в первой части объединены в одно ядро ​​1*1, а следующие три ядра свертки 3*3 соответственно «отвечают за» часть канала. , как показано на рисунке 3. Наконец, предлагается «экстремальная» версия Inception, и на сцену выходит модуль Xception. Сначала используйте ядро ​​свертки 1*1 для свертки между каждым каналом (кросс- канала), как показано на рисунке 4,

 

Автор сказал, что этот метод свертки почти такой же, как свертка по глубине. Свертка по глубине ранее использовалась в проектировании сети из: Rigid-Motion Scattering for Image Classification, но неизвестно, в каком году она была предложена; по крайней мере, в 2012 году было связанное исследование, и, например, AlexNet, из-за причин памяти , AlexNet Разделены на две группы сверток, если вы хотите узнать больше о глубинной свертке, вы можете обратиться к 2. Предыдущая работа в этой статье, которая имеет подробное введение.

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

 

Первый: исходная свертка по глубине, сначала поканальная свертка, а затем свертка 1*1; и Xception — обратная, сначала свертка 1*1, затем свертка поканально; второй: исходный Глубина. Между двумя свертками свертки нет функции активации, и Xception принесет нелинейную функцию активации Relu после свертки 1 * 1;

 

Структура Xception показана на рисунке выше и состоит из 36 слоев, разделенных на входной поток, средний поток и выходной поток. .

 

Входной поток содержит 8 конверсий; Средний поток содержит 3*8 = 24 конверсии; Выходной поток содержит 4 конверсии, поэтому Xception имеет всего 36 слоев.

Экспериментальная часть Xception в тексте очень подробная, а детали реализации можно найти в статье.

 

Краткое содержание:

 

Xception основан наInception-V3 и сочетается со сверткой по глубине.Преимущество этого заключается в повышении эффективности сети, и в случае того же количества параметров эффект лучше, чем Inception-V3 на крупномасштабных наборах данных. Это также дает еще одну «облегченную» идею: учитывая аппаратные ресурсы, максимально возможное повышение эффективности и производительности сети также можно понимать как полное использование аппаратных ресурсов.

 

3. Сравнение сетей

 

В этой статье кратко представлены четыре облегченные модели сети, а именно SqueezeNet, MobileNet, ShuffleNet и Xception.Первые три являются облегченными сетями в истинном смысле, в то время как Xception предназначен для повышения эффективности сети и достижения более высоких результатов при том же количестве параметров производительности.

Вот таблица для сравнения того, как четыре сети достигают снижения веса сети.

 

Реализовать легкие навыки

 

 

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

 

Чтобы решить проблему «плохого информационного потока», MobileNet использует точечную свертку, а ShuffleNet использует перетасовку каналов. По сравнению с ShuffleNet, MobileNet использует больше сверток, что невыгодно с точки зрения вычислений и параметров, но увеличивает количество нелинейных слоев и теоретически обладает более абстрактными и продвинутыми свойствами; исключение шага свертки и уменьшение количества параметров.

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

Благодаря новшествам этих документов следующие идеи можно рассматривать как документы Шуй:

 

1. С помощью свертки по глубине разработайте другой метод для решения проблемы «неравномерного информационного потока» и назовите его XX-Net. (Посмотрите на ShuffleNet для этого)

2. Для свертки по глубине, не странен ли метод свертки? Различные методы свертки могут ссылаться на Github (GitHub.com/VDU в лесу/От…(Шуй) Тезис.

3. Затем, если разрабатывается новый метод свертки, если есть какие-то «побочные эффекты», придумайте способ решить этот побочный эффект, а затем эвфемистически назовите его XX-Net. Это значит самому «вырыть» яму и самому ее засыпать.