Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Turing Test Network (TTN)

Discord Hugging Face Voxel51 Blog Newsletter LinkedIn Twitter Medium

Implementation for paper "The Label Imitation Game: Turing Test Network for Zero-Shot Pseudo-Label Pruning"

alt text Zero-Shot Pseudo-Label Pruning: A single Turing Test Network (TTN) trained strictly on image classification (bottom) finds and rejects systemic VLM hallucinations across diverse detection datasets and pseudo-label architectures (top) while accepting accurate labels (middle). TTN rejects labels for spatial inaccuracy (A), semantic inconsistency (B), or both (C). Visualizations generated using FiftyOne.

Using TTN

Embedding Generation

Input: YOLOv5-formatted dataset and pseudo-labels.
Output: Reference embeddings, pseudo-label embeddings, and filelist.

FiftyOne dependency to generate paper embeddings (pip install fiftyone).
Paper detection datasets are formatted as YOLOv5 (see example ./dataset/voc.yaml).

Download example dataset and pseudo-labels, unzip to ./data, and run:

python embed/generate_label_embedings.py --data_dir ./data --dataset voc --pseudo_label_source yoloe-11l-seg-conf30

Output label patch embeddings and corresponding filelist for TTN pruning will be located in ./data/embed.

For custom dataset and pseudo-labels, replicate process or provide own float16 CLIP ViT-L-14 label patch embeddings for subsequent TTN Pruning.

TTN Pruning

Input: Reference labels, pseudo-labels, preprocessed embeddings, and filelist.
Output: TTN prune logits.

PyTorch dependency to run TTN model.

Download TTN models and example reference labels, pseudo-labels, preprocessed embeddings, and filelist, unzip to ./data, and run:

python ttn/generate_ttn_logits.py --data_dir ./data --dataset voc --pseudo_label_source yoloe-11l-seg-conf30 --prune_model ttn --config ./config/ttn_logit.yaml --device cpu

Recommend setting --device to "mps" or "cuda".
Can also use paper's detection fine-tuned pruning model using --prune_model ttnd.
Output TTN pruning logits will be located in ./data/model/logits.
Paper implementation pruned all pseudo-labels with logit score > 0. Raising the threshold increases recall but lowers precision (e.g., > 0.1).

Training TTN

Training TTN on Image Classification Datasets

Input: Preprocessed image embeddings and labels.
Output: TTN model weights.

PyTorch dependency to train TTN model.

Download preprocessed image classification dataset embeddings and labels, unzip to ./data, and run:

python ttn/cl_ttn_class_model_train.py --data_dir ./data --set 1 2 3 4 5 6 7 8 --config ./config/ttn_class_model.yaml --trial 1 --device cpu

Recommend setting --device to "mps" or "cuda".
Output TTN training weights and logs will be located in ./data/model/weights/ttn-clip-1.

Citation

If you find this code useful, please consider citing our paper:

@inproceedings{griffin26eccv,
  author={Griffin, Brent A. and Corso, Jason J.},
  title={The Label Imitation Game: Turing Test Network for Zero-Shot Pseudo-Label Pruning},
  booktitle={The European Conference on Computer Vision (ECCV)},
  year={2026}
}

Feature Request

The paper's full TTN benchmark framework is quite extensive. If there is a feature missing that you would like to implement, please create a request (as an issue is fine) and we will address when able. Cheers!

About

Implementation for paper "The Label Imitation Game: Turing Test Network for Zero-Shot Pseudo-Label Pruning"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages