---
title: "Conditional Context Optimization for Few-Shot Classification and Domain Generalization"
title_ru: "Условная оптимизация контекста для классификации с малым числом примеров и доменной генерализации (CoCoOp)"
authors: [Zhou, Yang, Loy, Liu]
year: 2022
venue: "CVPR"
venue_tier: "A*"
doi: "2203.05557"
tags: [prompt_tuning, vision_language, few_shot, domain_generalization, clip, conditional]
relevance_to_smartrep: 2
direction: "🅱"
---

# CoCoOp: Условная оптимизация контекста

## TL;DR (≤3 предложения)

CoCoOp устраняет главный недостаток CoOp — плохую доменную генерализацию: вместо фиксированного контекста $\mathbf{v}$ вводит instance-conditional context $\mathbf{v}(\mathbf{x})$, зависящий от конкретного visual input. Лёгкий MLP предсказывает сдвиг контекста $\Delta\mathbf{v}$ из visual features, добавляемый к базовому $\mathbf{v}$. Для SmartRep: более гибкая адаптация CLIP к новым упражнениям, где контекст зависит не только от класса упражнения, но и от конкретного выполнения.

## Проблема

CoOp учит один prompt для всех примеров класса. При domain shift (новый спортзал, новый пользователь, новый угол камеры) этот prompt не адаптируется — overfits к base domain. CoCoOp исправляет это через visual conditioning.

## Гипотеза / вклад

- **Instance-conditional context:** $\mathbf{v}(\mathbf{x}) = \mathbf{v} + \text{MLP}(f(\mathbf{x}))$ — промпт адаптируется к каждому входу.
- **Лёгкий MLP:** 1-слойная сеть, практически не добавляет параметров.
- **Base-to-new generalization:** явная оптимизация на base классах + проверка генерализации на new классах (не виданных при обучении).

## Метод

Text features: $w_c = \text{TextEncoder}([\mathbf{v}(\mathbf{x}), t_c])$

Context shift: $\mathbf{v}(\mathbf{x}) = \mathbf{v} + \pi(f(\mathbf{x}))$, где $\pi$ — маленький MLP.

Всё остальное как CoOp. Обучаемые параметры: $\{\mathbf{v}, \pi\}$.

### Архитектура (Mermaid)

```
Image x → CLIP image encoder → f(x)
           ↓ (1-layer MLP π)
           Δv(x) = π(f(x))
           ↓
[v + Δv(x), CLASS_token] → CLIP text encoder → w_c
                                    ↓
          cosine(f(x), w_c) → softmax → CE loss
```

## Датасеты

| Датасет | Задача | Метрика | Результат |
|---|---|---|---|
| ImageNet (base→new) | Generalization | Accuracy new | 70.7% (vs CoOp 63.2%) |
| OxfordPets (base→new) | Generalization | Accuracy new | 95.2% (vs CoOp 93.7%) |
| EuroSAT (base→new) | Generalization | Accuracy new | 73.5% (vs CoOp 64.4%) |

## Сравнение с SOTA

Значительно превосходит CoOp на base→new generalization (+7% на ImageNet). На base classes несколько уступает CoOp (trade-off specialization vs generalization).

## Ограничения / слабости

- Чуть сложнее в реализации, чем CoOp.
- MLP добавляет небольшой inference overhead.
- Как и CoOp, требует CLIP backbone.
- Всё ещё не тестировался на motion/skeleton данных.

## Релевантность SmartRep

- **Personalization + generalization 🅱:** для SmartRep критично: модель должна адаптироваться к конкретному пользователю (personalization) и одновременно работать на новых упражнениях (generalization). CoCoOp решает именно этот trade-off.
- **Per-rep conditioning:** context shift $\Delta\mathbf{v}$ зависит от visual features конкретного повтора — prompt автоматически учитывает особенности выполнения.
- **Практическая ценность:** как и CoOp, ограничена необходимостью CLIP backbone.

## Gap для нас

CoCoOp не тестировался на temporally extended sequences (видео). **Ниша SmartRep:** Video-CoCoOp — temporal visual features (mean-pooled video embedding) как conditioning signal для context shift. Это позволит prompt'у адаптироваться к "как выглядит конкретный повтор" а не "как выглядит один кадр".

## Ссылки на связанные статьи

- [[CoOp]] — предшественник без instance conditioning
- [[VPT]] — visual prompt tuning как альтернатива
- [[Action-CLIP]] — video backbone для данных методов

## Код / данные

- Repo: github.com/KaiyangZhou/CoOp (тот же репо)
- Pretrained: доступны веса

## Цитата (BibTeX)

```bibtex
@inproceedings{zhou2022conditional,
  title={Conditional Context Optimization for Few-Shot Classification and Domain Generalization},
  author={Zhou, Kaiyang and Yang, Jingkang and Loy, Chen Change and Liu, Ziwei},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  year={2022}
}
```
