Представляю c++ LibTorch имплементацию EfficientViT. Это визуальный трансформер, сконструированный из вычислительно-эффективных блоков, таких как линейное многомасштабное внимание и эффективные свертки с ядрами небольшого масштаба. Вот ссылка на оригинальный проект, а вот ссылка на статью.
Используется он в генеративной модели SANA, как бэкбон для детектирования с открытым словарем GroundingDINO, как часть модели из семейства Segment Anything: EfficientviT-SAM, для сжимающих автокодировщиков и много где еще. Я же надеюсь в будущем попробовать использовать EfficientViT чтобы построить NeRF в сжатом пространстве DC-AE(Deep Compression Autoencoder) и, возможно, поэкспериментировать с 3D Segment Anything и 3D генерацией. Пеимуществом данной модели помимо высокой вычислительной эффективности и точности является глобальное рецептивное поле.
Попутно было решено множество технических вопросов реализации конфигурируемых моделей на c++ с использованием библиотеки LibTorch, а также загрузки весов из формата .safetensors. Поэтому надеюсь что выложенный код окажется полезен. В репозитории реализован пример сжимающего автокодировщика и вот пример его работы: