Convolution
Познакомься с основами свёртки в компьютерном зрении и глубоком обучении. Узнай, как ядра и карты признаков обеспечивают работу Ultralytics YOLO26 в задачах реального времени.
Свертка — это фундаментальная математическая операция, которая служит основным строительным блоком современных систем компьютерного зрения (CV) и глубокого обучения (DL). В контексте обработки изображений свертка заключается в перемещении небольшого фильтра, часто называемого ядром, по входному изображению для создания карты значимых признаков. Этот процесс позволяет моделям искусственного интеллекта (AI) автоматически обучаться и распознавать такие закономерности, как границы, текстуры и формы, без вмешательства человека. В отличие от традиционного машинного обучения (ML), которое часто требует ручного извлечения признаков, свертка позволяет сетям формировать иерархическое представление визуальных данных: от простых линий до сложных объектов, таких как лица или транспортные средства.
Как работает свертка#
Операция выполняется путем перемещения фильтра по входным данным, поэлементного умножения и суммирования результатов для получения одного значения в каждой позиции. Такой результат называется картой признаков.
- Ядро: небольшая матрица чисел (весов), которая обнаруживает определенные признаки. Например, оператор Собеля — это специальный тип ядра, используемый для обнаружения вертикальных или горизонтальных границ.
- Скользящее окно: ядро перемещается по изображению с заданным размером шага, называемым «шагом» (stride). Этот процесс пространственной фильтрации сохраняет взаимосвязь между пикселями, что крайне важно для понимания изображений.
- Иерархия слоев: в глубоких архитектурах, таких как сверточные нейронные сети (CNNs), начальные слои выделяют низкоуровневые детали, а более глубокие слои объединяют их в высокоуровневые понятия.
Свертка и связанные понятия#
Чтобы полностью понять свертку, полезно отличать ее от похожих терминов, которые часто встречаются в литературе о нейронных сетях (NN):
- Взаимная корреляция и свертка: с математической точки зрения настоящая свертка предполагает отражение ядра перед его применением. Однако большинство фреймворков глубокого обучения, включая библиотеку PyTorch, реализуют взаимную корреляцию (перемещение без отражения), но называют ее «сверткой», поскольку веса обучаются в процессе обучения, и поэтому различие, связанное с отражением, не влияет на производительность.
- Свертка и механизм внимания: если свертка обрабатывает информацию локально (соседние пиксели), механизм внимания позволяет модели одновременно сопоставлять удаленные части изображения. Современные архитектуры, такие как YOLO26, часто используют высокооптимизированные сверточные слои для поддержания скорости вывода в реальном времени, поскольку слои внимания могут требовать больше вычислительных ресурсов.
Практические применения#
Эффективность свертки позволила ИИ преобразовать различные отрасли, обеспечив работу надежных систем восприятия:
-
Медицинская диагностика: в области ИИ в здравоохранении свертка помогает анализировать МРТ-сканы высокого разрешения. Используя специальные ядра, предназначенные для выделения аномалий, модели могут обнаруживать ранние признаки опухолей или переломов с точностью, сопоставимой с точностью экспертов.
-
Автономная навигация: беспилотные автомобили используют свертку для обнаружения объектов в реальном времени. По мере движения автомобиля сверточные слои обрабатывают видеопотоки и мгновенно распознают пешеходов, разметку полос и дорожные знаки, что является важнейшим компонентом безопасности ИИ в автомобильной отрасли.
Пример на Python с Ultralytics#
Ты можешь изучить сверточные слои в современных моделях с помощью Python. В следующем примере загружается модель YOLO26 и проверяется, что ее начальный слой использует стандартную операцию свертки, реализованную через torch.nn.
import torch.nn as nn
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Access the first layer of the model's backbone
first_layer = model.model.model[0]
# Verify it is a Convolutional layer
if isinstance(first_layer.conv, nn.Conv2d):
print("Success: The first layer is a standard convolution.")
print(f"Kernel size: {first_layer.conv.kernel_size}")Почему свертка важна для Edge AI#
Сверточные операции хорошо поддаются оптимизации, что делает их идеальными для развертывания Edge AI, где вычислительные ресурсы ограничены. Поскольку одно и то же ядро используется для всего изображения (совместное использование параметров), модели требуется значительно меньше памяти, чем старым полносвязным архитектурам. Благодаря этой эффективности передовые модели могут работать на смартфонах и устройствах IoT.
Командам, которые хотят использовать эти операции для пользовательских наборов данных, платформа Ultralytics предоставляет удобную среду для разметки изображений и обучения моделей на основе сверток без необходимости управлять сложной инфраструктурой. С помощью переноса обучения ты можешь дообучить предварительно обученные сверточные веса для распознавания новых объектов, используя минимум данных для обучения.









