You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
6.4 KiB
117 lines
6.4 KiB
1 year ago
|
---
|
||
|
comments: true
|
||
|
description: En savoir plus sur MobileSAM, son implémentation, la comparaison avec SAM d'origine, et comment le télécharger et le tester dans le cadre de l'environnement Ultralytics. Améliorez vos applications mobiles dès aujourd'hui.
|
||
|
keywords: MobileSAM, Ultralytics, SAM, applications mobiles, Arxiv, GPU, API, encodeur d'image, décodeur de masque, téléchargement de modèle, méthode de test
|
||
|
---
|
||
|
|
||
|
![Logo MobileSAM](https://github.com/ChaoningZhang/MobileSAM/blob/master/assets/logo2.png?raw=true)
|
||
|
|
||
|
# Segmenter N'importe Quoi sur Mobile (MobileSAM)
|
||
|
|
||
|
Le document MobileSAM est maintenant disponible sur [arXiv](https://arxiv.org/pdf/2306.14289.pdf).
|
||
|
|
||
|
Une démonstration de MobileSAM exécutée sur un processeur CPU est accessible via ce [lien de démonstration](https://huggingface.co/spaces/dhkim2810/MobileSAM). Les performances sur un CPU Mac i5 prennent environ 3 secondes. Sur la démo de Hugging Face, l'interface ainsi que les CPU moins performants contribuent à une réponse plus lente, mais cela continue de fonctionner efficacement.
|
||
|
|
||
|
MobileSAM est implémenté dans divers projets, notamment [Grounding-SAM](https://github.com/IDEA-Research/Grounded-Segment-Anything), [AnyLabeling](https://github.com/vietanhdev/anylabeling), et [Segment Anything en 3D](https://github.com/Jumpat/SegmentAnythingin3D).
|
||
|
|
||
|
MobileSAM est entraîné sur un seul GPU avec un ensemble de données de 100 000 images (1% des images originales) en moins d'une journée. Le code de cet entraînement sera disponible à l'avenir.
|
||
|
|
||
|
## Modèles Disponibles, Tâches Prises en Charge et Modes d'Utilisation
|
||
|
|
||
|
Ce tableau présente les modèles disponibles avec leurs poids pré-entraînés spécifiques, les tâches qu'ils prennent en charge, et leur compatibilité avec les différents modes d'utilisation tels que [Inférence](../modes/predict.md), [Validation](../modes/val.md), [Entraînement](../modes/train.md) et [Export](../modes/export.md), indiqués par les emojis ✅ pour les modes pris en charge et ❌ pour les modes non pris en charge.
|
||
|
|
||
|
| Type de Modèle | Poids Pré-entraînés | Tâches Prises en Charge | Inférence | Validation | Entraînement | Export |
|
||
|
|----------------|---------------------|-------------------------------------------------|-----------|------------|--------------|--------|
|
||
|
| MobileSAM | `mobile_sam.pt` | [Segmentation d'Instances](../tasks/segment.md) | ✅ | ❌ | ❌ | ✅ |
|
||
|
|
||
|
## Passage de SAM à MobileSAM
|
||
|
|
||
|
Étant donné que MobileSAM conserve le même pipeline que SAM d'origine, nous avons incorporé le pré-traitement, le post-traitement et toutes les autres interfaces de l'original. Par conséquent, ceux qui utilisent actuellement SAM d'origine peuvent passer à MobileSAM avec un effort minimal.
|
||
|
|
||
|
MobileSAM a des performances comparables à celles de SAM d'origine et conserve le même pipeline à l'exception d'un changement dans l'encodeur d'image. Plus précisément, nous remplaçons l'encodeur d'image lourd original ViT-H (632M) par un encodeur Tiny-ViT plus petit (5M). Sur un seul GPU, MobileSAM fonctionne à environ 12 ms par image : 8 ms sur l'encodeur d'image et 4 ms sur le décodeur de masque.
|
||
|
|
||
|
Le tableau suivant présente une comparaison des encodeurs d'image basés sur ViT :
|
||
|
|
||
|
| Encodeur d'Image | SAM d'Origine | MobileSAM |
|
||
|
|------------------|---------------|-----------|
|
||
|
| Paramètres | 611M | 5M |
|
||
|
| Vitesse | 452 ms | 8 ms |
|
||
|
|
||
|
SAM d'origine et MobileSAM utilisent tous deux le même décodeur de masque basé sur une instruction :
|
||
|
|
||
|
| Décodeur de Masque | SAM d'Origine | MobileSAM |
|
||
|
|--------------------|---------------|-----------|
|
||
|
| Paramètres | 3.876M | 3.876M |
|
||
|
| Vitesse | 4 ms | 4 ms |
|
||
|
|
||
|
Voici une comparaison du pipeline complet :
|
||
|
|
||
|
| Pipeline Complet (Enc+Dec) | SAM d'Origine | MobileSAM |
|
||
|
|----------------------------|---------------|-----------|
|
||
|
| Paramètres | 615M | 9.66M |
|
||
|
| Vitesse | 456 ms | 12 ms |
|
||
|
|
||
|
Les performances de MobileSAM et de SAM d'origine sont démontrées en utilisant à la fois un point et une boîte comme instructions.
|
||
|
|
||
|
![Image avec un Point comme Instruction](https://raw.githubusercontent.com/ChaoningZhang/MobileSAM/master/assets/mask_box.jpg?raw=true)
|
||
|
|
||
|
![Image avec une Boîte comme Instruction](https://raw.githubusercontent.com/ChaoningZhang/MobileSAM/master/assets/mask_box.jpg?raw=true)
|
||
|
|
||
|
Avec ses performances supérieures, MobileSAM est environ 5 fois plus petit et 7 fois plus rapide que FastSAM actuel. Plus de détails sont disponibles sur la [page du projet MobileSAM](https://github.com/ChaoningZhang/MobileSAM).
|
||
|
|
||
|
## Test de MobileSAM dans Ultralytics
|
||
|
|
||
|
Tout comme SAM d'origine, nous proposons une méthode de test simple dans Ultralytics, comprenant des modes pour les instructions Point et Boîte.
|
||
|
|
||
|
### Téléchargement du modèle
|
||
|
|
||
|
Vous pouvez télécharger le modèle [ici](https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt).
|
||
|
|
||
|
### Instruction Point
|
||
|
|
||
|
!!! Example "Exemple"
|
||
|
|
||
|
=== "Python"
|
||
|
```python
|
||
|
from ultralytics import SAM
|
||
|
|
||
|
# Chargement du modèle
|
||
|
model = SAM('mobile_sam.pt')
|
||
|
|
||
|
# Prédiction d'un segment à partir d'une instruction Point
|
||
|
model.predict('ultralytics/assets/zidane.jpg', points=[900, 370], labels=[1])
|
||
|
```
|
||
|
|
||
|
### Instruction Boîte
|
||
|
|
||
|
!!! Example "Exemple"
|
||
|
|
||
|
=== "Python"
|
||
|
```python
|
||
|
from ultralytics import SAM
|
||
|
|
||
|
# Chargement du modèle
|
||
|
model = SAM('mobile_sam.pt')
|
||
|
|
||
|
# Prédiction d'un segment à partir d'une instruction Boîte
|
||
|
model.predict('ultralytics/assets/zidane.jpg', bboxes=[439, 437, 524, 709])
|
||
|
```
|
||
|
|
||
|
Nous avons mis en œuvre `MobileSAM` et `SAM` en utilisant la même API. Pour plus d'informations sur l'utilisation, veuillez consulter la [page SAM](sam.md).
|
||
|
|
||
|
## Citations et Remerciements
|
||
|
|
||
|
Si vous trouvez MobileSAM utile dans vos travaux de recherche ou de développement, veuillez envisager de citer notre document :
|
||
|
|
||
|
!!! Quote ""
|
||
|
|
||
|
=== "BibTeX"
|
||
|
|
||
|
```bibtex
|
||
|
@article{mobile_sam,
|
||
|
title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
|
||
|
author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
|
||
|
journal={arXiv preprint arXiv:2306.14289},
|
||
|
year={2023}
|
||
|
}
|