Фотография модели: 16 216 460 рез. по запросу «Модели» — изображения, стоковые фотографии и векторная графика | Shutterstock

Содержание

ProArt|Мониторы|ASUS в СНГ

Сортировка и фильтрация

Сортировка и фильтрация

Очистить все

По Размеру Экрана

17,9″ и меньше

18″ – 22,9″

23″ – 26,9″

27″ – 30,9″

31″ – 34,9″

35″ и больше

По Серии

Игровые

ROG — Republic of Gamers

TUF Gaming

ProArt

Фотография

Фильмопроизводство и видеомонтаж

ZenScreen

Eye Care

Designo

Сенсорные

Для бизнеса

Диагональ экрана

17.

9″ и меньше

18″ — 22.9″

23″ — 26.9″

27″ — 30.9″

31″ — 34.9″

35″ и больше

Разрешение

4K UHD (3840 x 2160)

3840 x 1600

3840 x 1200

3440 x 1440

WQHD (2560 x 1440)

2560 x 1080

WUXGA (1920 x 1200)

Full HD (1920 x 1080)

1366 x 768

Соотношение сторон

Разъемы подключения

DisplayPort

Thunderbolt

Технологии

G-SYNC™

G-SYNC™ Compatible

FreeSync™

Adaptive-Sync

Цветовое пространство

Adobe RGB

DCI-P3

Rec. 2020

Другие функции

Частота обновления 100Гц+

Широкая цветовая гамма

Аппаратная калибровка

Расширенный динамический диапазон (HDR)

Изогнутый экран

Встроенные динамики

Регулировка по высоте

Настенное крепление

4K 120Hz console gaming

120Hz console gaming

High Refresh Rate

Отменить

Применить

Вернуться к фильтру

Мониторы ASUS серии ProArt призваны предоставить самые современные технологии в распоряжение творческих профессионалов. Подсветка на базе мини-светодиодов, OLED-экраны, поддержка различных форматов HDR – благодаря этим и другим достоинствам мониторы ProArt помогут с еще большей легкостью работать над креативными проектами.

Фотография

Цена ASUS estore от

Обрабатывайте фотографии быстро и точно, пользуясь мощными профессиональными инструментами, например Adobe Photoshop и Lightroom Classic.

Фильмопроизводство и видеомонтаж

Цена ASUS estore от

Съемка, монтаж, постобработка, рендеринг и перекодирование – все эти рабочие процессы, проводимые с видеоматериалами, требуют использования ресурсоемких приложений, таких как Adobe Premiere или DaVinci Resolve.

Смотреть все ProArt

Подробнее

>

Вопросы авторских прав на фотографию модели

8 988 3123544

Бесплатная консультация
Запись на прием
Узнать перспективы дела

  • Главная
  • Услуги
  • Контакты
  • Статьи
  • Информация
  • Образцы документов

Вопрос юристу:

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

Вчера моя расстроенная дочь сказала, что две ее фото размещены в качестве рекламы на коммерческом сайте. Она показала мне этот сайт — на изображении дочери фотограф поместил свой логотип и текст рекламного характера. Со слов дочери, она звонила фотографу и просила убрать фотографии, однако он ответил, что все права на изображения принадлежат ему, т.к. он снимал и изготавливал снимки, и потому может делать с ними все, что пожелает. Я перезвонила фотографу, и он слово в слово повторил сказанное моей дочери, отказавшись убирать изображения с сайта.
Есть ли у меня какая-то возможность запретить использовать фотографии дочери без ее разрешения?
Елена Петровна.

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

При таких обстоятельствах вы лишены права использовать фотографии любым образом, в том числе, размещать на веб-сайте в собственном портфолио, предоставлять их в модельное агентство, передавать третьим лицам и т.д.
Использование фотографий без разрешения правообладателя карается санкциями действующего законодательства.
В свою очередь правообладатель, фотограф, не вправе распоряжаться фотографиями с вашим изображением без вашего согласия. Ваше право на изображение закреплено ст. 152.1 ГК РФ (Охрана изображения гражданина).

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

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

