Feature Extraction
Извлечение признаков преобразует исходные данные, например изображения, в компактные информативные признаки с помощью методов, разработанных вручную, или предварительно обученных нейронных сетей.
Извлечение признаков — это преобразование исходных данных в меньший набор числовых признаков, сохраняющих информацию, необходимую для задачи. Цветная фотография RGB размером 640×480 содержит 921 600 значений пикселей, большинство из которых избыточны; экстрактор признаков может сократить их до вектора из нескольких сотен чисел, описывающих содержимое изображения. В классическом машинном обучении для каждого типа данных вручную проектировали экстракторы, а модели глубокого обучения обучают собственные экстракторы в сети backbone, выход которой можно повторно использовать для поиска, кластеризации и новых классификаторов. Меньшее число более информативных измерений также смягчает проклятие размерности, поэтому более простые модели могут обобщать данные, имея меньше примеров.
Ручные и обучаемые признаки#
До появления глубокого обучения инженеры создавали отдельный экстрактор признаков для каждого типа данных:
- SIFT: Находит ключевые точки на изображении и описывает каждую гистограммой направлений градиентов размерностью 128, устойчивой к изменению масштаба и повороту. Благодаря этому SIFT стал стандартным инструментом для сопоставления изображений и склейки панорам.
- HOG: Гистограммы ориентированных градиентов, вычисляемые по сетке ячеек. В сочетании с линейным методом опорных векторов HOG был представлен в 2005 году для обнаружения пешеходов и стал основой классического обнаружения объектов.
- Анализ главных компонент (PCA): Проецирует данные на направления с наибольшей дисперсией; это универсальный метод для табличных данных, лиц и спектров.
- Мел-частотные кепстральные коэффициенты (MFCCs): Описывают кратковременный спектр аудио по шкале, соответствующей человеческому слуху; долгое время они служили стандартным входом для распознавания речи.
Для изображений, аудио и текста обучаемые признаки заменили большинство таких методов. Свёрточная нейронная сеть (CNN) или визуальный трансформер (ViT), обученная на миллионах изображений, самостоятельно строит иерархию: ранние слои обнаруживают границы и цветовые пятна, средние — текстуры и части объектов, а последние кодируют понятия на уровне объектов. Эти представления, хранящиеся в картах признаков, можно переносить на новые задачи. Поэтому предобученные backbone — стандартная отправная точка для трансферного обучения.
Извлечение признаков и смежные понятия#
- Конструирование признаков: Более широкая практика создания, преобразования и выбора входных данных модели, часто с опорой на знания предметной области, например вычисление цены за квадратный фут по цене и площади. Извлечение признаков — одна из её составляющих, а в глубоком обучении оно полностью автоматизировано.
- Отбор признаков: Оставляет неизменённым подмножество исходных признаков и отбрасывает остальные. При извлечении признаков новые признаки создаются путём преобразования исходных или их комбинирования.
- Снижение размерности: Во многом пересекается с извлечением признаков; PCA относится к обоим понятиям. Методы для визуализации, например t-SNE, уменьшают размерность для анализа человеком и редко используются в качестве входных данных модели.
- Эмбеддинги: Векторы признаков, которые выдаёт обучаемый экстрактор. В глубоком обучении термины «извлечённые признаки» и «эмбеддинги» обычно обозначают одни и те же векторы.
Использование предобученной сети для извлечения признаков#
Обычно берут предобученную сеть, удаляют её голову задачи, пропускают данные через замороженные слои и объединяют последнюю карту признаков в один вектор на каждый вход. Если есть метки, обучение только линейного классификатора на этих векторах — метод, называемый линейным зондированием, — даёт сильный базовый результат за малую долю затрат на обучение сети. Без меток поиск по векторам находит визуально похожие изображения, кластеризация k-средних группирует датасет для отбора и удаления дубликатов, а расстояние до нормальных примеров позволяет выявлять дефекты при обнаружении аномалий. Во время извлечения признаков веса backbone не меняются — этим оно отличается от тонкой настройки.
В моделях YOLO26 эта возможность доступна через model.embed(): сеть запускается до выбранного слоя, а карта признаков этого слоя усредняется в один вектор на изображение. embed=[10] останавливается на последнем слое backbone YOLO26.
from ultralytics import YOLO
# Загрузи предобученную модель YOLO26; её backbone заканчивается на слое 10
model = YOLO("yolo26n.pt")
# Усредни финальную карту признаков backbone, чтобы получить один вектор на изображение
embeddings = model.embed("https://ultralytics.com/images/bus.jpg", embed=[10])
vector = embeddings[0]
print(vector.shape)Выводится torch.Size([256]): вся фотография автобуса представлена 256 числами — по одному на канал выхода backbone YOLO26n с шагом 32. Эти данные готовы для поиска по векторам или кластеризации.










