SSD: détecteur d'objets multibox à un seul coup, à pytorch
Une mise en œuvre en pytorch du détecteur multibox à un seul tir du document 2016 de Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang et Alexander C. Berg. Le code CAFFE officiel et original peut être trouvé ici.

Table des matières
- Installation
- Ensembles de données
- Former
- Évaluer
- Performance
- Démos
- Travail futur
- Référence
Installation
- Installez Pytorch en sélectionnant votre environnement sur le site Web et en exécutant la commande appropriée.
- Cloner ce référentiel.
- Remarque: nous ne prenons actuellement en charge que Python 3+.
- Téléchargez ensuite l'ensemble de données en suivant les instructions ci-dessous.
- Nous soutenons désormais Visdom pour une visualisation des pertes en temps réel pendant la formation!
- Pour utiliser Visdom dans le navigateur:
# First install Python server and client
pip install visdom
# Start the server (probably in a screen or tmux)
python -m visdom.server
- Ensuite, (pendant la formation) accédez à http: // localhost: 8097 / (voir la section du train ci-dessous pour les détails de formation).
- Remarque: Pour la formation, nous soutenons actuellement VOC et CoCo et visons à ajouter bientôt le support ImageNet.
Ensembles de données
Pour faciliter les choses, nous fournissons des scripts bash pour gérer les téléchargements et configurer pour vous. Nous fournissons également des chargeurs de données simples qui héritent de torch.utils.data.Dataset , ce qui les rend entièrement compatibles avec l'API torchvision.datasets .
Coco
Microsoft Coco: objets communs en contexte
Télécharger Coco 2014
# specify a directory for dataset to be downloaded into, else default is ~/data/
sh data/scripts/COCO2014.sh
Ensemble de données VOC
Pascal COV: Classes d'objets visuels
Télécharger Voc2007 Trainval & Test
# specify a directory for dataset to be downloaded into, else default is ~/data/
sh data/scripts/VOC2007.sh # <directory>
Télécharger voc2012 Trainval
# specify a directory for dataset to be downloaded into, else default is ~/data/
sh data/scripts/VOC2012.sh # <directory>
SSD de formation
- Téléchargez d'abord les poids du réseau FC-réduit VGG-16 PYTORCH PEYTORCH AT: https://s3.amazonaws.com/amdegroot-models/vgg16_reductionfc.pth
- Par défaut, nous supposons que vous avez téléchargé le fichier dans le
ssd.pytorch/weights dir:
mkdir weights
cd weights
wget https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth
- Pour former SSD à l'aide du script Train, spécifiez simplement les paramètres répertoriés dans
train.py en tant que drapeau ou modifiez-les manuellement.
- Note:
- Pour l'entraînement, un GPU NVIDIA est fortement recommandé pour la vitesse.
- Pour des instructions sur l'utilisation / l'installation de Visdom, consultez la section d'installation.
- Vous pouvez prendre une formation à partir d'un point de contrôle en spécifiant le chemin comme l'un des paramètres de formation (encore une fois, voir
train.py pour les options)
Évaluation
Pour évaluer un réseau formé:
Vous pouvez spécifier les paramètres répertoriés dans le fichier eval.py en les signalant ou en les modifiant manuellement.

Performance
Test VOC2007
carte
| Original | Poids de weiliu89 convertis | À partir de zéro avec des données août | À partir de zéro avec des données août |
|---|
| 77,2% | 77,26% | 58,12% | 77,43% |
FPS
GTX 1060: ~ 45,45 ips
Démos
Utilisez un réseau SSD pré-formé pour la détection
Télécharger un réseau pré-formé
- Nous essayons de fournir Pytorch
state_dicts (dict des tenseurs de poids) des dernières définitions de modèle SSD formées sur différents ensembles de données. - Actuellement, nous fournissons les modèles Pytorch suivants:
- SSD300 formé sur VOC0712 (nouveaux poids pytorch)
- https://s3.amazonaws.com/amdegroot-models/ssd300_map_77.43_v2.pth
- SSD300 formé sur VOC0712 (poids originaux de la CAFE)
- https://s3.amazonaws.com/amdegroot-models/ssd_300_voc0712.pth
- Notre objectif est de reproduire ce tableau du papier d'origine
Essayez le cahier de démonstration
- Assurez-vous que le cahier Jupyter est installé.
- Deux alternatives pour l'installation de Jupyter Notebook:
Si vous avez installé Pytorch avec Conda (recommandé), vous devriez déjà l'avoir. (Accédez simplement au SSD.pytorch Cloned Repo and Run): jupyter notebook
Si vous utilisez PIP:
# make sure pip is upgraded
pip3 install --upgrade pip
# install jupyter notebook
pip install jupyter
# Run this inside ssd.pytorch
jupyter notebook
- Accédez maintenant à
demo/demo.ipynb sur http: // localhost: 8888 (par défaut) et en avez!
Essayez la démonstration de webcam
- Fonctionne sur CPU (peut devoir modifier
cv2.waitkey pour les FP optimaux) ou sur un GPU NVIDIA - Cette démo nécessite actuellement des liaisons OpenCVV2 + avec Python et une webcam intégrée
- Vous pouvez modifier la webcam par défaut dans
demo/live.py
- Installez le package IMUTILS pour tirer parti du multi-threading sur CPU:
- L'exécution
python -m demo.live ouvre la webcam et commence à détecter!
FAIRE
Nous avons accumulé la liste de tâches suivantes, que nous espérons compléter dans un avenir proche
Auteurs
Remarque: Malheureusement, ce n'est qu'un passe-temps et non un travail à temps plein, nous ferons donc de notre mieux pour garder les choses à jour, mais aucune garantie. Cela étant dit, grâce à tous pour votre aide et vos commentaires continus, car c'est vraiment apprécié. Nous essaierons de tout aborder dès que possible.
Références
- Wei Liu, et al. "SSD: détecteur multibox à un seul coup." ECCV2016.
- Implémentation originale (CAFE)
- Un grand merci à Alex Koltun et à son équipe de WebyClip pour leur aide pour terminer la partie d'augmentation des données.
- Une liste d'autres grands ports SSD qui étaient des sources d'inspiration (en particulier le Chainer Repo):
- Chainer, Keras, Mxnet, Tensorflow