Управление файлами | Документация Django

В этом документе описаны API доступа к файлам Django для таких файлов, как загружено пользователем. API нижнего уровня являются достаточно общими, чтобы вы могли использовать их для других целей. Если вы хотите обрабатывать «статические файлы» (JS, CSS и т. д.), см. Как управлять статическими файлами (например, изображениями, JavaScript, CSS).

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

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

Использование файлов в моделях

При использовании FileField или ImageField , Django предоставляет набор API, которые вы можете использовать для работы с этим файлом.

Рассмотрим следующую модель, используя ImageField для сохранить фото:

 из моделей импорта django. db
Класс Автомобиль(модели.Модель):
    имя = модели.CharField(max_length=255)
    цена = модели.DecimalField(max_digits=5, decimal_places=2)
    фото = модели.ImageField(upload_to='cars')
    спецификации = модели.FileField(upload_to='specs')
 

Любой экземпляр Car будет иметь атрибут photo , который можно использовать для доступа к детали прикрепленного фото:

 >>> car = Car.objects.get(name="57 Chevy")
>>> машина.фото
>>> car.photo.name 'автомобили/шеви.jpg' >>> машина.фото.путь '/media/cars/chevy.jpg' >>> car.photo.url 'http://media.example.com/cars/chevy.jpg'

Этот объект — car.photo в примере — это объект File , что означает он имеет все методы и атрибуты, описанные ниже.

Примечание

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

Например, вы можете изменить имя файла, установив имя на путь относительно файлового хранилища расположение ( MEDIA_ROOT , если вы используете значение по умолчанию FileSystemStorage ):

 >>> импорт ОС
>>> из настроек импорта django.conf
>>> начальный_путь = car.photo.path
>
>> car.photo.name = 'cars/chevy_ii.jpg' >>> новый_путь = settings.MEDIA_ROOT + car.photo.name >>> # Переместите файл в файловую систему >>> os.rename(начальный_путь, новый_путь) >>> car.save() >>> машина.фото.путь '/media/cars/chevy_ii.jpg' >>> car.photo.path == new_path Истинный

Чтобы сохранить существующий файл на диске в FileField :

 >>> from pathlib import Path
>>> из файла импорта django.core.files
>>> path = Path('/some/external/specs.pdf')
>>> car = Car.objects.get(name='57 Chevy')
>>> с path.open(mode='rb') как f:
... car.specs = Файл(f, имя=путь.имя)
... машина.сохранить()
 

Примечание

Хотя ImageField атрибуты данных, не относящиеся к изображениям, например как высота , ширина и размер доступны на экземпляре, базовые данные изображения нельзя использовать без повторного открытия изображения. Для пример:

 >>> из изображения импорта PIL
>>> car = Car.objects.get(name='57 Chevy')
>>> машина.фото.ширина
191
>>> авто.фото.высота
287
>>> image = Image.open(car.photo)
# Выдает ValueError: поиск закрытого файла.
>>> автомобиль.фото.открыть()

>>> image = Image.open(car.photo)
>>> изображение

 

Объект

File

Внутри Django использует экземпляр django.core.files.File каждый раз, когда он должен представлять файл.

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

Если вам нужно создать файл самостоятельно, проще всего создать его самостоятельно. используя встроенный объект Python file :

 >>> из файла импорта django. core.files
# Создайте объект файла Python, используя open()
>>> f = open('/path/to/hello.world', 'w')
>>> мой файл = файл(f)
 

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

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

 >>> from django.core.files import File
# Создайте объект файла Python, используя open() и оператор with
>>> с open('/path/to/hello.world', 'w') как f:
... мой файл = файл (f)
... myfile.write('Привет, мир')
...
>>> мой файл.закрыт
Истинный
>>> f.закрыто
Истинный
 

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

 OSError: [Errno 24] Слишком много открытых файлов
 

Хранилище файлов

За кулисами Django делегирует решения о том, как и где хранить файлы в файловую систему хранения. Это объект, который действительно понимает вещи как файловые системы, открытие и чтение файлов и т. д.

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

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

Объекты хранения

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

 >>> из django.core.files.base импортировать ContentFile
>>> из django.core.files.storage импортировать default_storage
>>> path = default_storage. save('путь/к/файлу', ContentFile(b'новый контент'))
>>> путь
'путь/к/файлу'
>>> default_storage.size(путь)
11
>>> default_storage.open(path).read()
б'новый контент'
>>> default_storage.delete(путь)
>>> default_storage.exists(путь)
ЛОЖЬ
 

См. API хранилища файлов для API хранилища файлов.

Класс хранилища встроенной файловой системы

Django поставляется с классом django.core.files.storage.FileSystemStorage . который реализует базовое хранилище файлов локальной файловой системы.

Например, следующий код будет хранить загруженные файлы в /media/photos независимо от того, какой у вас параметр MEDIA_ROOT :

 из django.core.files.storage import FileSystemStorage
из моделей импорта django.db
fs = FileSystemStorage(location='/media/photos')
Класс Автомобиль(модели.Модель):
    ...
    фото = модели.ImageField(storage=fs)
 

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

Использование вызываемого объекта

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

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

Например:

 из настроек импорта django.conf
из моделей импорта django.db
из .storages импортировать MyLocalStorage, MyRemoteStorage
защита select_storage():
    вернуть MyLocalStorage(), если settings.DEBUG иначе MyRemoteStorage()
класс MyModel (модели.Модель):
    my_file = models.FileField(storage=select_storage)
 

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

Введение

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

Более того, в наши дни машины могут легко различать разные изображения, распознавать объекты и лица и даже генерировать изображения людей, которых не существует! Увлекательно, не так ли? Одним из моих первых опытов работы с Computer Vision была задача классификации изображений. Сама эта способность машины различать объекты приводит к большему количеству направлений исследований, например, к различению людей.

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

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

  • ImageNet
  • СИФАР
  • МНИСТ

и многие другие.

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

Если вы хотите изучить компьютерное зрение в структурированном формате, обратитесь к этому курсу — Certified Computer Vision Master’s Program

 

Содержание-

  • Настройка системы
  • Подготовка набора данных
  • Предварительно обученные модели для классификации изображений
    • ВГГ-16
    • Реснет50
    • Началоv3
    • Эффективная сеть

 

Настройка системы

Поскольку мы начали с кошек и собак, давайте возьмем набор данных изображений кошек и собак. Исходный обучающий набор данных на Kaggle содержит 25 000 изображений кошек и собак, а тестовый набор данных содержит 10 000 немаркированных изображений. Поскольку наша цель состоит только в том, чтобы понять эти модели, я взял гораздо меньший набор данных. Вы можете сразу же запустить этот и остальной код в Google Colab — так что давайте начнем!

Посмотреть код на Gist.

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

Код Python:

 

Подготовка набора данных

Сначала мы подготовим набор данных и выделим изображения:

  1. Сначала мы разделяем содержимое папки на каталоги train и validation.
  2. Затем в каждом из каталогов создайте отдельный каталог для кошек, содержащий только изображения кошек, и отдельный каталог для собак, содержащий только изображения собак.

Посмотреть код на Gist.

Следующий код позволит нам проверить правильность загрузки изображений:

Посмотреть код на Gist.

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

 

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

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

1. Очень глубокие сверточные сети для крупномасштабного распознавания изображений (VGG-16)

VGG-16 — одна из самых популярных предварительно обученных моделей для классификации изображений. Представленный на знаменитой конференции ILSVRC 2014, он был и остается САМОЙ лучшей моделью даже сегодня. Разработанный в Visual Graphics Group в Оксфордском университете, VGG-16 превзошел тогдашний стандарт AlexNet и был быстро принят исследователями и промышленностью для своих задач классификации изображений.

Вот архитектура VGG-16:

 

Вот более интуитивная компоновка модели VGG-16.

Следующие слои модели:

  • сверточных слоев = 13
  • Объединение слоев = 5
  • Плотные слои = 3

Давайте подробно рассмотрим слои:

  1. Ввод : Изображение размеров (224, 224, 3).
  2. Сверточный слой Conv1:
    • Conv1-1: 64 фильтра
    • Conv1-2: 64 фильтра и максимальный пул
    • Размеры изображения: (224, 224)
  3. Слой свертки Conv2: Теперь мы увеличиваем фильтры до 128
    • Размеры исходного изображения: (112 112)
    • Conv2-1: 128 фильтров
    • Conv2-2: 128 фильтров и максимальный пул
  4. Convolution Layer Conv3: Снова удвойте фильтры до 256, а теперь добавьте еще один сверточный слой.
    • Размеры входного изображения: (56,56)
    • Conv3-1: 256 фильтров
    • Conv3-2: 256 фильтров
    • Conv3-3: 256 фильтров и максимальный пул
  5. Convolution Layer Conv4: Аналогично Conv3, но теперь с 512 фильтрами
    • Размеры исходного изображения: (28, 28)
    • Conv4-1: 512 фильтров
    • Conv4-2: 512 фильтров
    • Conv4-3: 512 фильтров и максимальный пул
  6. Слой свертки Conv5: То же, что и Conv4
    • Размеры исходного изображения: (14, 14)
    • Conv5-1: 512 фильтров
    • Conv5-2: 512 фильтров
    • Conv5-3: 512 фильтров и максимальный пул
    • Выходные размеры здесь (7, 7). На этом этапе мы сглаживаем выходные данные этого слоя, чтобы создать вектор признаков
    • .
  7. Fully Connected/Dense FC1 : 4096 узлов, создание вектора признаков размера (1, 4096)
  8. Полное подключениеDense FC2 : 4096 узлов, генерирующих вектор признаков размером (1, 4096) 90 180
  9. Fully Connected/Dense FC3 : 4096 узлов, генерирующих 1000 каналов для 1000 классов. Затем это передается функции активации Softmax
  10. .
  11. Выходной слой

Как видите, модель носит последовательный характер и использует множество фильтров. На каждом этапе используются маленькие фильтры 3*3 для уменьшения количества параметров, все скрытые слои используют функцию активации ReLU. Даже тогда количество параметров равно 138 Billion — что делает его более медленной и крупной моделью для обучения, чем другие.

Кроме того, существуют вариации модели VGG16, которые в основном являются ее усовершенствованиями, например VGG19 (19 слоев). Вы можете найти подробное объяснение

Давайте теперь рассмотрим, как обучить модель VGG-16 на нашем наборе данных-

Шаг 1. Увеличение изображения

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

Посмотреть код на Gist.

Шаг 2. Наборы для обучения и проверки

Посмотреть код на Gist.

Шаг 3. Загрузка базовой модели

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

Посмотреть код на Gist.

Так как нам не нужно обучать все слои, мы делаем их non_trainable:

Посмотреть код на Gist.

Шаг 4.
Компиляция и установка

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

Посмотреть код на Gist.

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

Посмотреть код на Gist.

Отлично! Как видите, мы смогли добиться точности проверки 93% всего за 10 эпох и без каких-либо серьезных изменений в модели. Именно здесь мы понимаем, насколько мощным является трансфертное обучение и насколько полезными могут быть предварительно обученные модели для классификации изображений. Однако есть предостережение: VGG16 требует много времени для обучения по сравнению с другими моделями, и это может быть недостатком, когда мы имеем дело с огромными наборами данных.

При этом мне очень понравилась простота и интуитивность этой модели. Еще одним заметным достижением VGG-16, обученной на корпусе ImageNet, является то, что она заняла 1-е место в ImageNet ILSVRC-2014 и, таким образом, закрепила свое место в списке лучших предварительно обученных моделей для классификации изображений.

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

 

2. Начало

При подготовке этой статьи было ясно одно. 2014 год был знаковым с точки зрения разработки действительно популярных предварительно обученных моделей для классификации изображений. В то время как вышеупомянутый VGG-16 занял 2-е место в ILSVRC того года, 1-е место было обеспечено не кем иным, как Google — через его модель GoogLeNet или Inception, как ее теперь называют позже.

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

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

 

