Convolution
Исследуй основы свертки в компьютерном зрении и глубоком обучении. Узнай, как ядра и карты признаков питают Ultralytics YOLO26 для задач реального времени.
Свёртка — это фундаментальная математическая операция, которая служит базовым строительным блоком современных систем computer vision (CV) и deep learning (DL). В контексте обработки изображений свёртка заключается в перемещении небольшого фильтра, часто называемого ядром, по входному изображению для создания карты значимых признаков. Этот процесс позволяет моделям artificial intelligence (AI) автоматически обучаться и распознавать такие паттерны, как границы, текстуры и формы, без вмешательства человека. В отличие от традиционного machine learning (ML), которое часто требует ручного feature extraction, свёртка позволяет сетям формировать иерархическое понимание визуальных данных, начиная с простых линий и переходя к сложным объектам, таким как лица или транспортные средства.
Как работает свертка#
Операция работает путем пропускания фильтра через входные данные, выполнения поэлементного умножения и суммирования результатов для получения единого значения для каждой позиции. Этот результат известен как feature map.
- Ядро: Это небольшая матрица чисел (весов), которая обнаруживает определенные признаки. Например, Sobel operator — это особый тип ядра, используемый для обнаружения вертикальных или горизонтальных границ.
- Скользящее окно: Ядро перемещается по изображению с заданным размером шага, называемым «страйдом» (stride). Этот процесс spatial filtering сохраняет связь между пикселями, что имеет решающее значение для понимания изображений.
- Иерархия слоев: В глубоких архитектурах, таких как Convolutional Neural Networks (CNNs), начальные слои захватывают низкоуровневые детали, в то время как более глубокие слои объединяют их в концепции высокого уровня.
Свертка vs. связанные концепции#
Чтобы полностью понять свёртку, полезно отличать ее от похожих терминов, часто встречающихся в литературе по neural network (NN):
- Кросс-корреляция против свёртки: Математически истинная свёртка предполагает переворот ядра перед его применением. Однако большинство фреймворков глубокого обучения, включая PyTorch library, реализуют кросс-корреляцию (скольжение без переворота), но называют ее «свёрткой», поскольку веса изучаются во время обучения, что делает различие в перевороте нерелевантным для производительности.
- Свёртка против внимания: В то время как свёртка обрабатывает информацию локально (соседние пиксели), attention mechanism позволяет модели сопоставлять удаленные части изображения одновременно. Современные архитектуры, такие как YOLO26, часто используют высокооптимизированные свёрточные слои для поддержания скорости real-time inference, так как слои внимания могут быть более тяжелыми с точки зрения вычислений.
Реальные приложения#
Эффективность свертки позволила ИИ совершить революцию в различных отраслях за счет создания мощных систем восприятия:
-
Медицинская диагностика: В области AI in Healthcare свёртка помогает анализировать высокоразрешенные MRI scans. Используя специальные ядра, предназначенные для выделения аномалий, модели могут обнаруживать ранние признаки опухолей или переломов с accuracy, которая соперничает с экспертами-людьми.
-
Автономная навигация: Беспилотные автомобили полагаются на свёртку для object detection в реальном времени. По мере движения машины свёрточные слои обрабатывают видеопотоки для мгновенного распознавания пешеходов, разметки полосы движения и дорожных знаков, что является критически важным компонентом безопасности AI in Automotive.
Пример на 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 devices.
Для команд, желающих использовать эти операции для пользовательских наборов данных, Ultralytics Platform предоставляет удобную среду для разметки изображений и обучения моделей на основе свёртки без управления сложной инфраструктурой. Используя transfer learning, ты можешь дообучить предварительно обученные свёрточные веса для распознавания новых объектов с минимальным объемом training data.






