Изменения

Перейти к: навигация, поиск

Синтетические наборы данных

273 байта добавлено, 00:12, 25 января 2021
м
Нет описания правки
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]<ref name="wiki:oversampling">Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021</ref>.
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE<ref name="nvidia">[https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf El Emam, K. Accelerating AI with Synthetic Data] — Beijing, Boston, Farnham, Sebastopol, общего алгоритмаTokyo: O'Reilly Media, подходящего для всех случаев не существуетInc. Как правило, общие 2020.</ref>.]] Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы наподобие добавления средних значений оказываются нерепрезентативнымирешают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.
Достоинства синтетических данных:Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation<ref name="nvidia" />, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.
* Возможность генерации наборов Одно из самых наглядных применений аугментации данных практически любого размера— алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.
* Известность параметров генерацииТакже с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], а значитрешающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и генеральной совокупности: можно сравнить оценки модели и истинные параметры[[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, и исходя из этого судить о качестве полученных выборочных оценок параметровтаким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].
* Ускорение Синтетические данные используются и удешевление процесса разработки: для создания алгоритмов [[Реидентификация|реидентификации]]<sup>[на 25.01.21 не нужно ждатьсоздан]</sup> — определения, пока будет собран действительно ли на двух изображениях один и размечен достаточный объём реальных данныхтот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.
* Повышение доступности больших объёмов При генерации синтетических наборов данныхнеобходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует. Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.
В то же время, у синтетических данных есть и недостатки:== Виды генерации ==
* Отсутствие универсального способа Существует два основных подхода к генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данныесинтетических наборов данных.
* Отсутствие универсальных метрик качества В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и применимости генерируемых данныхполученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.
* Излишняя «стерильность» получаемых Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: в общем случае неизвестнонапример, какими для изображений могут быть выбросы в реальных использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных<ref>Если выбросы известнымогут использоваться такие искажения, то проблема может быть решена путём настройки параметров генератора.</ref>как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE<ref name="nvidia">[https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf El Emam, K. Accelerating AI with Synthetic Data] — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.</ref>.]]= Достоинства и недостатки ==
Синтетические данные активно используются при обучении алгоритмов управления [[wikipediaПреимущества использования синтетических данных:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation<ref name="nvidia" />, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах* Возможность генерации наборов данных практически любого размера.
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения* Известность параметров генерации, а целевыми — исходные. В самом делезначит, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных генеральной совокупности: можно применять для обучения алгоритма восстановления изображенийсравнить оценки модели и истинные параметры, устраняющего применённые преобразованияи исходя из этого судить о качестве полученных выборочных оценок параметров.
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]]* Ускорение и удешевление процесса разработки: не нужно ждать, [[Компьютерное зрение#Идентификация|поиска]] пока будет собран и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]]размечен достаточный объём реальных данных.
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]<sup>[на 25.01.21 не создан]</sup> — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде* Повышение доступности больших объёмов данных.
== Виды генерации ==В то же время, у синтетических данных есть и недостатки:
Существует два основных подхода к * Отсутствие универсального способа генерации синтетических наборов данных, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных * Отсутствие универсальных метрик качества и применимости генерируемых данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных * Излишняя «стерильность» получаемых данных. К имеющимся данным применяются различные способы искажения: напримерв общем случае неизвестно, для изображений какими могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворотбыть выбросы в реальных данных<ref>Если выбросы известны, добавление шума и иныето проблема может быть решена путём настройки параметров генератора. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов</ref>.
== Примеры ==
=== TextSharpener ===
Алгоритм TextSharpener<ref name="TextSharpener"/>, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL<ref name="PIL">Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021</ref>.
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой<ref>https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021</ref>.]]

Навигация