update readme

This commit is contained in:
duoduo 2022-07-01 23:04:24 +08:00
parent 6a776f81f8
commit ddf924a7ce
2 changed files with 143 additions and 1 deletions

144
README.md
View File

@ -1 +1,143 @@
# pytorch-detector
# :zap:FastestDet:zap:
* ***Faster! Stronger! Simpler!***
* ***It has better single core reasoning performance and simpler feature map post-processing than Yolo-fastest***
* ***In the ARM CPU of RK3568, the single core reasoning performance is 50% higher than Yolo-fastest***
* ***The coco evaluation index increased by 3.8% compared with the map0.5 of Yolo-fastest***
* ***算法介绍https://zhuanlan.zhihu.com/p/536500269 交流qq群:1062122604***
# Evaluating indicator/Benchmark
Network|COCO mAP(0.5)|Resolution|Run Time(4xCore)|Run Time(1xCore)|FLOPs(G)|Params(M)
:---:|:---:|:---:|:---:|:---:|:---:|:---:
[Yolo-FastestV1.1](https://github.com/dog-qiuqiu/Yolo-Fastest/tree/master/ModelZoo/yolo-fastest-1.1_coco)|24.40 %|320X320|26.60 ms|75.74 ms|0.252|0.35M
[Yolo-FastestV2](https://github.com/dog-qiuqiu/Yolo-FastestV2/tree/main/modelzoo)|24.10 %|352X352|23.8 ms|68.9 ms|0.212|0.25M
FastestDet|27.8%|512X512|21.51ms|34.62ms|*|0.25M
* ***Test platform RK3568 CPUBased on [NCNN](https://github.com/Tencent/ncnn)***
# Improvement
* Anchor-Free
* Single scale detector head
* Cross grid multiple candidate targets
* Dynamic positive and negative sample allocation
# How to use
## Dependent installation
* PIP
```
pip3 install -r requirements.txt
```
## Test
* Picture test
```
python3 test.py --yaml configs/config.yaml --weight weights/weight_AP05\:0.248723_280-epoch.pth --img data/3.jpg
```
<div align=center>
<img src="https://github.com/dog-qiuqiu/Yolo-FastestV2/blob/main/img/000139_result.png"> />
</div>
## How to train
### Building data sets(The dataset is constructed in the same way as darknet yolo)
* The format of the data set is the same as that of Darknet Yolo, Each image corresponds to a .txt label file. The label format is also based on Darknet Yolo's data set label format: "category cx cy wh", where category is the category subscript, cx, cy are the coordinates of the center point of the normalized label box, and w, h are the normalized label box The width and height, .txt label file content example as follows:
```
11 0.344192634561 0.611 0.416430594901 0.262
14 0.509915014164 0.51 0.974504249292 0.972
```
* The image and its corresponding label file have the same name and are stored in the same directory. The data file structure is as follows:
```
.
├── train
│   ├── 000001.jpg
│   ├── 000001.txt
│   ├── 000002.jpg
│   ├── 000002.txt
│   ├── 000003.jpg
│   └── 000003.txt
└── val
├── 000043.jpg
├── 000043.txt
├── 000057.jpg
├── 000057.txt
├── 000070.jpg
└── 000070.txt
```
* Generate a dataset path .txt file, the example content is as follows
train.txt
```
/home/qiuqiu/Desktop/dataset/train/000001.jpg
/home/qiuqiu/Desktop/dataset/train/000002.jpg
/home/qiuqiu/Desktop/dataset/train/000003.jpg
```
val.txt
```
/home/qiuqiu/Desktop/dataset/val/000070.jpg
/home/qiuqiu/Desktop/dataset/val/000043.jpg
/home/qiuqiu/Desktop/dataset/val/000057.jpg
```
* Generate the .names category label file, the sample content is as follows:
category.names
```
person
bicycle
car
motorbike
...
```
* The directory structure of the finally constructed training data set is as follows:
```
.
├── category.names # .names category label file
├── train # train dataset
│ ├── 000001.jpg
│   ├── 000001.txt
│   ├── 000002.jpg
│   ├── 000002.txt
│   ├── 000003.jpg
│   └── 000003.txt
├── train.txt # train dataset path .txt file
├── val # val dataset
│   ├── 000043.jpg
│   ├── 000043.txt
│   ├── 000057.jpg
│   ├── 000057.txt
│   ├── 000070.jpg
│   └── 000070.txt
└── val.txt # val dataset path .txt file
```
### Build the training .yaml configuration file
* Reference./configs/config.yaml
```
DATASET:
TRAIN: "/home/qiuqiu/Desktop/coco2017/train2017.txt" # Train dataset path .txt file
VAL: "/home/qiuqiu/Desktop/coco2017/val2017.txt" # Val dataset path .txt file
NAMES: "dataset/coco128/coco.names" # .names category label file
MODEL:
NC: 80 # Number of detection categories
INPUT_WIDTH: 512 # The width of the model input image
INPUT_HEIGHT: 512 # The height of the model input image
TRAIN:
LR: 0.001 # Train learn rate
THRESH: 0.25 #
WARMUP: true # Trun on warm up
BATCH_SIZE: 64 # Batch size
END_EPOCH: 350 # Train epichs
MILESTIONES: # Declining learning rate steps
- 150
- 250
- 300
```
### Train
* Perform training tasks
```
python3 train.py --yaml configs/config.yaml
```
### Evaluation
* Calculate map evaluation
```
python3 eval.py --yaml configs/config.yaml --weight weights/weight_AP05\:0.248723_280-epoch.pth
```
# Deploy
## NCNN
* Waiting for update
# Reference
* https://github.com/Tencent/ncnn

BIN
result.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB