/tf-eager-yolo3

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

Primary LanguagePythonMIT LicenseMIT

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