Сегментация изображений с U-Net

Сегментация — это разделение изображения на области (например, небо, дорога, люди). Используем упрощенную 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).

Заключение

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

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *