GithubHelp home page GithubHelp logo

custom_yolov3's Introduction

YOLOv3 in PyTorch

A quite minimal implementation of YOLOv3 in PyTorch spanning only around 800 lines of code related to YOLOv3 (not counting plot image helper functions etc). The repository has support for training and evaluation and complete with helper functions for inference. There is currently pretrained weights for Pascal-VOC with MS COCO coming up.

Installation

Clone and install requirements

$ git clone https://github.com/Ejedavy/custom_yolov3.git
$ cd ML/Pytorch/object_detection/YOLOv3/
$ pip install requirements.txt

Download pretrained weights on Pascal-VOC

Available on Kaggle: link

Download Pascal VOC dataset

Download the preprocessed dataset from link. Just unzip this in the main directory.

Download MS COCO dataset

Download the preprocessed dataset from link. Just unzip this in the main directory.

Training

Edit the config.py file to match the setup you want to use. Then run train.py

Results

Model mAP @ 50 IoU
YOLOv3 (Pascal VOC) 78.2
YOLOv3 (MS-COCO) Will probably train on this at some point

The model was evaluated with confidence 0.2 and IOU threshold 0.45 using NMS.

Things I'm unsure of

From my understanding YOLOv3 labeled targets to include an anchor on each of the three different scales. This leads to a problem where we will have multiple predictions of the same object and I think the idea is that we rely more on NMS. The probability of an object in loss function should correspond to the IOU with the ground truth box, this should also alleviate with multiple bounding boxes prediction for each ground truth (since obj score is lower). When loading the original weights for YOLOv3 I good mAP results but the object score, no object score seems to be a bit different because the accuracy on those aren't great. This suggests there's something different with the original implementation, but not sure what it is exactly. The original YOLOv3 paper also used BCE loss for class labels since some datasets are multi-label, however I thought it was more natural to use CrossEntropy because both Pascal and COCO just have a single label.

YOLOv3 paper

The implementation is based on the following paper:

An Incremental Improvement

by Joseph Redmon, Ali Farhadi

Abstract

We 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 though, 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 at https://pjreddie.com/yolo/.

@article{yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal = {arXiv},
  year={2018}
}

custom_yolov3's People

Contributors

ejedavy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.