Источник: Бумага

Несмотря на то, что количество слоев в Inceptionv1 равно 22, значительное сокращение параметров делает эту модель непобедимой.

Источник: Бумага

Модель Inceptionv2 была значительным усовершенствованием модели Inceptionv1, что повысило точность и сделало модель менее сложной. В той же статье, что и Inceptionv2, авторы представили модель Inceptionv3 с еще несколькими улучшениями по сравнению с v2.

Включены следующие основные улучшения:

  • Введение в пакетную нормализацию
  • Дополнительная факторизация
  • Оптимизатор RMSProp

Источник: Бумага

Хотя в этой статье невозможно дать подробное объяснение Inception, вы можете ознакомиться с подробной статьей, подробно описывающей Inception Model: Deep Learning in the Trenches: Understanding Inception Network from Scratch

Как видите, количество слоев равно 42, по сравнению с ничтожными 16 слоями VGG16. Кроме того, Inceptionv3 снизил количество ошибок всего до 4,2%.

Давайте посмотрим, как это реализовать на Python-

Шаг 1: дополнение данных

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

Посмотреть код на Gist.

Шаг 2: Генераторы обучения и проверки

Просмотрите код в Gist.

Шаг 3. Загрузка базовой модели

Посмотреть код на Gist.

Шаг 4. Компиляция и подгонка

Как и в случае с VGG-16, мы изменим только последний слой.

Посмотреть код на Gist.

 

Выполняем следующие операции:

  • Свести вывод нашей базовой модели к одномерному
  • Добавить полносвязный слой с 1024 скрытыми единицами и активацией ReLU
  • На этот раз мы выберем коэффициент отсева 0,2
  • Добавить последний полностью подключенный сигмовидный слой
  • Мы снова будем использовать RMSProp, хотя вы также можете попробовать оптимизатор Adam

Посмотреть код на Gist.

Затем мы подгоним модель:

Посмотреть код на Gist.

В итоге мы видим, что получаем 96% точность валидации за 10 эпох. Также обратите внимание, насколько эта модель намного быстрее, чем VGG16. Каждая эпоха занимает примерно 1/4 времени, чем каждая эпоха в VGG16. Конечно, вы всегда можете поэкспериментировать с различными значениями гиперпараметров и посмотреть, насколько лучше/хуже он работает.

Мне очень понравилось изучать модель Inception. В то время как большинство моделей в то время были просто последовательными и следовали постулату о том, что чем глубже и крупнее модель, тем лучше она будет работать. Inception и его варианты сломали эту форму. Как и его предшественники, Inceptionv3 занял первое место в рейтинге CVPR 2016 с коэффициентом ошибок всего 3,5% в первой пятерке.

Вот ссылка на документ: Переосмысление исходной архитектуры для компьютерного зрения

 

3. Реснет50

Как и Inceptionv3, ResNet50 — не первая модель семейства ResNet. Первоначальная модель называлась Residual net или ResNet и стала еще одной вехой в области CV еще в 2015 году.

Основная мотивация этой модели заключалась в том, чтобы избежать плохой точности по мере того, как модель становилась глубже. Кроме того, если вы знакомы с градиентным спуском, вы могли столкнуться с проблемой исчезающего градиента — модель ResNet также нацелена на решение этой проблемы. Вот архитектура самого раннего варианта: ResNet34 (ResNet50 также использует аналогичную технику, только с большим количеством слоев)

Источник: Бумага

Вы можете видеть, что после запуска с одним сверточным слоем и максимальным объединением есть 4 похожих слоя с разными размерами фильтров — все они используют операцию свертки 3 * 3. Кроме того, после каждых 2 сверток мы обходим/пропускаем промежуточный слой. Это основная концепция моделей ResNet. Эти пропущенные соединения называются «соединениями ярлыка идентификации» и используют так называемые остаточные блоки:

.

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

Это противоречит тому, что мы видели в Inception, и почти похоже на VGG16 в том смысле, что он просто накладывает слои друг на друга. ResNet просто изменяет базовое сопоставление.

