Я Создал Свой Собственный Дипфейк За Две Недели И 552 Доллара.



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

Эта технология имеет явный потенциал для злонамеренного использования и становится все более распространенной.

О социальных и политических последствиях этой тенденции уже написано много хороших статей.

И это не один из них.

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

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

Через пару недель я получил результат, представленный на видео в начале статьи.

Я начал с видео, на котором Марк Цукерберг выступает перед Конгрессом, и заменил его лицо на лейтенанта-коммандера Дейта (Брент Спайнер) из «Звездного пути: Следующее поколение».

Всего было потрачено 552 доллара.

Видео получилось несовершенным.

Все детали лица Дейты не запечатлены, и если присмотреться, то по краям можно увидеть артефакты.

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

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

В этой статье я проведу вас за руку в моем дипфейковом путешествии.

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

Попутно я объясню, как работает эта технология и каковы ее ограничения.



Дипфейки требуют много вычислительной мощности и данных

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

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

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

То же самое справедливо и для дипфейков.

Для этого проекта я арендовал виртуальную машину с четырьмя мощными видеокартами.

И даже со всеми этими лошадьми на обучение моей модели ушла почти неделя.

Еще мне нужна была гора изображений Марка Цукерберга и Дейты.

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

Для этого я скачал кучу видеороликов с их лицами: 14 видеороликов с отрывками из «Звездного пути» и девять видеороликов с Марком Цукербергом.

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

Я загрузил все эти клипы в iMovie и удалил кадры, на которых не было лиц Цукерберга и Дейты.

Самые длинные проходы я также разрезала на части.

Дипфейк-программе нужно не просто огромное количество изображений, а большое количество разных изображений.

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

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

Поэтому я сократил несколько часов видео до 9 минут с Дейтой и до 7 минут с Цукербергом.



Faceswap: программный пакет для создания дипфейков

Тогда пришло время использовать программное обеспечение для дипфейков.

Сначала я попробовал использовать DeepFaceLab и смог создать довольно грубое видео.

Потом я спросил совета на форуме SFWdeepfakes, и тогда несколько человек порекомендовали мне Faceswap. Люди отметили, что эта программа имеет больше возможностей, лучшую документацию и лучшую онлайн-поддержку.

Я решил последовать их совету.

Faceswap работает на Linux, Windows и Mac. В пакете есть инструменты для работы со всеми этапами создания дипфейка, от импорта исходных видеороликов до создания готового дипфейк-видео.

Программное обеспечение не является интуитивно понятным, но поставляется с подробными учебными материалами, охватывающими все этапы процесса.

Материал написал создатель Faceswap Мэтт Тора, который также здорово помог в общении на канале Deepfake Discord. Faceswap требует мощной видеокарты.

Я знал, что мой MacBook Pro с этим не справится.

Я попросил нашу редакцию арендовать мне виртуальную машину Linux у ведущего поставщика облачных услуг.

Я начал с виртуальной машины с графическим процессором Nvidia K80 и 12 ГБ видеопамяти.

Через несколько дней я перешел на модель с двумя графическими процессорами, а затем на модель с 4 графическими процессорами.

У него было четыре графических процессора Nvidia T4 Tensor Core с 16 ГБ памяти каждый (а также еще 48 процессоров и 192 ОЗУ, которые в основном простаивали).

Через две недели работы я получил счет на сумму 522 доллара.

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

Тора рассказал мне, что на данный момент наиболее выгодным аппаратным вариантом для дипфейка является карта Nvidia GTX 1070 или 1080 с 8 ГБ памяти.

Подержанная карта стоит несколько сотен долларов.

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

Рабочий процесс Faceswap состоит из трех основных этапов:

  • Извлечение: разрежьте видео на кадры, найдите лица в каждом кадре, выведите хорошо выровненные и тщательно обрезанные изображения каждого лица.

  • Обучение: используйте полученные изображения для обучения глубокой нейронной сети.

    Он берет изображение лица одного человека и создает изображение лица другого человека с тем же выражением, освещением и позой.

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

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

Каждый из трех этапов требует от человека и машины совершенно разного количества времени.

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

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

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

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

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

Я начал обучение своей последней модели 7 декабря и продолжалось до 13 декабря.

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

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

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

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

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



Как работают дипфейки

