All Projects → argusswift → Yolov4 Pytorch

argusswift / Yolov4 Pytorch

This is a pytorch repository of YOLOv4, attentive YOLOv4 and mobilenet YOLOv4 with PASCAL VOC and COCO

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Yolov4 Pytorch

Mobilenet Yolo
MobileNetV2-YoloV3-Nano: 0.5BFlops 3MB HUAWEI P40: 6ms/img, YoloFace-500k:0.1Bflops 420KB🔥🔥🔥
Stars: ✭ 1,566 (+46.36%)
Mutual labels:  object-detection, mobilenetv2
Yolov3
yolov3 by pytorch
Stars: ✭ 142 (-86.73%)
Mutual labels:  object-detection, mobilenetv2
Sightseq
Computer vision tools for fairseq, containing PyTorch implementation of text recognition and object detection
Stars: ✭ 116 (-89.16%)
Mutual labels:  object-detection, attention
Simplecvreproduction
Reproduce simple cv project including attention module, classification, object detection, segmentation, keypoint detection, tracking 😄 etc.
Stars: ✭ 602 (-43.74%)
Mutual labels:  object-detection, attention
Object Localization
Object localization in images using simple CNNs and Keras
Stars: ✭ 130 (-87.85%)
Mutual labels:  object-detection, mobilenetv2
Tensornets
High level network definitions with pre-trained weights in TensorFlow
Stars: ✭ 982 (-8.22%)
Mutual labels:  object-detection, mobilenetv2
Inceptionvisiondemo
🎥 iOS11 demo application for dominant objects detection.
Stars: ✭ 48 (-95.51%)
Mutual labels:  object-detection
Math object detection
An image recognition/object detection model that detects handwritten digits and simple math operators. The output of the predicted objects (numbers & math operators) is then evaluated and solved.
Stars: ✭ 52 (-95.14%)
Mutual labels:  object-detection
Yolo tensorflow
🚖 Object Detection (YOLOv1) implentation in tensorflow, with training, testing and video features.
Stars: ✭ 45 (-95.79%)
Mutual labels:  object-detection
Biblosa Pytorch
Re-implementation of Bi-Directional Block Self-Attention for Fast and Memory-Efficient Sequence Modeling (T. Shen et al., ICLR 2018) on Pytorch.
Stars: ✭ 43 (-95.98%)
Mutual labels:  attention
Fluence
A deep learning library based on Pytorch focussed on low resource language research and robustness
Stars: ✭ 54 (-94.95%)
Mutual labels:  attention
Mask rcnn ros
The ROS Package of Mask R-CNN for Object Detection and Segmentation
Stars: ✭ 53 (-95.05%)
Mutual labels:  object-detection
Lfip
Efficient Featurized Image Pyramid Network for Single Shot Detector, CVPR, 2019
Stars: ✭ 52 (-95.14%)
Mutual labels:  object-detection
Pytorch Ssd
MobileNetV1, MobileNetV2, VGG based SSD/SSD-lite implementation in Pytorch 1.0 / Pytorch 0.4. Out-of-box support for retraining on Open Images dataset. ONNX and Caffe2 support. Experiment Ideas like CoordConv.
Stars: ✭ 1,054 (-1.5%)
Mutual labels:  object-detection
Hsd
Hierarchical Shot Detector (ICCV2019)
Stars: ✭ 53 (-95.05%)
Mutual labels:  object-detection
Sentences pair similarity calculation siamese lstm
A Keras Implementation of Attention_based Siamese Manhattan LSTM
Stars: ✭ 48 (-95.51%)
Mutual labels:  attention
Pointer Networks Experiments
Sorting numbers with pointer networks
Stars: ✭ 53 (-95.05%)
Mutual labels:  attention
Det3d
A general 3D object detection codebse.
Stars: ✭ 1,025 (-4.21%)
Mutual labels:  object-detection
Ssd
High quality, fast, modular reference implementation of SSD in PyTorch
Stars: ✭ 1,060 (-0.93%)
Mutual labels:  object-detection
Text Classification Keras
📚 Text classification library with Keras
Stars: ✭ 53 (-95.05%)
Mutual labels:  attention

996.icu LICENSE

YOLOv4-pytorch (attentive YOLOv4 and Mobilenetv3 YOLOv4)

This is a PyTorch re-implementation of YOLOv4 architecture based on the official darknet implementation AlexeyAB/darknet with PASCAL VOC, COCO and Customer dataset

Results(updating)

name train Dataset test Dataset test size mAP inference time(ms) params(M) model link
mobilenetv2-YOLOV4 VOC trainval(07+12) VOC test(07) 416 0.851 11.29 46.34 args

Update!!!

Mobilenetv3-YOLOv4 is arriving!(You only need to change the MODEL_TYPE in config/yolov4_config.py)

News!!!

This repo add some useful attention methods in backbone.The following pictures illustrate such thing:

  • SEnet(CVPR 2017)

SEnet

  • CBAM(CVPR 2018)

CBAM

Highlights

YOLOv4 (attentive YOLOv4 and Mobilenet-YOLOv4) with some useful module

This repo is simple to use,easy to read and uncomplicated to improve compared with others!!!

Environment

  • Nvida GeForce RTX 2080TI
  • CUDA10.0
  • CUDNN7.0
  • windows or linux
  • python 3.6

Brief

  • [x] DO-Conv(arxiv2020)(torch>=1.2)
  • [x] Attention
  • [x] fp_16 training
  • [x] Mish
  • [x] Custom data
  • [x] Data Augment (RandomHorizontalFlip, RandomCrop, RandomAffine, Resize)
  • [x] Multi-scale Training (320 to 640)
  • [x] focal loss
  • [x] CIOU
  • [x] Label smooth
  • [x] Mixup
  • [x] cosine lr

Install dependencies

Run the installation script to install all the dependencies. You need to provide the conda install path (e.g. ~/anaconda3) and the name for the created conda environment (here YOLOv4-pytorch).

pip3 install -r requirements.txt --user

Note: The install script has been tested on an Ubuntu 18.04 and Window 10 system. In case of issues, check the detailed installation instructions.

Prepared work

1、Git clone YOLOv4 repository

git clone github.com/argusswift/YOLOv4-pytorch.git

Update the "PROJECT_PATH" in the config/yolov4_config.py.


2、Prepared dataset

PascalVOC

# Download the data.
cd $HOME/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

MSCOCO 2017

  #step1: download the following data and annotation
  2017 Train images [118K/18GB]
  2017 Val images [5K/1GB]
  2017 Test images [41K/6GB]
  2017 Train/Val annotations [241MB]
  #step2: arrange the data to the following structure
  COCO
  ---train
  ---test
  ---val
  ---annotations

And then

  • Put them in the dir, and update the "DATA_PATH" in the config/yolov4_config.py.
  • (for COCO) Use coco_to_voc.py to transfer COCO datatype to VOC datatype.
  • Convert data format :use utils/voc.py or utils/coco.py convert the pascal voc *.xml format (COCO *.json format)to *.txt format (Image_path   xmin0,ymin0,xmax0,ymax0,class0   xmin1,ymin1,xmax1,ymax1,class1  ...).

3、Download weight file

  • Darknet pre-trained weight : yolov4
  • Mobilenet pre-trained weight : mobilenetv2(code:args),mobilenetv3(code:args)
  • Make dir weight/ in the YOLOv4 and put the weight file in.
  • set MODEL_TYPE in config/yolov4_config.py when you run training program.

4、Transfer to your own dataset(train your own dataset)

  • Put pictures of your dataset into the JPEGImages folder, and Annotations files into the Annotations folder.
  • Use the xml_to_txt.py file to write the list of training and test files to ImageSets/Main/*.txt.
  • Convert data format :use utils/voc.py or utils/coco.py convert the pascal voc *.xml format (COCO *.json format)to *.txt format (Image_path   xmin0,ymin0,xmax0,ymax0,class0   xmin1,ymin1,xmax1,ymax1,class1  ...).

To train

Run the following command to start training and see the details in the config/yolov4_config.py and you should set DATA_TYPE is VOC or COCO when you run training program.

CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/yolov4.weights --gpu_id 0 > nohup.log 2>&1 &

Also * It supports to resume training adding --resume, it will load last.pt automaticly by using commad

CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/last.pt --gpu_id 0 > nohup.log 2>&1 &

To detect

Modify your detecte img path:DATA_TEST=/path/to/your/test_data # your own images

for VOC dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det
for COCO dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det

The images can be seen in the output/. you could see pictures like follows:

det-result


To test video

Modify:

  • video_path:/path/to/your/video
  • weight_path:/path/to/your/weight
  • output_dir:/path/to/save/dir
CUDA_VISIBLE_DEVICES=0 python3 video_test.py --weight_path best.pt --gpu_id 0 --video_path video.mp4 --output_dir --output_dir

To evaluate (PASCAL VOC)

Modify your evaluate dataset path:DATA_PATH=/path/to/your/test_data # your own images

for VOC dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode val

results

If you want to see the picture above, you should use follow commands:

# To get ground truths of your dataset
python3 utils/get_gt_txt.py
# To plot P-R curve and calculate mean average precision
python3 utils/get_map.py 

To evaluate (COCO)

Modify your evaluate dataset path:DATA_PATH=/path/to/your/test_data # your own images

CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode val

type=bbox
Running per image evaluation...      DONE (t=0.34s).
Accumulating evaluation results...   DONE (t=0.08s).
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.438
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.607
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.469
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.253
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.486
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.567
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.342
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.571
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.632
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.458
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.691
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.790

To evaluate your model parameters

python3 utils/modelsize.py

To visualize heatmaps

Set showatt=Ture in val_voc.py and you will see the heatmaps emerged from network' output

for VOC dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval
for COCO dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval

The heatmaps can be seen in the output/ like this:

heatmaps

Reference

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].