A tensorflow implementation of YOLOv5 inspired by https://github.com/ultralytics/yolov5.
A tensorflow implementation of YOLOv4 inspired by https://github.com/AlexeyAB/darknet.
Frame code from https://github.com/YunYang1994/tensorflow-yolov3.
Backbone: Darknet53; CSPDarknet53[1], Mish[2]; MobileNetV2
Head: YOLOv5/YOLOv4(Mish), YOLOv3(Leaky_ReLU)[10];
Loss: DIOU CIOU[5], Focal_Loss[6]; Other: Label_Smoothing[7];
Python 3.6.8
Tensorflow 1.13.1 or Tensorflow 2.0 up
- Download YOLOv5 weights from yolov5.weights.
- Download YOLOv4 weights from yolov4.weights.
- Convert the Darknet YOLOv4 model to a tf model.
- Train Yolov5/Yolov4/Yolov3/Yolo_tiny.
- Run Yolov5/Yolov4/Yolov3/Yolo_tiny detection.
Running from_darknet_weights_to_ckpt.py will get tf yolov4 weight file yolov4_coco.ckpt.
python scripts/from_darknet_weights_to_ckpt.py
Running ckpt2pb.py will get tf yolov4 weight file yolov4.pb.
python scripts/ckpt2pb.py
Or running from_darknet_weights_to_pb.py directly.
python scripts/from_darknet_weights_to_pb.py
In core/config.py add your own path.
usage: python train.py gpu_id net_type(yolov5/yolov4/yolov3/tiny)
python train.py 0 yolov5
Inference
python test.py
python demo.py
[1] Cross Stage Partial Network (CSPNet)
[2] A Self Regularized Non-Monotonic Neural Activation Function
[3] Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
[4] Path Aggregation Network for Instance Segmentation
[5] Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
[6] Focal Loss for Dense Object Detection
[7] When Does Label Smoothing Help?
[8] Convolutional Block Attention Module
[9] YOLOv4: Optimal Speed and Accuracy of Object Detection
[10] YOLOv3: An Incremental Improvement
[11] Aggregated Residual Transformations for Deep Neural Networks
keras_yolov3 https://github.com/qqwweee/keras-yolo3.
keras_yolov4 https://github.com/Ma-Dan/keras-yolo4.