Модель ResNet имеет множество вариантов, последним из которых является ResNet152. Ниже представлена ​​архитектура семейства ResNet с точки зрения используемых слоев:

.

Давайте теперь используем ResNet50 в нашем наборе данных:

Шаг 1: дополнение данных и генераторы

Посмотреть код на Gist.

Шаг 2. Импорт базовой модели

Посмотреть код на Gist.

Опять же, мы используем только базовую модель ResNet, поэтому мы заморозим слои и изменим только последний слой:

Просмотрите код в Gist.

Шаг 3: Сборка и компиляция модели

Здесь я хотел бы показать вам еще более короткий код для использования модели ResNet50. Мы будем использовать эту модель как слой в последовательной модели и просто добавим поверх нее один полносвязный слой.

Посмотреть код на Gist.

Мы компилируем модель и на этот раз попробуем оптимизатор SGD:

Посмотреть код на Gist.

Шаг 4: Установка модели

Посмотреть код на Gist.

Вот результат, который мы получаем:

Вы можете видеть, насколько хорошо он работает в нашем наборе данных, и это делает ResNet50 одной из наиболее широко используемых предварительно обученных моделей. Как и VGG, он также имеет другие варианты, как мы видели в таблице выше. Примечательно, что ResNet не только имеет свои варианты, но и породил ряд архитектур, основанных на ResNet. К ним относятся ResNeXt, ResNet как ансамбль и т. д. Кроме того, ResNet50 является одной из самых популярных моделей, и ее коэффициент ошибок в топ-5 составляет около 5 %9. 0003

Ниже приведена ссылка на документ: Deep Residual Learning for Image Recognition

4. Эффективная сеть

Мы, наконец, подошли к последней модели среди этих 4, которые вызвали волну в этом домене, и, конечно же, это от Google. В EfficientNet авторы предлагают новый метод масштабирования под названием Compound Scaling. Суть в следующем: более ранние модели, такие как ResNet, следуют традиционному подходу произвольного масштабирования измерений и добавления все большего количества слоев.

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

Хотя этот метод масштабирования можно использовать для любой модели на основе CNN, авторы начали с собственной базовой модели под названием EfficientNetB0:

.

Источник: Бумага

MBConv означает мобильную перевернутую свертку узкого места (аналогично MobileNetv2). Они также предлагают формулу составного масштабирования со следующими коэффициентами масштабирования:

  • Глубина = 1,20
  • Ширина = 1,10
  • Разрешение = 1,15

Эта формула используется для повторного построения семейства сетей EfficientNet от EfficientNetB0 до EfficientNetB7. Ниже приведен простой график, показывающий сравнительную производительность этого семейства по сравнению с другими популярными моделями:

Источник: Бумага

Как видите, даже базовая модель B0 начинается с гораздо более высокой точности, которая только увеличивается, и это также с меньшим количеством параметров. Например, EfficientB0 имеет всего 5,3 миллиона параметров!

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

Установка EfficientNet:
 !pip install -U эффективная сеть 
Импортировать

Посмотреть код на Gist.

Шаг 1.
Увеличение изображения

Мы будем использовать те же размеры изображения, что и для VGG16 и ResNet50. К настоящему моменту вы должны быть знакомы с процессом аугментации:

Посмотреть код на Gist.

Шаг 2. Загрузка базовой модели

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

Посмотреть код на Gist.

Снова заморозим слои:

Посмотреть код на Gist.

Шаг 3. Создайте модель

Так же, как Inceptionv3, мы выполним эти шаги на последнем уровне:

Посмотреть код на Gist.

Шаг 4. Компиляция и установка

Давайте снова воспользуемся оптимизатором RMSProp, хотя здесь я ввел параметр затухания:

Посмотреть код на Gist.

Наконец-то подогнали модель под наши данные:

Посмотреть код на Gist.

Фотография модели: 16 216 460 рез. по запросу «Модели» — изображения, стоковые фотографии и векторная графика | Shutterstock

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх