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

Оглавление

1.Что такое компьютерное зрение?

2.Как работает компьютерное зрение?

3. Различение компьютерного зрения со смежными областями.

4.Где мы можем применить технологию компьютерного зрения?

5. Три проекта Computer Vision для начинающих.

6. Заключение

Что такое компьютерное зрение?

Компьютерное зрение, сокращенно «CV», — это область искусственного интеллекта в информатике, которая фокусируется на получении значимой информации из цифровых изображений, видео и других визуальных входных данных. Затем на основе этой информации дайте рекомендации или выполните действия. Подобно тому, как ИИ дает мозг компьютеру, CV дает компьютеру глаза. CV позволяет системе видеть, наблюдать и понимать вещи. Работа Computer Vision очень похожа на человеческое зрение, за исключением того, что у людей есть преимущество. Концепция компьютерного зрения в основном основана на создании у компьютеров способности обрабатывать изображение на уровне пикселей, анализировать и понимать его. Подобно тому, как у человека есть сетчатка, зрительные нервы и зрительная кора для выполнения этих функций, у компьютерного зрения есть камеры, данные и алгоритмы, которые работают намного быстрее, чем человеческий глаз. Он может быстро превзойти человеческие возможности, анализируя тысячи продуктов или процессов в минуту и ​​замечая незаметные дефекты или проблемы.

Как работает компьютерное зрение?

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

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

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

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

CNN используется для предоставления «взгляда» на алгоритм машинного обучения или глубокого обучения.

Он разбивает изображения на пиксели, которым присваиваются теги или метки.

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

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

Отличие компьютерного зрения от смежных областей

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

Обработка изображений

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

Машинное зрение

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

Компьютерное зрение

Компьютерное зрение может решать более сложные задачи, такие как распознавание лиц (используемое, например, Snapchat для использования фильтров), подробный анализ изображений, который позволяет осуществлять визуальный поиск, аналогичный тому, который выполняет Google Images, или методы идентификации.

Где мы можем применить технологию компьютерного зрения

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

Организация контента

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

Распознавание лиц

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

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

Дополненная реальность

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

Беспилотные автомобили

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

Здоровье

Информация об изображении может быть ключевым элементом диагностики в медицине, поскольку на нее приходится 90 процентов всех медицинских данных. Многие диагнозы в области здравоохранения поддерживаются обработкой изображений — рентген, МРТ и маммография, и это лишь некоторые из них. А при анализе медицинских сканов сегментация изображения доказала свою эффективность. например, алгоритмы компьютерного зрения могут обнаруживать диабетическую ретинопатию — наиболее быстро растущее объяснение слепоты. Компьютерное зрение может обрабатывать изображения заднего плана (см. ниже) и оценивать их на предмет наличия и тяжести заболевания.

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

сельское хозяйство

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

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

1. Обнаружение лиц и глаз с использованием каскадов Хаара

Обнаружение лиц и глаз может быть проектом, который принимает кадр видеоизображения в качестве входных данных и выводит положение глаз и лица (в координатах x-y) в этом кадре изображения. Скрипт довольно прост в освоении и использует каскады Хаара для обнаружения лица и, следовательно, глаз, если они находятся в кадре изображения.

Полный код для распознавания лиц и глаз с использованием каскадов Хаара:

import numpy as np
import cv2
#multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
cap = cv2.VideoCapture(0)
while 1:
   ret, img = cap.read()
   gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
   faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
       cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
       roi_gray = gray[y:y+h, x:x+w]
       roi_color = img[y:y+h, x:x+w]
       eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eyes:
           cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
   cv2.imshow('img',img)
   k = cv2.waitKey(30) & 0xff
if k == 27:
       break
cap.release()

2. Соответствие шаблону

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

Полный код для сопоставления шаблонов:

import cv2
import numpy as np
# Read the file here
img_rgb = cv2.imread('opencv-template-matching-python-tutorial.jpg')
# Convert color to grayscale
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('opencv-template-for-matching.jpg',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
   cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,255), 2)
cv2.imshow('Detected',img_rgb)

3. Извлечение переднего плана с помощью GrabCut

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

Полный код для извлечения переднего плана с помощью GrabCut:

import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('opencv-python-foreground-extraction-tutorial.jpg')
mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (161,79,150,150)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img = img*mask2[:,:,np.newaxis]
plt.imshow(img) 
plt.colorbar()
plt.show()

Заключение

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