alexis-gruet-deel / tensorflow-yolov4-tflite

YOLOv4 Implemented in Tensorflow 2.0. Convert YOLO v4 .weights to .pb and .tflite format for tensorflow and tensorflow lite.

Home Page:https://github.com/hunglc007/tensorflow-yolov4-tflite

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tensorflow-yolov4-tflite

license

YOLOv4 Implemented in Tensorflow 2.0. Convert YOLO v4 .weights to .pb and .tflite format for tensorflow and tensorflow lite.

Download yolov4.weights file: https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

Prerequisites

  • Tensorflow 2.1.0
  • tensorflow_addons 0.9.1 (required for mish activation)

Performance

Demo

# yolov4
python detect.py --weights ./data/yolov4.weights --framework tf --size 608 --image ./data/kite.jpg

# yolov4 tflite
python detect.py --weights ./data/yolov4-int8.tflite --framework tflite --size 416 --image ./data/kite.jpg

Output

Yolov4 original weight

Yolov4 tflite int8

Convert to tflite

# yolov4
python convert_tflite.py --weights ./data/yolov4.weights --output ./data/yolov4.tflite

# yolov4 quantize int8
python convert_tflite.py --weights ./data/yolov4.weights --output ./data/yolov4-int8.tflite --quantize_mode int8

# yolov4 quantize float16
python convert_tflite.py --weights ./data/yolov4.weights --output ./data/yolov4-fp16.tflite --quantize_mode float16

# yolov4 quantize int8 full (with all function is converted to int8)
python convert_tflite.py --weights ./data/yolov4.weights --output ./data/yolov4-fp16.tflite --quantize_mode full_int8 --dataset ./coco_dataset/coco/val207.txt

Evaluate on COCO 2017 Dataset

# preprocess coco dataset
cd data
mkdir dataset
cd ..
cd scripts
python coco_convert.py --input COCO_ANOTATION_DATA_PATH --output val2017.pkl
python coco_annotation.py --coco_path COCO_DATA_PATH 
cd ..

# evaluate yolov4 model
python evaluate.py --weights ./data/yolov4.weights
cd mAP/extra
python remove_space.py
cd ..
python main.py --output results_yolov4_tf

Traning your own model

# Prepare your dataset
# If you want to train from scratch:
In config.py set FISRT_STAGE_EPOCHS=0 
# Run script:
python train.py

# Transfer learning: 
python train.py --weights ./data/yolov4.weights

TODO

  • YOLOv4 tflite on android
  • YOLOv4 tflite on ios
  • Training code
  • Update scale xy
  • ciou
  • Mosaic data augmentation
  • Mish activation
  • yolov4 tflite version
  • yolov4 in8 tflite version for mobile

References

  • YOLOv4: Optimal Speed and Accuracy of Object Detection YOLOv4.
  • darknet

My project is inspired by these previous fantastic YOLOv3 implementations:

About

YOLOv4 Implemented in Tensorflow 2.0. Convert YOLO v4 .weights to .pb and .tflite format for tensorflow and tensorflow lite.

https://github.com/hunglc007/tensorflow-yolov4-tflite

License:MIT License


Languages

Language:Python 100.0%