GithubHelp home page GithubHelp logo

yolov3's Introduction

YoloV3


YoloV3 Simplified for training on Colab with custom dataset.

A Collage of Training images image

We have added a very 'smal' Coco sample imageset in the folder called smalcoco. This is to make sure you can run it without issues on Colab.

Full credit goes to this, and if you are looking for much more detailed explainiation and features, please refer to the original source.

You'll need to download the weights from the original source.

  1. Create a folder called weights in the root (YoloV3) folder
  2. Download from: https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0
  3. Place 'yolov3-spp-ultralytics.pt' file in the weights folder:
  • to save time, move the file from the above link to your GDrive
  • then drag and drop from your GDrive opened in Colab to weights folder
  1. run this command python train.py --data data/smalcoco/smalcoco.data --batch 10 --cache --epochs 25 --nosave

For custom dataset:

  1. Clone this repo: https://github.com/miki998/YoloV3_Annotation_Tool
  2. Follow the installation steps as mentioned in the repo.
  3. For the assignment, download 500 images of your unique object.
  4. Annotate the images using the Annotation tool.
data
  --customdata
    --images/
      --img001.jpg
      --img002.jpg
      --...
    --labels/
      --img001.txt
      --img002.txt
      --...
    custom.data #data file
    custom.names #your class names
    custom.txt #list of name of the images you want your network to be trained on. Currently we are using same file for test/train
  1. As you can see above you need to create custom.data file. For 1 class example, your file will look like this:
  classes=1
  train=data/customdata/custom.txt
  test=data/customdata/custom.txt 
  names=data/customdata/custom.names
  1. As you it a poor idea to keep test and train data same, but the point of this repo is to get you up and running with YoloV3 asap. You'll probably do a mistake in writing to custom.txt file. This is how our file looks like (please note the .s and /s):
./data/customdata/images/img001.jpg
./data/customdata/images/img002.jpg
./data/customdata/images/img003.jpg
...
  1. You need to add custom.names file as you can see above. For our example, we downloaded images of Walle. Our custom.names file look like this:
walle
  1. Walle above will have a class index of 0.
  2. For COCO's 80 classes, VOLOv3's output vector has 255 dimensions ( (4+1+80)*3). Now we have 1 class, so we would need to change it's architecture.
  3. Copy the contents of 'yolov3-spp.cfg' file to a new file called 'yolov3-custom.cfg' file in the data/cfg folder.
  4. Search for 'filters=255' (you should get entries entries). Change 255 to 18 = (4+1+1)*3
  5. Search for 'classes=80' and change all three entries to 'classes=1'
  6. Since you are lazy (probably), you'll be working with very few samples. In such a case it is a good idea to change:
  • burn_in to 100
  • max_batches to 5000
  • steps to 4000,4500
  1. Don't forget to perform the weight file steps mentioned in the sectio above.
  2. Run this command python train.py --data data/customdata/custom.data --batch 10 --cache --cfg cfg/yolov3-custom.cfg --epochs 3 --nosave

As you can see in the collage image above, a lot is going on, and if you are creating a set of say 500 images, you'd get a bonanza of images via default augmentations being performed.

Results After training for 300 Epochs, results look awesome!

image

yolov3's People

Contributors

theschoolofai 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.