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 :

    1. fuselage
    1. cockpit
    1. derive
    1. empennage
    1. aile
    1. aileron
    1. volet
    1. reacteur
    1. nacelle_moteur
    1. tuyere
    1. train_atterrissage
    1. 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

📧 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Youlln/internvl2-aircraft-detection-full

Finetuned
(8)
this model