YOLO v3和Pythorch

torch-yolo3的Python项目详细描述


Pythorch-YOLOv3型

YOLOv3的最小Pythorch实现,支持训练、推理和评估。在

Build StatuscodecovCodeFactor


安装

克隆和安装要求

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
ModelmAP (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

张力板

在张力板上跟踪训练进度:

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.txtdata/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}
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使图像以正确的速度在屏幕上移动,以适应所有显示   内存Java分配:从预先存在/分配的池中分配对象   java这种书写方式?   Java正则表达式查找字符串的开头   java是否可以创建一个类来处理安卓中的所有日志代码(例如log.d(TAG,message))   如何使用Selenium和java单击WebTable任意页面上的WebElement   java解析字符串中的文件名   java刷新JTree内容   java如何覆盖RequestMappingHandler   爪哇数石头、布、剪刀赢了多少   struts中的java无效令牌   swing JTree,优化算法,Java   java Tomcat和SSL:密钥库格式无效