Os métodos de aprendizado imediato existentes demonstraram certos recursos na detecção fora da distribuição (OOD), mas sua falta de percepção de imagens de OOD no conjunto de dados de destino pode levar a incompatibilidades entre imagens de Ood e categorias de distribuição (ID), levando a uma alta taxa de falso positivo. Para resolver esse problema, introduzimos um novo método de detecção de OOD, denominado "negPrompt", projetado para aprender um conjunto de prompts negativos, cada um representando uma conotação negativa de uma determinada etiqueta de classe, para delinear os limites entre as imagens de ID e Ood. Ele aprende apenas instruções negativas com dados de identificação, eliminando sua dependência de dados externos. Além disso, os métodos atuais assumem a disponibilidade de amostras de todas as classes de identificação, tornando-as ineficazes em cenários de aprendizado de vocabulário aberto, onde o estágio de inferência pode conter novas classes de identificação não presentes nos dados de treinamento. Por outro lado, nossos avisos negativos aprendidos são transferíveis para novos rótulos de classe. Experimentos em vários benchmarks baseados em Imagenet demonstram que o NEGPROMPT supera os métodos de detecção de Ood baseados em um período de ponta e mantém uma liderança consistente na detecção de Ood em cenários de classificação de vocabulário fechado e aberto. O texto completo está disponível AR ARXIV.

Os ambientes para NegPropmt precisam estar preparados:
conda create -n NegPrompt python=3.8
conda activate NegPrompt
pip install -r requirements.txtPrimeiro, faça um novo diretório ./data para armazenar o conjunto de dados.
Em seguida, faça o download do conjunto de dados como https://github.com/atsumiyai/locoop.
Organize o diretório de dados como este:
NegPrompt
|-- data/
|-- ImageNet1k/
|-- ILSVRC/
|-- Data/
|-- CLS-LOC/
|-- train/
|-- val/
|protocols/
|-- iNaturalist/
|--images/
|-- SUN/
|--images/
|-- Places/
|--images/
|-- dtd/
|--images/
...
Para treinar o NEGPROMPT para Ood convencional:
conda activate NegPrompt
python ./scripts/train_test_ood.pyPara treinar o NegPrompt para Hard Ood:
conda activate NegPrompt
python ./scripts/train_test_openset.py @inproceedings { li2024learning ,
title = { Learning Transferable Negative Prompts for Out-of-Distribution Detection } ,
author = { Li, Tianqi and Pang, Guansong and Bai, Xiao and Miao, Wenjun and Zheng, Jin } ,
booktitle = { Proceedings of the IEEE/CVF conference on computer vision and pattern recognition } ,
year = { 2024 }
}