yolo v4 python_YOLOv4在Tensorflow 2.0中实现

tensorflow-yolov4-tflite

YOLOv4 Implemented in Tensorflow 2.0. Convert YOLO v4, YOLOv3, YOLO tiny .weights to .pb, .tflite and trt format for tensorflow, tensorflow lite, tensorRT.

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 float16

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

# yolov4 quantize int8

python convert_tflite.py --weights ./data/yolov4.weights --output ./data/yolov4-fp16.tflite --quantize_mode full_int8 --dataset ./coco_dataset/coco/val207.txt

Convert to TensorRT

# yolov3

python save_model.py --weights ./data/yolov3.weights --output ./checkpoints/yolov3.tf --input_size 416 --model yolov3

python convert_trt.py --weights ./checkpoints/yolov3.tf --quantize_mode float16 --output ./checkpoints/yolov3-trt-fp16-416

# yolov3-tiny

python save_model.py --weights ./data/yolov3-tiny.weights --output ./checkpoints/yolov3-tiny.tf --input_size 416 --tiny

python convert_trt.py --weights ./checkpoints/yolov3-tiny.tf --quantize_mode float16 --output ./checkpoints/yolov3-tiny-trt-fp16-416

# yolov4

python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4.tf --input_size 416 --model yolov4

python convert_trt.py --weights ./checkpoints/yolov4.tf --quantize_mode float16 --output ./checkpoints/yolov4-trt-fp16-416

Evaluate on COCO 2017 Dataset

# run script in /script/get_coco_dataset_2017.sh to download COCO 2017 Dataset

# preprocess coco dataset

cd data

mkdir dataset

cd ..

cd scripts

python coco_convert.py --input ./coco/annotations/instances_val2017.json --output val2017.pkl

python coco_annotation.py --coco_path ./coco

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

mAP50 on COCO 2017 Dataset

Detection

512x512

416x416

320x320

YoloV3

55.43

52.32

YoloV4

61.96

57.33

Benchmark

python benchmarks.py --size 416 --model yolov4 --weights ./data/yolov4.weights

TensorRT performance

YoloV4 416 images/s

FP32

FP16

INT8

Batch size 1

55

116

Batch size 8

70

152

Tesla P100

Detection

512x512

416x416

320x320

YoloV3 FPS

40.6

49.4

61.3

YoloV4 FPS

33.4

41.7

50.0

Tesla K80

Detection

512x512

416x416

320x320

YoloV3 FPS

10.8

12.9

17.6

YoloV4 FPS

9.6

11.7

16.0

Tesla T4

Detection

512x512

416x416

320x320

YoloV3 FPS

27.6

32.3

45.1

YoloV4 FPS

24.0

30.3

40.1

Tesla P4

Detection

512x512

416x416

320x320

YoloV3 FPS

20.2

24.2

31.2

YoloV4 FPS

16.2

20.2

26.5

Macbook Pro 15 (2.3GHz i7)

Detection

512x512

416x416

320x320

YoloV3 FPS

YoloV4 FPS

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

The training performance is not fully reproduced yet, so I recommended to use Alex's Darknet to train your own data, then convert the .weights to tensorflow or tflite.

TODO

Convert YOLOv4 to TensorRT

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.

My project is inspired by these previous fantastic YOLOv3 implementations:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值