Skip to content

Yolo-v3 model was implemented with tensorflow eager style. I also implemented the eager model's training function and applied it to other datasets (digit detector, vehicle detector).

License

Notifications You must be signed in to change notification settings

BatFaceWayne/tf-eager-yolo3

 
 

Repository files navigation

Build Status codecov

Tensorflow eager implementation of Yolo-v3

I have implemented yolo-v3 detector using tensorflow eager execution.

Usage for python code

0. Requirement

  • python 3.6
  • anaconda 5.1.0
  • tensorflow 1.9.0
  • opencv 3.4.3.18
  • imgaug 0.2.6
  • tqdm
  • Etc.

I recommend that you create and use an anaconda env that is independent of your project. You can create anaconda env for this project by following these simple steps. This process has been verified on Windows 10 and ubuntu 16.04.

$ conda create -n yolo3 python=3.6 anaconda=5.1.0
$ activate yolo3 # in linux "source activate yolo3"
(yolo) $ pip install tensorflow==1.9.0
(yolo) $ pip install opencv-python==3.4.3.18
(yolo) $ pip install imgaug==0.2.6
(yolo) $ pip install tqdm
(yolo) $ pip install pytest-cov
(yolo) $ pip install codecov
(yolo) $ pip install -e .

1. Object detection using original yolo3-weights

  • Run object detection through the following command.

    • project/root> python pred.py -c configs/predict_coco.json -i imgs/dog.jpg
    • Running this script will download the original yolo3-weights file and display the object detection results for the input image.
  • You can see the following results:

2. Training from scratch

This project provides a way to train a detector from scratch. If you follow the command below, you can build a digit detector with just two images. If you follow the instructions, you can train the digit detector as shown below.

  • project/root> python train_eager.py -c configs/svhn.json

After training, you can evaluate the performance of the detector with the following command.

  • project/root> python eval.py -c configs/svhn.json
    • Running this script will evaluate the annotation dataset specified in train_annot_folder. The evaluation results are output in the following manner.
    • {'fscore': 1.0, 'precision': 1.0, 'recall': 1.0}

Now you can add more images to train a digit detector with good generalization performance.

Other Results

  • Pretrained weight file is stored at raccoon
  • Evaluation (200-images)
    • fscore / precision / recall: 0.97, 0.96, 0.98

  • Pretrained weight file is stored at svhn
  • Evaluation (33402-images)
    • fscore / precision / recall: 0.90, 0.83, 0.97

  • Pretrained weight file is stored at udacity
  • Evaluation (9217-images)
    • fscore / precision / recall: 0.80, 0.76, 0.87

4. Kitti object detection dataset : http://www.cvlibs.net/datasets/kitti/eval_object.php

  • Pretrained weight file is stored at kitti
  • Evaluation (7481-images)
    • fscore / precision / recall: 0.93, 0.93, 0.94

Copyright

About

Yolo-v3 model was implemented with tensorflow eager style. I also implemented the eager model's training function and applied it to other datasets (digit detector, vehicle detector).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%