CA5: Vision Transformers & Large Language Diffusion Models
This project implements two main components:
Image Re-identification using Transformers (BotNet): A ResNet50-based model with Multi-Head Self-Attention for person re-identification.
Large Language Diffusion (LLaDA): A diffusion-based text generation model for Text-to-SQL tasks.
Project Structure
CA5_Vision_Transformers/
├── data.py # Data loading, preprocessing, and dataset classes
├── models.py # Model architectures (ResNet, BotNet, MHSA)
├── utils.py # Utility functions (visualization, interpretability)
├── train.py # Training and evaluation functions
├── generate.py # Generation functions for LLaDA
├── evaluation.py # Advanced evaluation metrics (CMC, mAP)
├── ablation.py # Ablation study functions
├── optimization.py # Model optimization and deployment
├── research.py # Advanced research demonstrations
├── main.py # Main script with comprehensive examples
└── requirements.txt # Dependencies
Installation
pip install -r requirements.txt
Core Components
1. Person Re-identification (Re-ID)
Models
- ResNet50: Baseline CNN architecture
- BotNet50: ResNet50 enhanced with Multi-Head Self-Attention (MHSA)
Key Features
- Attention visualization for interpretability
- Comprehensive evaluation with CMC and mAP metrics
- Ablation studies comparing different architectures
2. Large Language Diffusion (LLaDA)
Features
- Forward diffusion masking process
- LoRA fine-tuning on quantized LLaMA model
- Block diffusion sampling for generation
- Exact match scoring for SQL evaluation
Usage Examples
Basic Re-ID Training
from main import *
# Models are initialized in main.py
train_model(resnet_model, resnet_optimizer, train_loader)
evaluate_model(resnet_model, test_loader)
Advanced Evaluation
from evaluation import evaluate_reid_advanced
# Comprehensive evaluation with CMC and mAP
cmc_scores, map_score = evaluate_reid_advanced(botnet_model, test_loader, device, "BotNet50")
Interpretability Analysis
from utils import comprehensive_interpretability_analysis
# Full interpretability analysis
sample_image, _ = next(iter(test_loader))
results = comprehensive_interpretability_analysis(botnet_model, sample_image, pil_image, "BotNet50")
Ablation Studies
from ablation import ablation_study_reid, plot_ablation_results
# Compare different model configurations
model_configs = {
'ResNet_Pretrained': {'model_type': 'resnet_pretrained', 'num_classes': num_classes},
'BotNet_4Heads': {'model_type': 'botnet_4', 'num_classes': num_classes},
}
results = ablation_study_reid(model_configs, train_loader, test_loader)
plot_ablation_results(results)
LLaDA Generation
from main import *
example = dataset['test'][0]
prompt, _ = format_example(example, tokenizer)
generated = generate_block_diffusion(model, tokenizer, prompt)
print("Generated SQL:", generated)
Model Optimization
from optimization import benchmark_inference_speed, quantize_model_dynamic
# Benchmark inference speed
benchmark_results = benchmark_inference_speed(model, test_loader, device, "BotNet50")
# Quantize model for efficiency
quantized_model = quantize_model_dynamic(model)
Research Demonstrations
from research import demonstrate_clip_reid_integration, research_directions_summary
# Explore advanced research directions
demonstrate_clip_reid_integration()
research_directions_summary()
Key Functions
Data Processing
download_market1501(): Download Market-1501 datasetReIDDataset: Custom dataset class for Re-IDformat_example(): Prepare examples for LLaDA training
Model Architectures
get_resnet50(): Create ResNet50 modelMHSA: Multi-Head Self-Attention moduleBotNet50: Bottleneck Transformer network
Training & Evaluation
train_model(): Basic training loopevaluate_model(): Basic accuracy evaluationevaluate_reid_advanced(): CMC and mAP evaluationtrain_step(): Single training step for LLaDA
Analysis & Visualization
visualize_attention(): Attention map visualizationcomprehensive_interpretability_analysis(): Full model interpretabilityplot_cmc_curve(): Plot CMC evaluation results
Advanced Features
ablation_study_reid(): Compare model configurationsbenchmark_inference_speed(): Performance benchmarkinggenerate_block_diffusion(): LLaDA text generation
Requirements
- Python 3.8+
- PyTorch 2.0+
- CUDA-compatible GPU (recommended)
- 8GB+ VRAM for LLaDA model
- See
requirements.txtfor full dependencies
Research Contributions
This implementation explores:
- Attention mechanisms in CNN architectures
- Diffusion models for text generation
- Model interpretability techniques
- Efficient training methods
- Advanced evaluation metrics
The code provides a foundation for research in vision transformers, generative diffusion models, and their applications in computer vision and natural language processing.
Key Components
BotNet Architecture
- Replaces ResNet's final convolutional stage with Multi-Head Self-Attention
- Captures global spatial dependencies for better Re-ID performance
- Includes attention visualization for interpretability
LLaDA Implementation
- Forward masking diffusion process for discrete text
- Block-wise iterative generation
- LoRA fine-tuning for efficiency
- SQL normalization and exact match evaluation
Results
- Re-ID: BotNet achieves superior accuracy over baseline ResNet through global attention
- LLaDA: Generates coherent SQL queries via diffusion-based denoising
Authors
[Your Name] - University of Tehran
Xet Storage Details
- Size:
- 5.97 kB
- Xet hash:
- 2587a6d379ecd91d9b853c663f2ab3b9c859f653b4e79a38b9e765ecc0240708
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.