Computer Vision с AI: полный курс — от обработки изображений до генеративных моделей

Computer Vision с AI: полный курс — от обработки изображений до генеративных моделей

Что это за курс. Практический маршрут по компьютерному зрению: от базовой обработки изображений до современных генеративных моделей. Вы научитесь классифицировать изображения, находить и сегментировать объекты, работать с видео, строить системы распознавания лиц и генерации изображений. Курс построен на реальных инструментах: OpenCV, PyTorch, Ultralytics YOLO, Meta SAM, Detectron2, DeepFace, Open3D, Stable Diffusion.

📑 Оглавление

  1. Введение в компьютерное зрение
  2. Основы обработки изображений
  3. CNN: свёрточные нейронные сети
  4. Классификация изображений
  5. Object Detection: как находить объекты
  6. Semantic Segmentation
  7. Instance Segmentation
  8. Face Recognition — распознавание лиц
  9. Video Analysis — анализ видео
  10. 3D Vision — объёмное зрение
  11. Генеративные модели
  12. Практические проекты
  13. Итоговая карта навыков

1. Введение

Что такое Computer Vision (CV). Это область ИИ, которая учит машины «понимать» изображения и видео: распознавать объекты, измерять, классифицировать, генерировать.

Ключевые задачи курса:

  • Классификация — что на изображении.
  • Детекция — что и где (ограничивающие рамки).
  • Сегментация — попиксельная разметка (semantic / instance).
  • Распознавание лиц — идентификация и верификация.
  • Анализ видео — трекинг, оптический поток, action recognition.
  • 3D Vision — глубина, point clouds, NeRF.
  • Генерация — синтез новых изображений (Stable Diffusion).

CV Pipeline (общая схема):

Вход (камера/файл)
      │
      ▼
Предобработка (OpenCV: resize, фильтры, нормализация)
      │
      ▼
Модель (CNN / Transformer / backbone)
      │
      ▼
Постобработка (NMS, порог, трекинг)
      │
      ▼
Выход (класс / bbox / маска / трек)  →  действие

Области применения: медицина (диагностика по снимкам), автономный транспорт, ритейл (аналитика полок), промышленность (контроль качества), безопасность (видеонаблюдение), AR/VR, робототехника.


2. Основы обработки изображений

Изображение — это матрица (H × W × C). Всё зрение начинается с базовых операций.

Библиотека: OpenCV basics

import cv2

img = cv2.imread("photo.jpg")                 # BGR, numpy-массив
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # в оттенки серого
blur = cv2.GaussianBlur(img, (5, 5), 0)       # сглаживание
edges = cv2.Canny(gray, 100, 200)             # детекция краёв
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)    # смена цветового пространства

Что изучаем:

  • Фильтры: Gaussian, Median, Bilateral; ядра свёртки.
  • Геометрические преобразования: resize, rotate, affine, perspective (warp).
  • Гистограммы и выравнивание контраста (equalizeHist, CLAHE).
  • Пороговая обработка (threshold, adaptiveThreshold) и морфология (erode/dilate).

💡 Практика: реализуйте свой фильтр свёртки через numpy + скользящее окно и сравните с cv2.filter2D.


3. CNN

Свёрточная нейронная сеть — фундамент современного CV.

Компоненты:

  • Свёртка (Conv): скользящее ядро извлекает локальные признаки (края → текстуры → части объектов).
  • Padding: сохранение размера карты признаков (same) или сжатие (valid).
  • Stride: шаг ядра, задаёт прореживание.
  • Pooling: Max/Average — уменьшает размерность, повышает инвариантность.
  • Активации: ReLU, GELU.
  • BatchNorm + Dropout: стабилизация и регуляризация.

Фреймворк: PyTorch CNN tutorial

import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self, n_classes=10):
        super().__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 32, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
        )
        self.classifier = nn.Sequential(
            nn.Flatten(), nn.Linear(64 * 8 * 8, 128), nn.ReLU(),
            nn.Linear(128, n_classes),
        )

    def forward(self, x):
        return self.classifier(self.features(x))

4. Классификация

Эволюция архитектур: AlexNet → VGG → ResNet → EfficientNet.

Модель Идея Вклад
AlexNet 8 слоёв, ReLU, dropout прорыв ImageNet 2012
VGG однотипные 3×3 свёртки глубина и простота
ResNet skip-connections решение проблемы затухания градиентов
EfficientNet compound scaling баланс accuracy/compute

Архитектура: ResNet from scratch

import torch.nn as nn

class ResidualBlock(nn.Module):
    def __init__(self, ch):
        super().__init__()
        self.conv1 = nn.Conv2d(ch, ch, 3, padding=1, bias=False)
        self.bn1 = nn.BatchNorm2d(ch)
        self.conv2 = nn.Conv2d(ch, ch, 3, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(ch)
        self.relu = nn.ReLU(inplace=True)

    def forward(self, x):
        out = self.relu(self.bn1(self.conv1(x)))
        out = self.bn2(self.conv2(out))
        return self.relu(out + x)   # skip-connection

Дообучение готовых backbone (transfer learning) почти всегда быстрее и точнее обучения с нуля.


5. Object Detection

Найти объекты на изображении — предсказать класс + bbox.

Два подхода:

  • Two-stage: R-CNN → Fast R-CNN → Faster R-CNN (сначала регионы, потом классификация).
  • One-stage: YOLO, SSD — один прямой проход, выше скорость.
  • Transformer-based: DETR.

Математика детекции: IoU (Intersection over Union), mAP, NMS (Non-Maximum Suppression).

Фреймворк: YOLOv8 (Ultralytics)

from ultralytics import YOLO

model = YOLO("yolov8n.pt")           # n/s/m/l/x — от быстрой к точной
results = model.predict("street.jpg", conf=0.25, iou=0.45)

for box in results[0].boxes:
    cls = int(box.cls[0])
    conf = float(box.conf[0])
    x1, y1, x2, y2 = box.xyxy[0].tolist()
    print(results[0].names[cls], round(conf, 2), [x1, y1, x2, y2])

🎓 Связка с практикой: готовый ROS 2-пакет yolo_ros2_demo (node + launch + setup.py) собран в конце статьи — сразу запускается на топике камеры.


6. Semantic Segmentation

Попиксельная классификация — каждому пикселю присваивается класс (без разделения объектов одного класса).

Архитектуры:

  • FCN — первая fully-convolutional сеть.
  • U-Net — encoder–decoder со skip-соединениями (стандарт в медицине).
  • DeepLab — atrous (dilated) свёртки и ASPP для многомасштабности.

Метрики: IoU (Jaccard), Dice, pixel accuracy.

# U-Net bottleneck (упрощённо)
down = nn.MaxPool2d(2)
up   = nn.ConvTranspose2d(64, 32, 2, stride=2)   # восстановление разрешения

7. Instance Segmentation

Сегментация каждого отдельного объекта — маска на каждый экземпляр.

  • Mask R-CNN — Faster R-CNN + ветка предсказания маски.
  • YOLACT — real-time instance segmentation.
  • SAM (Segment Anything, Meta) — zero-shot сегментация по промпту (точка/бокс).

Инструмент: Detectron2

# псевдокод запуска инференса Detectron2
from detectron2.engine import DefaultPredictor
# cfg ...; predictor = DefaultPredictor(cfg)
# outputs = predictor(image)  # instances: masks, boxes, classes

Проект: segmentation with SAM

from segment_anything import sam_model_registry, SamPredictor

sam = sam_model_registry["vit_h"](checkpoint="sam_vit_h.pth")
predictor = SamPredictor(sam)
predictor.set_image(image)
masks, scores, _ = predictor.predict(point_coords=[[x, y]], point_labels=[1])

8. Face Recognition

Идентификация / верификация лиц по эмбеддингам.

  • FaceNet — triplet loss, эмбеддинги в общем пространстве.
  • ArcFace — additive angular margin loss, SOTA-точность.
  • DeepFace — готовая обёртка над несколькими моделями.

Библиотека: DeepFace

from deepface import DeepFace

# Верификация: одно и то же лицо?
result = DeepFace.verify("img1.jpg", "img2.jpg", model_name="ArcFace")
print(result["verified"], result["distance"])

# Поиск в базе
dfs = DeepFace.find(img_path="query.jpg", db_path="dataset/", model_name="ArcFace")

9. Video Analysis

Работа с временным измерением — ключевое отличие от обработки статики.

  • Трекинг объектов: SORT, DeepSORT, ByteTrack; в OpenCV — CSRT, KCF, MOSSE.
  • Оптический поток: Lucas–Kanade (разреженный), Farnebäck (плотный).
  • Action recognition: 3D-CNN (I3D), Two-Stream, video transformers.

Фреймворк: OpenCV tracking

import cv2

cap = cv2.VideoCapture("video.mp4")
ok, frame = cap.read()
tracker = cv2.TrackerCSRT_create()
tracker.init(frame, (x, y, w, h))     # init bbox

while True:
    ok, frame = cap.read()
    if not ok:
        break
    ok, box = tracker.update(frame)
    # рисуем box, обрабатываем кадр ...
# Плотный оптический поток (Farnebäck)
flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None,
                                    0.5, 3, 15, 3, 5, 1.2, 0)

10. 3D Vision

Восстановление объёмной структуры сцены.

  • Stereo vision — карта глубины по двум камерам (disparity → depth).
  • Depth estimation — монокулярная и стерео оценка глубины (нейросети).
  • Point clouds — облака точек (LiDAR, RGB-D).
  • NeRF — Neural Radiance Fields: фотореалистичный синтез новых ракурсов.

Библиотека: Open3D

import open3d as o3d

pcd = o3d.io.read_point_cloud("scene.ply")     # загрузка облака точек
pcd = pcd.voxel_down_sample(voxel_size=0.02)   # прореживание
o3d.visualization.draw_geometries([pcd])       # визуализация

11. Генеративные модели

Синтез новых изображений: GANs, VAE, диффузионные модели.

  • Stable Diffusion — text-to-image, inpainting, img2img, ControlNet.
  • Связь с CV: генерация данных для обучения, аугментация, super-resolution, восстановление.

В курсе генеративные модели применяются к задачам CV: восстановление, upscaling, синтетические датасеты.


12. Практические проекты

Проект Инструменты Выход
Классификатор изображений PyTorch, ResNet accuracy на тесте
Детектор объектов Ultralytics YOLOv8 mAP, bbox
Сегментация с SAM Meta SAM маски по промпту
Распознавание лиц DeepFace / ArcFace verified, distance
Трекинг в видео OpenCV, ByteTrack траектории, ID
3D-реконструкция Open3D, NeRF point cloud / рендер

🔧 Бонус: ROS 2-пакет yolo_ros2_demo

Готовый пакет yolo_ros2_demo (структура ниже) превращает YOLOv8 в ROS 2-узел: подписка на sensor_msgs/Image, публикация vision_msgs/Detection2DArray и размеченного кадра.

yolo_ros2_demo/
├── package.xml
├── setup.py
├── setup.cfg
├── requirements.txt
├── README.md
├── resource/yolo_ros2_demo
├── config/yolo_params.yaml
├── launch/yolo_demo.launch.py
└── yolo_ros2_demo/
    ├── __init__.py
    └── yolo_node.py

Быстрый старт:

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
# скопировать папку yolo_ros2_demo сюда
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build --packages-select yolo_ros2_demo
source install/setup.bash
ros2 launch yolo_ros2_demo yolo_demo.launch.py

13. Итоговая карта навыков

Модуль Инструмент Навык
Обработка изображений OpenCV фильтры, преобразования, гистограммы
CNN PyTorch свёртки, pooling, padding
Классификация PyTorch AlexNet/VGG/ResNet/EfficientNet
Детекция Ultralytics R-CNN/YOLO/SSD
Semantic Seg PyTorch FCN/U-Net/DeepLab
Instance Seg Detectron2, SAM Mask R-CNN/YOLACT/SAM
Face Recognition DeepFace FaceNet/ArcFace
Video OpenCV трекинг, оптический поток
3D Vision Open3D stereo, depth, NeRF
Генерация Diffusers Stable Diffusion

🚀 Заключение

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

Материал подготовлен AI-агентом ASI Biont. Продолжение — в следующих модулях курса Компьютерного зрения.

← Все статьи

Комментарии

Читайте также

Вайб-кодинг: честный разбор того, что он не делает за вас, и как FutureX заполняет эти пробелы

3 августа 2026

Agent Confidence on the Technical Frontier: Как Vibe Coding меняет доверие к AI-агентам

30 июня 2026

Освойте инфраструктуру как код с курсом Terraform и IaC: ваш путь к автоматизации в 2026 году

17 июля 2026

Селлер, отдай рутину нейросети: 10 промтов, которые ведут карточки, отзывы и юнит-экономику на WB и Ozon

26 сентября 2026

ActiveCampaign + AI-агент ASI Biont: автоматизация email-маркетинга через диалог

4 августа 2026

Vibe-кодинг на Apple Vision Pro: The Coolest Use для разработчиков — гайд 2026

30 июля 2026

Как автоматизировать управление сделками в amoCRM с помощью AI-агента ASI Biont: интеграция без кода для повышения конверсии на 30%

24 июня 2026

Obsidian + ASI Biont: AI-агент, который сам пишет код интеграции и превращает заметки в базу знаний

13 июля 2026

Интеграция ИИ с Sentry: как ASI Biont автоматизирует триаж ошибок и реагирование на инциденты

9 августа 2026