Компьютерное зрение — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии 3 участников)
Строка 3: Строка 3:
  
 
=Задачи компьютерного зрения=
 
=Задачи компьютерного зрения=
 +
Все задачи компьютерного зрения сводятся к анализу изображения или видеопотока(По сути представляющего из себя набор сменяющихся изображений), на котором требуется прежде всего выделить фрагмент, содержащий необходимую информацию. Для выделения обычно используют или прямоугольную область, которая ограничивает исходный фрагмент, или просто выделяют пиксели принадлежащие ему
  
 
==Идентификация==
 
==Идентификация==
Задача идентификации состоит в том, чтобы классифицировать изображение целиком. Для этого на изображении выделяются ключевые области на изображении и по ним происходит классификация, например с помощью решающих деревьев, или [[Сверточные нейронные сети |сверточных нейронных сетей]]
+
Задача идентификации состоит в том, чтобы классифицировать изображение целиком. Для этого на изображении выделяются ключевые области и по ним происходит классификация, например с помощью решающих деревьев, или [[Сверточные нейронные сети |сверточных нейронных сетей]]
  
 
==Распознавание объектов==
 
==Распознавание объектов==
 
Задача состоит в том, чтобы по изображению суметь выделить на нем некоторый набор объектов. Пока задача не решена в общем случае – алгоритм не может классифицировать случайные объекты на изображении. Однако способен распознавать заранее заученный набор объектов с достаточно высокой точностью.
 
Задача состоит в том, чтобы по изображению суметь выделить на нем некоторый набор объектов. Пока задача не решена в общем случае – алгоритм не может классифицировать случайные объекты на изображении. Однако способен распознавать заранее заученный набор объектов с достаточно высокой точностью.
 +
[[Файл:Object_detection.jpeg|600px|thumb|centre|Источник: [https://habr.com/ru/post/463991/]]]
  
Самым простым методом детекции объектов является метод скользящего окна[[R-CNN|(R-CNN)]], при котором мы проходимся некоторым окном фиксированного размера по каждому кусочку картинки, и применяем к нему простой классификатор, обученный распознавать заранее определенный набор объектов. Модификации этого метода, такие как [[Faster R-CNN | Faster R-CNN]] применяются до сих пор
+
Самым простым методом детекции объектов является метод скользящего окна методом R-CNN(англ. ''Regions with Convulational Neural Network'' - Выделение регионов с помощью свертоных сетей), при котором мы проходимся некоторым окном фиксированного размера по каждому кусочку картинки, и применяем к нему простой классификатор, обученный распознавать заранее определенный набор объектов. Модификации этого метода, такие как Faster R-CNN применяются до сих пор
  
==Сегментация изображения==
+
==Сегментация изображений==
Задача похожая на детекцию объектов, но в отличие от нее требуется не окружить найденные объекты рамками, а выделить пиксели, которые этот объекты составляют. Сегментация применяется во многих областях, например, в производстве для индикации дефектов при сборке деталей, в медицине для первичной обработки снимков, также для составления карт местности по снимкам со спутников. Самый простой алгоритм сегментации – [[WaterShred | WaterShred]], заключающийся в разделении на куски функции от координат пикселей, начиная с минимумов этой функции
+
{{main|Сегментация изображений}}
 +
Задача похожая на детекцию объектов, но в отличие от нее требуется не окружить найденные объекты рамками, а выделить пиксели, которые этот объект составляют. Сегментация применяется во многих областях, например, в производстве для индикации дефектов при сборке деталей, в медицине для первичной обработки снимков, также для составления карт местности по снимкам со спутников. Одним из типичных способов сегментации является применение модели U-Net, представляющую из себя нексколько слоев сверточной сети, которые различаются по размеру, и в совокопности имеют U-образную форму, что и отражено в названии.
  
==Оценка положения(Pose Estimation)==
+
[[Файл:Segmentation.png|600px|thumb|centre|Типичные примеры изображений, обработанных алгоритмами сегментации]]
Задача, в некотором роде продолжающая задачу сегментации. Заключается в выделении некоторого каркаса объекта и предсказании его дальнейшего движения. Чаще всего применяется к обработке.  Положения людей на фотографии. В зависимости от количества рассматриваемых людей различают ''single-person'' и ''multi-person'' [[pose estimatiom |pose estimation]]  . Различие состоит в том, что во втором случае необходимо также учитывать, что объекты могут накладываться. Друг на друга. Для выполнения этой задачи сначала обрезается фон, оставляя только изображения непосредственно объектов, а затем для каждого из объектов с помощью сверточных нейронных сетей выделяются области суставов, которые затем соединяются.
+
 
 +
 
 +
==Оценка положения==
 +
Задача оценки положения объекта(англ. Pose Estimation), в некотором роде продолжающая задачу сегментации. Заключается в выделении некоторого каркаса объекта (например скелета, если речь идет о людях) и определении положения этого каркаса на изображении. Этот скелет может быть использован в последствии например для предсказания направления движения. В зависимости от количества рассматриваемых объектов различают одиночную оценку положения(англ. Single-person pose estimation) и множественную(англ. Multi-person pose estimation). Различие состоит в том, что во втором случае необходимо также учитывать, что объекты могут накладываться друг на друга. Для выполнения этой задачи сначала обрезается фон, оставляя только изображения непосредственно объектов, а затем для каждого из объектов с помощью сверточных нейронных сетей выделяются области суставов, которые затем соединяются.
 +
[[Файл: pose_Estimation.png|600px|thumb|centre|Пример применения алгоритмов pose_estimation к изображению. Источник: [https://nanonets.com/blog/human-pose-estimation-2d-guide/]]]
  
 
==Распознавание текста==
 
==Распознавание текста==
Одна из ключевых задач компьютерного зрения. Сначала с помощью алгоритмов детекции выделяется область в которой текст написан, затем производится непосредственно распознавание текста например с помощью алгоритмов сегментации. При этом задачи распознавания текста написанного на листе бумаги, и распознавания текста написанного где-то на изображении (“in the wild”), сильно различаются, в силу наличия в последнем случае помех,  которые мешают выделить конкретные буквы. В этом случае может помочь, например обучение предсказания буквы по остальным буквам в слове.
+
Одна из ключевых задач компьютерного зрения. Сначала с помощью алгоритмов детекции выделяется область в которой текст написан, затем производится непосредственно распознавание текста например с помощью алгоритмов сегментации. При этом задачи распознавания текста написанного на листе бумаги, и распознавания текста написанного где-то на изображении (“in the wild”), например текст на дорожном знаке, номер машины и т. д., сильно различаются, в силу наличия в последнем случае помех,  которые мешают выделить конкретные буквы. В этом случае может помочь, например обучение предсказания буквы по остальным буквам в слове.
 +
[[Файл:text_recognition.png|600px|thumb|centre|Пример реальной задачи распознавания текста - Распознование номеров на дверях. Источник: [https://towardsdatascience.com/a-gentle-introduction-to-ocr-ee1469a201aa]]]
  
 
==Генерация объектов==
 
==Генерация объектов==
Задача состоит в том, чтобы по известному набору объектов научится создавать похожие объекты, но при этом не совпадающие ни с одним из тестовых. Например создавать анимационных персонажей в стилистике мультфильма, нарисовав руками только пару из них. Для этого применяют такие архитектуры как [[Generative Adversarial Nets (GAN) | GAN]], при которой сеть делится на две, одна из которых стремится создать объект, а вторая его отбраковать, или [[Вариационный автокодировщик|вариационный автокодировщик]].
+
Задача состоит в том, чтобы по известному набору объектов научится создавать похожие объекты, но при этом не совпадающие ни с одним из тестовых. Например создавать анимационных персонажей в стилистике мультфильма, нарисовав руками только пару из них. Для этого применяют такие архитектуры как [[Generative Adversarial Nets (GAN)|генеративно состязательные сети]](англ. ''Generative adversarial network''), при которой сеть делится на две, одна из которых стремится создать объект, а вторая его отбраковать, или [[Вариационный автокодировщик|вариационный автокодировщик]], обучающийся на плотностях вероятностей исходных данных
 +
с целью создать объект похожий на исходный, но не совпадающий с ним.
 +
[[Файл:GAN1.jpeg|600px|thumb|centre|Пример генерации изображения методом GAN. Источник: [https://medium.com/@jonathan_hui/gan-some-cool-applications-of-gans-4c9ecca35900]]]
 +
 
 +
==Анализ видео==
 +
Так как видео представляет из себя набор изображений, одинакового размера, обычно сделанных через разные интервалы времени, то для него применимы все те задачи, которые были описаны ранее. Также появляются такие задачи как предсказание движения, заключающееся в том, чтобы по набору кадров предсказать положение объекта в следующих кадрах, или более общая задача ситуационный осведомленности(англ. Situation Awarness), заключающаяся в том, чтобы для каждого объекта в видео уметь определить его положение и статус на всех кадрах видео
  
 
=Примечания=
 
=Примечания=
 +
#https://www.fritz.ai/pose-estimation/
 +
#https://habr.com/ru/post/274725/
 +
#https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e
 +
#https://ccis2k.org/iajit/PDF/vol.3,no.2/2-Nassir.pdf
 +
#https://towardsdatascience.com/unet-line-by-line-explanation-9b191c76baf5
 +
#https://towardsdatascience.com/a-gentle-introduction-to-ocr-ee1469a201aa
 +
#https://nanonets.com/blog/human-pose-estimation-2d-guide/
 +
#https://medium.com/@jonathan_hui/gan-some-cool-applications-of-gans-4c9ecca35900]
 +
#https://ru.coursera.org/lecture/deep-learning-in-computer-vision/introduction-to-video-analysis-alApg
 +
=См. Также=
 +
#[[Вариационный автокодировщик | Вариационный автокодировщик]]
 +
#[[Generative Adversarial Nets (GAN) | GAN]]
 +
#[[Сверточные нейронные сети | Сверточные нейронные сети]]
 +
#[[Сегментация изображений | Сегментация изображений]]
 
=Ссылки=
 
=Ссылки=
#[https://nanonets.com/blog/human-pose-estimation-2d-guide/] - задача Pose Estimation
+
#[https://www.fritz.ai/pose-estimation/] - Статья Pose Estimation
 
#[https://habr.com/ru/post/274725/] - Статья на Хабре, краткий обзор задач компьютерного зрения
 
#[https://habr.com/ru/post/274725/] - Статья на Хабре, краткий обзор задач компьютерного зрения
 +
#[https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e] - Про R-CNN, Faster R-CNN и YOLO
 +
#[https://ccis2k.org/iajit/PDF/vol.3,no.2/2-Nassir.pdf] - Про Watershed
 +
#[https://towardsdatascience.com/unet-line-by-line-explanation-9b191c76baf5] - Про U-Net с примерами кода
  
 
[[Категория: Машинное обучение]]
 
[[Категория: Машинное обучение]]
  
 
[[Категория: Компьютерное зрение]]
 
[[Категория: Компьютерное зрение]]

Текущая версия на 01:25, 23 марта 2020

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


Задачи компьютерного зрения[править]

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

Идентификация[править]

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

Распознавание объектов[править]

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

Источник: [1]

Самым простым методом детекции объектов является метод скользящего окна методом R-CNN(англ. Regions with Convulational Neural Network - Выделение регионов с помощью свертоных сетей), при котором мы проходимся некоторым окном фиксированного размера по каждому кусочку картинки, и применяем к нему простой классификатор, обученный распознавать заранее определенный набор объектов. Модификации этого метода, такие как Faster R-CNN применяются до сих пор

Сегментация изображений[править]

Основная статья: Сегментация изображений

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

Типичные примеры изображений, обработанных алгоритмами сегментации


Оценка положения[править]

Задача оценки положения объекта(англ. Pose Estimation), в некотором роде продолжающая задачу сегментации. Заключается в выделении некоторого каркаса объекта (например скелета, если речь идет о людях) и определении положения этого каркаса на изображении. Этот скелет может быть использован в последствии например для предсказания направления движения. В зависимости от количества рассматриваемых объектов различают одиночную оценку положения(англ. Single-person pose estimation) и множественную(англ. Multi-person pose estimation). Различие состоит в том, что во втором случае необходимо также учитывать, что объекты могут накладываться друг на друга. Для выполнения этой задачи сначала обрезается фон, оставляя только изображения непосредственно объектов, а затем для каждого из объектов с помощью сверточных нейронных сетей выделяются области суставов, которые затем соединяются.

Пример применения алгоритмов pose_estimation к изображению. Источник: [2]

Распознавание текста[править]

Одна из ключевых задач компьютерного зрения. Сначала с помощью алгоритмов детекции выделяется область в которой текст написан, затем производится непосредственно распознавание текста например с помощью алгоритмов сегментации. При этом задачи распознавания текста написанного на листе бумаги, и распознавания текста написанного где-то на изображении (“in the wild”), например текст на дорожном знаке, номер машины и т. д., сильно различаются, в силу наличия в последнем случае помех, которые мешают выделить конкретные буквы. В этом случае может помочь, например обучение предсказания буквы по остальным буквам в слове.

Пример реальной задачи распознавания текста - Распознование номеров на дверях. Источник: [3]

Генерация объектов[править]

Задача состоит в том, чтобы по известному набору объектов научится создавать похожие объекты, но при этом не совпадающие ни с одним из тестовых. Например создавать анимационных персонажей в стилистике мультфильма, нарисовав руками только пару из них. Для этого применяют такие архитектуры как генеративно состязательные сети(англ. Generative adversarial network), при которой сеть делится на две, одна из которых стремится создать объект, а вторая его отбраковать, или вариационный автокодировщик, обучающийся на плотностях вероятностей исходных данных с целью создать объект похожий на исходный, но не совпадающий с ним.

Пример генерации изображения методом GAN. Источник: [4]

Анализ видео[править]

Так как видео представляет из себя набор изображений, одинакового размера, обычно сделанных через разные интервалы времени, то для него применимы все те задачи, которые были описаны ранее. Также появляются такие задачи как предсказание движения, заключающееся в том, чтобы по набору кадров предсказать положение объекта в следующих кадрах, или более общая задача ситуационный осведомленности(англ. Situation Awarness), заключающаяся в том, чтобы для каждого объекта в видео уметь определить его положение и статус на всех кадрах видео

Примечания[править]

  1. https://www.fritz.ai/pose-estimation/
  2. https://habr.com/ru/post/274725/
  3. https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e
  4. https://ccis2k.org/iajit/PDF/vol.3,no.2/2-Nassir.pdf
  5. https://towardsdatascience.com/unet-line-by-line-explanation-9b191c76baf5
  6. https://towardsdatascience.com/a-gentle-introduction-to-ocr-ee1469a201aa
  7. https://nanonets.com/blog/human-pose-estimation-2d-guide/
  8. https://medium.com/@jonathan_hui/gan-some-cool-applications-of-gans-4c9ecca35900]
  9. https://ru.coursera.org/lecture/deep-learning-in-computer-vision/introduction-to-video-analysis-alApg

См. Также[править]

  1. Вариационный автокодировщик
  2. GAN
  3. Сверточные нейронные сети
  4. Сегментация изображений

Ссылки[править]

  1. [5] - Статья Pose Estimation
  2. [6] - Статья на Хабре, краткий обзор задач компьютерного зрения
  3. [7] - Про R-CNN, Faster R-CNN и YOLO
  4. [8] - Про Watershed
  5. [9] - Про U-Net с примерами кода