/Yolov5_tf

Yolov5/Yolov4/ Yolov3/ Yolo_tiny in tensorflow

Primary LanguagePython

YoloVx(yolov5/yolov4/yolov3/yolo_tiny)

Tensorflow

  1. Install NVIDIA driver
  2. Install CUDA10.1 and cudnn7.5
  3. Install Anaconda3, download website
  4. Install tensorflow, such as "sudo pip install tensorflow>=1.15 or tensorflow > 2.0" etc.

Introduction

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; MobileNetV3(large and small)

Neck: SPP[3], PAN[4];

Head: YOLOv5/YOLOv4(Mish), YOLOv3(Leaky_ReLU)[10];

Loss: DIOU CIOU[5], Focal_Loss[6]; Other: Label_Smoothing[7];

Environment

Python 3.6.8

Tensorflow 1.13.1 or Tensorflow 2.0 up

Quick Start

  1. Download YOLOv5 weights from yolov5.weights.
  2. Download YOLOv4 weights from yolov4.weights.
  3. Convert the Darknet YOLOv4 model to a tf model.
  4. Train Yolov5/Yolov4/Yolov3/Yolo_tiny.
  5. Run Yolov5/Yolov4/Yolov3/Yolo_tiny detection.

Convert weights

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

Train

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

Usage

Inference

python test.py
python demo.py

Reference

[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

Acknowledgment

keras_yolov3 https://github.com/qqwweee/keras-yolo3.

keras_yolov4 https://github.com/Ma-Dan/keras-yolo4.