Remarque: Ce projet n'est plus maintenu et peut ne pas être compatible avec le plus récent Pytorch (après 0,4.0).
Il s'agit d'une implémentation Pytorch de Yolov2. Ce projet est principalement basé sur DarkFlow et DarkNet.
J'ai utilisé une extension cython pour le post-traitement et multiprocessing.Pool pour le prétraitement d'image. Le test d'une image dans VOC2007 coûte environ 13 à 20 ms.
Pour plus de détails sur Yolo et Yolov2, veuillez vous référer à leur page de projet et à l'article: Yolo9000: Mieux, plus rapide, plus fort par Joseph Redmon et Ali Farhadi .
Remarque 1: Il s'agit toujours d'un projet expérimental. La carte de test VOC07 est d'environ 0,71 (formée sur VOC07 + 12 Trainval, rapportée par @ Cory8249). Voir Issue1 et Issue23 pour plus de détails sur la formation.
Remarque 2: Je recommande d'écrire votre propre dataloader à l'aide de Torch.utils.data.dataset car multiprocessing.Pool.imap ne s'arrêtera même pas même s'il n'y a pas d'espace mémoire suffisant. Un exemple de dataloader pour vocdataset: problème71.
Remarque 3: Mettre à niveau vers Pytorch 0.4: # 59
Cloner ce référentiel
git clone [email protected]:longcw/yolo2-pytorch.git Construisez la couche Reorg ( tf.extract_image_patches )
cd yolo2-pytorch
./make.sh Téléchargez le modèle formé yolo-voc.weights.h5 (lien mis à jour) et définissez le chemin du modèle dans demo.py
Exécutez Demo python demo.py
Vous pouvez entraîner YOLO2 sur n'importe quel ensemble de données. Ici, nous le formons sur VOC2007 / 2012.
Téléchargez la formation, la validation, les données de test et le vocdevkit
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar Extraire tous ces goudrons en un seul répertoire nommé VOCdevkit
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tarIl devrait avoir cette structure de base
$VOCdevkit / # development kit
$VOCdevkit /VOCcode/ # VOC utility code
$VOCdevkit /VOC2007 # image sets, annotations, etc.
# ... and several other directories ... Étant donné que le programme charge des données dans yolo2-pytorch/data par défaut, vous pouvez définir le chemin de données comme suit.
cd yolo2-pytorch
mkdir data
cd data
ln -s $VOCdevkit VOCdevkit2007 Téléchargez le modèle DarkNet19 prétrainé (lien mis à jour) et définissez le chemin d'accès dans yolo2-pytorch/cfgs/exps/darknet19_exp1.py .
Formation (facultative) avec Tensorboard.
Pour utiliser le Tensorboard, définissez use_tensorboard = True dans yolo2-pytorch/cfgs/config.py et installez tensorboardx (https://github.com/lanpa/tensorboard-pytorch). Le journal Tensorboard sera enregistré dans training/runs .
Exécutez le programme de formation: python train.py .
Définissez le chemin du trained_model dans yolo2-pytorch/cfgs/config.py .
cd faster_rcnn_pytorch
mkdir output
python test.pyLe laissez-passer avant nécessite de fournir 4 arguments au réseau:
im_data - Données d'image.C x H x W , où C correspond aux canaux de couleur de l'image et H et W sont respectivement la hauteur et la largeur.imcv2_recolor fournie dans utils/im_transform.py pour prétraiter votre image. Assurez-vous également que les images ont été redimensionnées à 416 x 416 pixelsgt_boxes - Une liste de tableaux numpy , où chacun est de taille N x 4 , où N est le nombre de fonctionnalités dans l'image. Les quatre valeurs de chaque ligne doivent correspondre à x_bottom_left , y_bottom_left , x_top_right et y_top_right .gt_classes - Une liste de tableaux numpy , où chaque tableau contient une valeur entière correspondant à la classe de chaque boîte de délimitation fournie dans gt_boxesdontcare - une liste de listesLicence: Licence MIT (MIT)