YOLO v3和Pythorch
torch-yolo3的Python项目详细描述
Pythorch-YOLOv3型
YOLOv3的最小Pythorch实现,支持训练、推理和评估。在
安装
克隆和安装要求
git clone {this-repository}cd PyTorch-YOLOv3/ pip3 install -r requirements.txt --user
下载预先训练的重量
^{pr2}$下载COCO
cd data
bash get_coco_dataset.sh
试验
对模型进行COCO检验。在
python3 scripts/run_eval.py --weights_path weights/yolov3.weights
Model | mAP (min. 50 IoU) |
---|---|
YOLOv3 608 (paper) | 57.9 |
YOLOv3 608 (this impl.) | 57.3 |
YOLOv3 416 (paper) | 55.3 |
YOLOv3 416 (this impl.) | 55.5 |
推论
使用预训练权重对图像进行预测。下表显示了将缩放为256x256的图像用作输入时的推断时间。ResNet主干测量数据取自YOLOv3论文。标记的Darknet-53测量值显示了1080ti卡上此实现的推断时间。在
^{tb2}$python3 scripts/run_detect.py --image_folder data/samples
{1}$
火车
train.py [-h] [--epochs EPOCHS] [--batch_size BATCH_SIZE]
[--gradient_accumulations GRADIENT_ACCUMULATIONS]
[--model_def MODEL_DEF] [--data_config DATA_CONFIG]
[--pretrained_weights PRETRAINED_WEIGHTS] [--nb_cpu NB_CPU]
[--img_size IMG_SIZE]
[--checkpoint_interval CHECKPOINT_INTERVAL]
[--evaluation_interval EVALUATION_INTERVAL]
[--compute_map COMPUTE_MAP]
[--multiscale_training MULTISCALE_TRAINING]
示例(COCO)
要使用ImageNet上预训练的Darknet-53后端在COCO上训练:
python3 scripts/run_train.py --data_config config/coco.data --pretrained_weights weights/darknet53.conv.74
培训日志
---- [Epoch 7/100, Batch 7300/14658] ----
+------------+--------------+--------------+--------------+
| Metrics | YOLO Layer 0 | YOLO Layer 1 | YOLO Layer 2 |
+------------+--------------+--------------+--------------+
| grid_size | 16 | 32 | 64 |
| loss | 1.554926 | 1.446884 | 1.427585 |
| x | 0.028157 | 0.044483 | 0.051159 |
| y | 0.040524 | 0.035687 | 0.046307 |
| w | 0.078980 | 0.066310 | 0.027984 |
| h | 0.133414 | 0.094540 | 0.037121 |
| conf | 1.234448 | 1.165665 | 1.223495 |
| cls | 0.039402 | 0.040198 | 0.041520 |
| cls_acc | 44.44% | 43.59% | 32.50% |
| recall50 | 0.361111 | 0.384615 | 0.300000 |
| recall75 | 0.222222 | 0.282051 | 0.300000 |
| precision | 0.520000 | 0.300000 | 0.070175 |
| conf_obj | 0.599058 | 0.622685 | 0.651472 |
| conf_noobj | 0.003778 | 0.004039 | 0.004044 |
+------------+--------------+--------------+--------------+
Total Loss 4.429395
---- ETA 0:35:48.821929
张力板
在张力板上跟踪训练进度:
- 初始化培训
- 运行下面的命令
- 转到http://localhost:6006/
tensorboard --logdir='logs' --port=6006
在自定义数据集上训练
定制型号
运行下面的命令来创建一个自定义模型定义,将<num-classes>
替换为数据集中的类数。在
cd config # Navigate to config dir bash create_custom_model.sh <num-classes> # Will create custom model 'yolov3-custom.cfg'
类
将类名添加到data/custom/classes.names
。这个文件每个类名应该有一行。在
图像文件夹
将数据集的图像移动到data/custom/images/
。在
注释文件夹
将注释移动到data/custom/labels/
。dataloader期望与图像data/custom/images/train.jpg
对应的注释文件具有路径data/custom/labels/train.txt
。注释文件中的每一行都应该使用语法label_idx x_center y_center width height
定义一个边界框。坐标应该被缩放[0, 1]
,而{data/custom/classes.names
中类名的行号相对应。在
定义列车和验证集
在data/custom/train.txt
和data/custom/valid.txt
中,分别为将用作训练和验证数据的图像添加路径。在
列车
要对自定义数据集运行进行训练,请执行以下操作:
python3 scripts/run_train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data
添加--pretrained_weights weights/darknet53.conv.74
以使用ImageNet上预先训练的后端进行训练。在
信贷
YOLOv3:渐进式改善
Joseph Redmon,Ali Farhadi
我们向YOLO提供一些更新!我们做了一些小的设计修改,使它更好。我们还培训了这个非常棒的新网络。比上次大一点,但更准确。还是很快的霍夫,别担心。在320×320时,YOLOv3在22毫秒内以28.2 mAP运行,与SSD一样精确,但速度快三倍。当我们看看旧的.5iou地图检测指标YOLOv3是相当好的。与RetinaNet在198ms内达到57.5ap50相比,titanox在51ms内达到57.9ap50,性能相似,但速度快3.8倍。{总是在线的}代码^总是在线的。在
[Paper][Project Webpage][Authors' Implementation]
@article{yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal = {arXiv},
year={2018}
}
- 项目
标签: