InternVL2-2B Aircraft Parts Detection
Modèle InternVL2-2B fine-tuné pour la détection de 12 parties d'avion.
🎯 Description
Ce modèle est basé sur InternVL2-2B (OpenGVLab) et a été fine-tuné avec une tête de détection personnalisée pour détecter les parties suivantes d'un avion :
- fuselage
- cockpit
- derive
- empennage
- aile
- aileron
- volet
- reacteur
- nacelle_moteur
- tuyere
- train_atterrissage
- porte
🏗️ Architecture
Image (448x448)
↓
InternVL2-2B Vision Encoder (FROZEN)
↓
Detection Head (TRAINABLE)
├── Classification: 12 classes
└── Bounding Boxes: (x, y, w, h)
↓
ROI Projector (TRAINABLE)
↓
Object Tokens → LLM
Paramètres entraînés : ~2M (Detection Head + ROI Projector)
Paramètres frozen : ~2B (InternVL2-2B)
🚀 Utilisation
Installation
pip install torch torchvision transformers pillow pyyaml
Chargement du modèle
import torch
from model import load_model
import yaml
# Charge la config
with open("config.yaml", 'r') as f:
config = yaml.safe_load(f)
# Charge le modèle complet (InternVL2 + tête)
model = load_model(config)
# Charge les poids de la tête de détection
checkpoint = torch.load("detection_weights.pt")
model.detection_head.load_state_dict(checkpoint['detection_head'])
model.roi_projector.load_state_dict(checkpoint['roi_projector'])
model.eval()
Inférence
from PIL import Image
import torchvision.transforms as transforms
# Prépare l'image
image = Image.open("aircraft.jpg").convert("RGB")
transform = transforms.Compose([
transforms.Resize((448, 448)),
transforms.ToTensor(),
transforms.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
)
])
image_tensor = transform(image).unsqueeze(0)
# Inférence
with torch.no_grad():
outputs = model(image_tensor)
cls_scores = outputs['cls_scores']
bbox_preds = outputs['bbox_preds']
# Post-traitement pour extraire les détections
# (voir inference.py pour le code complet)
📊 Performance
- Dataset : Custom aircraft parts dataset
- Epochs : 10
- Batch size : 4
- Learning rate : 0.0001
📁 Structure du modèle
.
├── internvl2/ # Modèle InternVL2-2B complet
│ ├── config.json
│ ├── model.safetensors
│ └── ...
├── detection_weights.pt # Poids de la tête de détection
├── config.yaml # Configuration d'entraînement
└── README.md # Ce fichier
🔧 Configuration
batch_size: 4
classes:
- fuselage
- cockpit
- derive
- empennage
- aile
- aileron
- volet
- reacteur
- nacelle_moteur
- tuyere
- train_atterrissage
- porte
detection_hidden_dim: 256
device: cuda
epochs: 10
experiments_dir: experiments
images_dir: dataset/images
learning_rate: 0.0001
model_name: OpenGVLab/InternVL2-2B
num_classes: 12
num_workers: 4
roi_size: 7
save_every: 2
train_json: dataset/processed/train.json
val_json: dataset/processed/val.json
weight_decay: 0.01
📝 Citation
Si vous utilisez ce modèle, merci de citer :
@misc{internvl2-aircraft-detection,
title={InternVL2-2B Aircraft Parts Detection},
author={Your Name},
year={2025},
howpublished={\url{https://huggingface.co/Youlln/internvl2-aircraft-detection-full}}
}
📄 Licence
MIT License - Voir le fichier LICENSE pour plus de détails.
🙏 Remerciements
- InternVL2 par OpenGVLab : OpenGVLab/InternVL2-2B
- Basé sur l'architecture Vision-Language Model
📧 Contact
Pour toute question ou suggestion, n'hésitez pas à ouvrir une issue sur le repo.
Note : Ce modèle contient le modèle InternVL2-2B complet (4.4GB). Si vous voulez seulement les poids de la tête de détection (10MB), utilisez le checkpoint léger checkpoint_best.pt.
- Downloads last month
- 1
Model tree for Youlln/internvl2-aircraft-detection-full
Base model
OpenGVLab/InternVL2-2B