Код для CVPR 2023 бумага "Язык в бутылке: языковая модель управляемой концепции узкие места для интерпретируемой классификации изображений"
Мы запускаем наши эксперименты, используя Python 3.9.13. Вы можете установить необходимые пакеты, используя:
conda create --name labo python=3.9.13
conda activate labo
pip install -r requirements.txt
Вам необходимо изменить исходный код абрикоса, чтобы запустить субмодульную оптимизацию. Смотрите детали здесь.
cfg/ сохраняет файлы конфигурации для всех экспериментов, включая линейный зонд ( cfg/linear_probe ) и Labo ( cfg/asso_opt ). Вы можете изменить файлы конфигурации, чтобы изменить системные аргументы.
datasets/ хранит данные данных, специфичные для набора данных, включая images , splits и concepts . Пожалуйста, проверьте datasets/DATASET.md для получения подробной информации.
Примечание . Изображения каждого набора данных не представлены в этом репо; Вам нужно загрузить их и сохранить в соответствующей папке: datasets/{dataset name}/images/ . Проверьте datasets/DATASET.md для получения инструкций по загрузке всех наборов данных.
exp/ это рабочие каталоги экспериментов. Файлы конфигурации и контрольные точки модели будут сохранены в этой папке.
models/ экономит модели:
models/linear_prob/linear_prob.pymodels/asso_opt/asso_opt.pymodels/select_concept/select_algo.py output/ : Производительность будет сохранена в файлах .txt , хранящихся в output/ .
Другие файлы:
data.py и data_lp.py являются данными DataLoaders для Labo и линейного зонда, соответственно.main.py - это интерфейс для запуска всех экспериментов, а utils.py содержит функции препроцесса и извлечения функций.linear probe.sh - это файл BASH для запуска линейного зонда. labo_train.sh и labo_test.sh - это файл Bash для обучения и тестирования Labo. Чтобы получить линейную производительность зонда, просто запустите:
sh linear_probe.sh {DATASET} {SHOTS} {CLIP SIZE}
Например, для набора данных цветов 1-выстрел с помощью энкодера изображения Vit-L/14 команда:
sh linear_probe.sh flower 1 ViT-L/14
Код будет автоматически кодировать изображения и запустить поиск гиперпараметра на регуляризации L2, используя набор DEV. Лучшая проверка и производительность тестирования будут сохранены в output/linear_probe/{DATASET}.txt .
Чтобы тренировать лабо, запустите следующую команду:
sh labo_train.sh {SHOTS} {DATASET}
Журналы обучения будут загружены в wandb . Вам может потребоваться настроить свою учетную запись wandb на местном уровне. После достижения максимальных эпох, контрольная точка с самой высокой точностью проверки и соответствующим файлом конфигурации будет сохранена для exp/asso_opt/{DATASET}/{DATASET}_{SHOT}shot_fac/ .
Чтобы получить производительность тестирования, используйте контрольную точку модели и соответствующие конфигурации, сохраненные в exp/asso_opt/{DATASET}/{DATASET}_{SHOT}shot_fac/ and run:
sh labo_test.sh {CONFIG_PATH} {CHECKPOINT_PATH}
Точность теста будет напечатана на output/asso_opt/{DATASET}.txt .
Пожалуйста, цитируйте нашу газету, если вы найдете ее полезной!
@inproceedings{yang2023language,
title={Language in a bottle: Language model guided concept bottlenecks for interpretable image classification},
author={Yang, Yue and Panagopoulou, Artemis and Zhou, Shenghao and Jin, Daniel and Callison-Burch, Chris and Yatskar, Mark},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={19187--19197},
year={2023}
}