Сегментация — это разделение изображения на области (например, небо, дорога, люди). Используем упрощенную U-Net модель.
Пример с библиотекой segmentation-models
import cv2
import numpy as np
from segmentation_models import Unet
# Загрузка предобученной модели
model = Unet('resnet34', encoder_weights='imagenet', classes=3)
# Загрузка и препроцессинг изображения
image = cv2.imread("input.jpg")
image = cv2.resize(image, (256, 256))
image = image / 255.0 # Нормализация
image = np.expand_dims(image, axis=0)
# Предсказание маски
pred = model.predict(image)
mask = np.argmax(pred, axis=-1)[0]
# Визуализация результата
cv2.imwrite("segmentation_mask.jpg", (mask * 85).astype(np.uint8)) # 85 для наглядности
Примечание:
Для обучения своей модели потребуется размеченный датасет (например, Pascal VOC).
Заключение
Эти примеры демонстрируют основные задачи машинного зрения. Экспериментируйте с параметрами и объединяйте подходы для более сложных решений!

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