Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Vector Quantization

Векторное квантование заменяет каждый вектор индексом ближайшего элемента кодовой книги. Рассматриваются кодовые книги k-means, продуктовое квантование и токены VQ-VAE.

Векторное квантование (VQ) — это метод сжатия, который заменяет каждый вектор в датасете индексом ближайшего к нему элемента из небольшого набора репрезентативных векторов, называемого кодовой книгой. При кодировании сохраняется только индекс, при декодировании по индексу находится соответствующий вектор, а ошибка восстановления равна расстоянию между исходным вектором и его кодовым вектором. Кодовая книга из K элементов требует log₂(K) бит на вектор независимо от его размерности, поэтому кодовая книга из 256 элементов хранит любой вектор в одном байте. Векторное квантование пришло из обработки сигналов: алгоритм Стюарта Ллойда 1957 года из Bell Labs для построения скалярных квантователей, опубликованный в 1982 году, теперь обычно называют k-means, а Йосеп Линде, Андрес Бузо и Роберт Грей расширили его на векторы в 1980 году. В глубоком обучении векторное квантование стало стандартным способом преобразования изображений, аудио и видео в дискретные токены для генеративного ИИ.

Как работает векторное квантование#

Кодовую книгу обычно обучают с помощью кластеризации k-means: каждый обучающий вектор относят к ближайшему кодовому вектору, каждый кодовый вектор перемещают в среднее значение назначенных ему векторов и повторяют процедуру, которая не увеличивает среднее искажение. Квантование цвета показывает весь цикл на пикселях фотографии с помощью модуля SciPy scipy.cluster.vq:

import numpy as np
from scipy.cluster.vq import kmeans2, vq
from sklearn.datasets import load_sample_image

image = load_sample_image("china.jpg")  # 427 x 640 RGB photo bundled with scikit-learn
pixels = image.reshape(-1, 3).astype(np.float64)  # one 3-D color vector per pixel

# Learn a 16-entry codebook with k-means (Lloyd's algorithm) on a sample of pixels
rng = np.random.default_rng(0)
codebook, _ = kmeans2(rng.choice(pixels, 5000), 16, minit="++", seed=0)

# Encode: replace each pixel with the index of its nearest codeword (4 bits instead of 24)
indices, _ = vq(pixels, codebook)
# Decode: look each index up in the codebook
reconstruction = codebook[indices]

rmse = np.sqrt(((pixels - reconstruction) ** 2).mean())
print(f"{len(pixels):,} pixels, {len(codebook)} codewords, 24 -> 4 bits per pixel")
print(f"Reconstruction RMSE: {rmse:.1f} on the 0-255 scale")

Все 273,280 пикселей хранятся в виде 4-битных индексов 16 цветов — это в шесть раз меньше данных о цвете, чем в 24-битном RGB; среднеквадратичная ошибка составляет 11.3 уровня интенсивности из 255.

Скалярное квантование — это одномерный случай, а квантование модели применяется к нейронным сетям. Ultralytics YOLO26 использует его при экспорте: quantize=8 независимо округляет каждый вес и активацию до одного из 256 целочисленных уровней; диапазоны активаций определяются за один проход калибровки по изображениям в data. Совместное квантование целых векторов позволяет использовать корреляции между измерениями, и при одинаковом числе бит оптимальный векторный квантователь никогда не даёт большего искажения, чем оптимальный скалярный квантователь, применённый к каждому значению.

Произведение и остаточное квантование#

Одна кодовая книга растёт экспоненциально с увеличением битового бюджета: для 64 бит потребовалось бы 2⁶⁴ кодовых слов. Продуктовое квантование, представленное Эрве Жегу, Маттисом Дузе и Корделией Шмид в 2011 году, разбивает каждый вектор на m подвекторов и квантовает каждый с помощью отдельной кодовой книги из 256 элементов. При m = 8 вложение размерностью 128 в формате float32 уменьшается с 512 до 8 байт, а расстояния до запроса вычисляются с помощью небольших таблиц поиска. Библиотека Meta FAISS объединяет этот метод с инвертированным файловым индексом — грубым квантователем k-means, который ограничивает каждый запрос несколькими кластерами, — для векторного поиска в масштабах миллиардов векторов.

При остаточном квантовании кодовые книги применяются последовательно: вторая кодовая книга квантует ошибку, оставшуюся после первой, третья — ошибку после второй и так далее. Нейросетевые аудиокодеки SoundStream от Google (2021) и EnCodec от Meta (2022) используют этот метод для сжатия речи и музыки до нескольких килобит в секунду, а визуальное авторегрессионное моделирование (VAR) применяет его на разных разрешениях изображения.

VQ-VAE и токены изображений#

Аарон ван ден Оорд, Ориол Виньялс и Корай Кавукчуоглу из DeepMind представили VQ-VAE в статье Neural Discrete Representation Learning в 2017 году. Выход кодировщика автокодировщика в каждой пространственной позиции заменяется ближайшим кодовым вектором, а декодировщик восстанавливает вход по кодовым векторам. Поиск ближайшего соседа не имеет градиента, поэтому при обратном распространении ошибки градиент декодировщика проходит через него с помощью оценки прямого прохода, записанной в PyTorch как z_q = z + (z_q - z).detach(). Два дополнительных слагаемых функции потерь приближают кодовые векторы к выходам кодировщика и побуждают кодировщик придерживаться выбранных кодовых векторов; в статье вес второго слагаемого равен 0.25.

Полученные сетки токенов поступают во вторую модель, обычно трансформер, которая учится их генерировать. VQGAN (2021) добавил состязательные и перцептивные функции потерь для получения более чётких токенов и стал токенизатором для многих моделей генерации изображений по тексту. Распространённая проблема — коллапс кодовой книги, при котором большинство кодовых векторов никогда не выбираются, а эффективный словарь уменьшается. Инициализация k-means, обновление кодовой книги скользящим средним и сброс неиспользуемых кодов помогают справиться с проблемой. Метод конечного скалярного квантования Google (FSQ, 2023) избегает её, округляя каждое из нескольких скрытых измерений до нескольких фиксированных уровней, так что доступен каждый код подразумеваемой кодовой книги.

  • Векторные базы данных: Хранят и индексируют эмбеддинги и часто используют внутри произведение квантования, чтобы они занимали меньше памяти.
  • Снижение размерности: Отображает векторы в меньшее число непрерывных измерений, как это делает PCA; VQ же отображает каждый вектор в один дискретный код.
  • Токенизация: Разбивает текст на единицы из фиксированного словаря; VQ создаёт аналогичный словарь для непрерывных сигналов, например фрагментов изображений и аудиокадров.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения