Bestehende schnelle Lernmethoden haben bestimmte Funktionen bei der Erkennung außerhalb der Verteilung (OOD) nachgewiesen, aber ihre mangelnde Wahrnehmung von OOD-Bildern im Zieldatensatz kann zu Fehlpaarungen zwischen OOD-Bildern und Inverteilung (ID) -Kategorien (ID) führen, was zu einer hohen falsch positiven Rate führt. Um dieses Problem anzugehen, stellen wir eine neuartige OOD -Erkennungsmethode mit dem Namen "Negprompt" ein, die so konzipiert ist, dass sie eine Reihe von negativen Eingabeaufforderungen erlernen, die jeweils eine negative Konnotation einer bestimmten Klassenetikett darstellen, um die Grenzen zwischen ID- und OOD -Bildern abzugrenzen. Es lernt solche negativen Eingabeaufforderungen nur mit ID -Daten und beseitigt die Abhängigkeit von externen Daten. Darüber hinaus werden aktuelle Methoden die Verfügbarkeit von Stichproben aller ID-Klassen annehmen, wodurch sie in Open-Vocabulary-Lernszenarien unwirksam werden, in denen die Inferenzstufe neuartige ID-Klassen enthalten kann, die in den Trainingsdaten nicht vorhanden sind. Im Gegensatz dazu können unsere erlernten negativen Eingaben auf neuartige Klassenbezeichnungen übertragen werden. Experimente zu verschiedenen imageInet-basierten Benchmarks zeigen, dass NEGPROMPT hochmoderne OOD-Erkennungsmethoden übertrifft und einen konsistenten Blei bei der harten OOD-Erkennung bei Klassifizierungsszenarien mit geschlossenen und offenen Vokabeln aufrechterhalten. Der vollständige Text ist ARXIV erhältlich.

Die Umgebungen für Negpropmt müssen vorbereitet werden:
conda create -n NegPrompt python=3.8
conda activate NegPrompt
pip install -r requirements.txtErstellen Sie zunächst ein neues Verzeichnis ./Data, um den Datensatz zu speichern.
Laden Sie dann den Datensatz wie https://github.com/atsumiyai/locoop herunter.
Ordnen Sie das Datenverzeichnis wie dieses an:
NegPrompt
|-- data/
|-- ImageNet1k/
|-- ILSVRC/
|-- Data/
|-- CLS-LOC/
|-- train/
|-- val/
|protocols/
|-- iNaturalist/
|--images/
|-- SUN/
|--images/
|-- Places/
|--images/
|-- dtd/
|--images/
...
Das Negprompt für Konvetional OOD zu trainieren:
conda activate NegPrompt
python ./scripts/train_test_ood.pyUm den Negprompt für Hard OOD zu trainieren:
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 }
}