Прежде чем описывать процесс обучения Faceswap, нам нужно объяснить, как работает лежащая в его основе технология.

В основе Faceswap и других ведущих программных пакетов для дипфейков лежит автокодировщик.

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

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



Я создал свой собственный дипфейк за две недели и 552 доллара.
</p><p>

Автоэнкодер имеет структуру двух воронок, соединенных на узком конце.

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

В модели, которую я использовал в Faceswap, это 1024 32-битных числа с плавающей запятой.

На другой стороне нейронной сети находится декодер.

Он берет это компактное представление, известное как «скрытое пространство», и пытается расширить его обратно до исходного изображения.

Искусственное ограничение объема данных, передаваемых от кодера к декодеру, вынуждает эти две сети разрабатывать компактное представление человеческого лица.

Кодер — это что-то вроде алгоритма сжатия с потерями, который пытается сохранить как можно больше информации о лице с учетом ограничений хранилища.

Скрытое пространство должно каким-то образом выделять важные детали, например, в каком направлении смотрит объект, открыты или закрыты его глаза, улыбаются ли они или хмурятся.

Важно, что автокодировщику необходимо сохранять только те черты лица, которые меняются со временем.

Ему не нужно сохранять постоянство таких вещей, как цвет глаз или форма носа.

Если на каждой фотографии Цукерберга у него голубые глаза, то декодер его сети научится автоматически рисовать его лицо с голубыми глазами.

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

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

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

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

Автоэнкодеры работают по-другому.

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

На жаргоне машинного обучения это называется обучением без учителя.

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

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

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

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

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

Затем алгоритм обучения передает в сеть другое изображение, и весь процесс повторяется снова.

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



Я создал свой собственный дипфейк за две недели и 552 доллара.
</p><p>

Программное обеспечение Deepfake работает путем параллельного обучения двух автокодировщиков: одного для исходного лица, а другого для нового.

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

Однако есть одна загвоздка: обе сети используют один и тот же кодер.

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

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

Когда сеть Цукерберга обучается на лице Цукерберга, она заменяет половину сети кодировщика и сеть для данных.

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

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

Цель кодировщика — использовать одно и то же представление таких вещей, как угол головы или расположение бровей, независимо от того, получает ли он в качестве входных данных фотографию Цукерберга или фотографию Дейты.

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



Я создал свой собственный дипфейк за две недели и 552 доллара.
</p><p>

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

Вы кодируете фотографию Цукерберга, но на этапе декодирования используете декодер Дейты.

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

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

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

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

Эта ситуация симметрична.

Когда вы обучаете нейронную сеть получать фотографию Цукерберга и создавать фотографию Дейты, вы одновременно обучаете ее получать фотографию Дейты и создавать фотографию Цукерберга.

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

В результате вместо замены лица Дейты на лицо Цукерберга программа делает обратное, создавая такие очень забавные видеоролики:

Данные обучения

На практике получить хорошие результаты при создании дипфейка непросто.

Как я уже упоминал, я снял семь минут видео для Дейты и девять минут для Цукерберга.

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

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

Инструмент извлечения Faceswap выдал довольно много ложных срабатываний.

Он также обнаружил настоящие лица на фоне некоторых кадров.

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

В итоге у меня получилось 2598 изображений лица Дейты и 2224 изображения лица Цукерберга.

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

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

Среди самых простеньких есть «облегченная» модель, работающая с изображениями лиц размером не более 64 пикселей.

Его можно запустить на машине с видеопамятью не более 2 ГБ.

Другие модели работают с изображениями размером 128, 256 или даже 512 пикселей — но требуют гораздо больше видеопамяти, а также больше времени на обучение.

Я начал обучение модели DFL-SAE, полученной на основе алгоритмов DeepFaceLab. Однако в документации Faceswap предупреждается, что модель страдает от «утечки личности», при которой некоторые черты одного лица могут перетекать в другое.

Мне показалось, что я видел что-то подобное в первых двух тестовых видеороликах, поэтому через день переключился на модель Villain, которая работает с 128-пиксельными изображениями.

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

Тогда я стал ждать.

И он подождал еще немного.

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

На тот момент моя модель сделала довольно неплохой дипфейк.

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

Faceswap хорошо подходит для длительной вычислительной работы.

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

Если вы предпочитаете преподавать из командной строки, это также возможно.

В интерфейсе Faceswap есть полезная кнопка «Создать», которая выдает точную команду, которую необходимо выполнить для обучения модели с текущими настройками, заданными в интерфейсе.



Насколько удачным оказался дипфейк?

В процессе обучения Faceswap постоянно выводит числовую оценку «потерь» для каждого из двух автоэнкодеров.

Эти оценки показывают, насколько хорошо автокодировщик Цукерберга может воспроизводить фотографию Цукерберга и насколько хорошо автокодировщик Дейты может воспроизводить фотографию Дейты.

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

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

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

Лучшее, что мы можем сделать, это посмотреть видео и решить, выглядит ли оно реалистично.

На видео выше показано качество дипфейка на четырех этапах процесса обучения.

На видео от 10 и 12 декабря показана частично обученная модель Злодея.

Видео от 6 декабря выше слева — это ранний тест другой модели.

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

9 декабря, после трёх дней обучения, я опубликовал предварительное видео на внутреннем редакционном канале в Slack. Видео выглядело так, как в верхнем левом углу.

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

Я жду одного из тех видео, которое не будет выглядеть фейковым».

Я думаю, что в его критике есть рациональное зерно.

Я был удивлен тем, как быстро Faceswap смог создать изображения лиц, которые были больше похожи на Брента Спайнера, чем на Цукерберга.

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

На некоторых кадрах линия между фальшивым лицом Дейты и головой Цукерберга выглядит не совсем правильно.

Иногда можно увидеть, как бровь Цукерберга выглядывает из-под лица Дейты.

В другом месте края фальшивого лица закрывают несколько пикселей на ушах Цукерберга.

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

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

Это довольно очевидно, если вы посмотрите на начало и конец видео рядом.

Faceswap на удивление хорошо передал общую структуру лица Дейты.

Но даже после недели тренировок лицо выглядит размытым и не хватает важных деталей.

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

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

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

Автоэнкодеры хорошо справляются с изображениями размером 64x64 пикселя.

Но воспроизвести более мелкие детали изображений размером 128x128 пикселей, не говоря уже об изображениях размером 256 пикселей и больше, гораздо сложнее.

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

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

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

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

Дипфейки на самом деле работают с использованием автокодировщиков.

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

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

Но недавно исследователи придумал , как создать GSS, который создает фотореалистичные изображения размером до 1024 пикселей.

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



Перспективы дипфейков

Рост популярности дипфейков, очевидно, вызывает тревогу.

До недавнего времени люди могли довольно легко принять видео человека за чистую монету.

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

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

Однако мой эксперимент подчеркивает ограничения технологии дипфейков — по крайней мере, в ее нынешнем виде.

Чтобы создать полностью убедительное виртуальное лицо, требуются обширные знания и усилия.

Мне это не удалось, и я не уверен, что кому-то еще удалось создать дипфейковое видео, которое на самом деле неотличимо от настоящего.

Более того, сегодня такие инструменты, как Faceswap, занимаются только заменой лиц.

Они не меняют лоб, волосы, руки и ноги.

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

Однако эти ограничения технологии deepfake могут исчезнуть.

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

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

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

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

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

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



Вас могут обмануть один раз

То же самое и с видео.

Может пройти короткий период времени, когда мошенники могут разрушить карьеру человека, опубликовав видео, на котором он говорит или делает что-то возмутительное.

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

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

Это явно неуважительно и неприемлемо.

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

Я так не думаю.

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

Страдания женщин понятны.

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

То же самое касается и дипфейковой порнографии.

Очевидно, что снимать фейковое порно с вашим участием нехорошо.

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

В отсутствие доказательств подлинности видео общественность придет к выводу, что оно фейковое.

Мэтт Тора, автор Faceswap, рассказал мне, что это соображение было частью его мотивации к созданию пакета.

Он считает, что программное обеспечение для подделки лиц неизбежно будет разработано.

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

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

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

Некоторые политики уже взяли за привычку отвергать критику СМИ как «фейковые новости».

Эта тактика станет более эффективной по мере роста осведомленности общественности о технологии дипфейков.

Теги: #Машинное обучение #информационная безопасность #Работа с видео #видео #искусственный интеллект #нейронные сети #глубокое обучение #deepfake #deepfake

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