Package: torch-yolo3
PyTorch-YOLOv3A minimal PyTorch implementation of YOLOv3, with support for training, inference and evaluation.InstallationClone and install requirementsgitclone{this-repository}cdPyTorch-YOLOv3/
pip3install-rrequirements.txt--userDownload pre-trained weightscdweights
bashdownload_weights.shDownload COCOcddata
bashget_coco_dataset.shTestEvaluates the model on COCO test.python3scripts/run_eval.py--weights_pathweights/yolov3.weightsModelmAP (min. 50 IoU)YOLOv3 608 (paper)57.9YOLOv3 608 (this impl.)57.3YOLOv3 416 (paper)55.3YOLOv3 416 (this impl.)55.5InferenceUses pretrained weights to make predictions on images. Below table displays the inference times when using as inputs images scaled to 256x256. The ResNet backbone measurements are taken from the YOLOv3 paper. The Darknet-53 measurement marked shows the inference time of this implementation on my 1080ti card.BackboneGPUFPSResNet-101Titan X53ResNet-152Titan X37Darknet-53 (paper)Titan X76Darknet-53 (this impl.)1080ti74python3scripts/run_detect.py--image_folderdata/samplesTraintrain.py [-h] [--epochs EPOCHS] [--batch_size BATCH_SIZE]
              [--gradient_accumulations GRADIENT_ACCUMULATIONS]
              [--model_def MODEL_DEF] [--data_config DATA_CONFIG]
              [--pretrained_weights PRETRAINED_WEIGHTS] [--nb_cpu NB_CPU]
              [--img_size IMG_SIZE]
              [--checkpoint_interval CHECKPOINT_INTERVAL]
              [--evaluation_interval EVALUATION_INTERVAL]
              [--compute_map COMPUTE_MAP]
              [--multiscale_training MULTISCALE_TRAINING]Example (COCO)To train on COCO using a Darknet-53 backend pretrained on ImageNet run:python3scripts/run_train.py--data_configconfig/coco.data--pretrained_weightsweights/darknet53.conv.74Training log---- [Epoch 7/100, Batch 7300/14658] ----
+------------+--------------+--------------+--------------+
| Metrics    | YOLO Layer 0 | YOLO Layer 1 | YOLO Layer 2 |
+------------+--------------+--------------+--------------+
| grid_size  | 16           | 32           | 64           |
| loss       | 1.554926     | 1.446884     | 1.427585     |
| x          | 0.028157     | 0.044483     | 0.051159     |
| y          | 0.040524     | 0.035687     | 0.046307     |
| w          | 0.078980     | 0.066310     | 0.027984     |
| h          | 0.133414     | 0.094540     | 0.037121     |
| conf       | 1.234448     | 1.165665     | 1.223495     |
| cls        | 0.039402     | 0.040198     | 0.041520     |
| cls_acc    | 44.44%       | 43.59%       | 32.50%       |
| recall50   | 0.361111     | 0.384615     | 0.300000     |
| recall75   | 0.222222     | 0.282051     | 0.300000     |
| precision  | 0.520000     | 0.300000     | 0.070175     |
| conf_obj   | 0.599058     | 0.622685     | 0.651472     |
| conf_noobj | 0.003778     | 0.004039     | 0.004044     |
+------------+--------------+--------------+--------------+
Total Loss 4.429395
---- ETA 0:35:48.821929TensorboardTrack training progress in Tensorboard:Initialize trainingRun the command belowGo tohttp://localhost:6006/tensorboard--logdir='logs'--port=6006Train on Custom DatasetCustom modelRun the commands below to create a custom model definition, replacing<num-classes>with the number of classes in your dataset.cdconfig# Navigate to config dirbashcreate_custom_model.sh<num-classes># Will create custom model 'yolov3-custom.cfg'ClassesAdd class names todata/custom/classes.names. This file should have one row per class name.Image FolderMove the images of your dataset todata/custom/images/.Annotation FolderMove your annotations todata/custom/labels/. The dataloader expects that the annotation file corresponding to the imagedata/custom/images/train.jpghas the pathdata/custom/labels/train.txt. Each row in the annotation file should define one bounding box, using the syntaxlabel_idx x_center y_center width height. The coordinates should be scaled[0, 1], and thelabel_idxshould be zero-indexed and correspond to the row number of the class name indata/custom/classes.names.Define Train and Validation SetsIndata/custom/train.txtanddata/custom/valid.txt, add paths to images that will be used as train and validation data respectively.TrainTo train on the custom dataset run:python3scripts/run_train.py--model_defconfig/yolov3-custom.cfg--data_configconfig/custom.dataAdd--pretrained_weights weights/darknet53.conv.74to train using a backend pretrained on ImageNet.CreditYOLOv3: An Incremental ImprovementJoseph Redmon, Ali FarhadiWe present some updates to YOLO! We made a bunch of little design changes to make it better. We also trained this new network that’s pretty swell. It’s a little bigger than last time but more accurate. It’s still fast hough, don’t worry. At 320 × 320 YOLOv3 runs in 22 ms at 28.2 mAP, as accurate as SSD but three times faster. When we look at the old .5 IOU mAP detection metric YOLOv3 is quite good. It achieves 57.9 AP50 in 51 ms on a Titan X, compared to 57.5 AP50 in 198 ms by RetinaNet, similar performance but 3.8× faster. As always, all the code is online athttps://pjreddie.com/yolo/.[Paper][Project Webpage][Authors' Implementation]@article{yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal = {arXiv},
  year={2018}
}