YOLOv5目标检测实验
最近在用YOLOv5跑一些目标检测的东西,这是自己日常学习的一些总结!后期会继续更新!有问题也欢迎批评指正!如果雷同请见谅!文章来源:https://www.toymoban.com/news/detail-466262.html
1.数据集
- 创建数据集是在detect.py里面的create_dataloader,并在主函数里面调用
- yolov5在计算资源的调用上采用了torch.nn.parallel.DistributedDataParallel(DDP,多张显卡并行),因为即使只是用单张显卡,torch.nn.DataParallel(DP)也比DDP慢。这个在train.py中设置
- 训练完成后会最后一个exp的weights下保存最好的一次后最后一次的model
- data的hpy里面可以设置学习率、loss等超参数
- 数据的读取是采用主进程预读取并缓存,然后其它进程从缓存中读取,不同进程之间的数据具体通过torch.distributed.barrier()实现。这个function在utils.py/torch_utils.py中。在dataset.py创建数据集的时候调用,如果当前不是主进程执行,则会让该进程等待,直到主进程执行完
- dataset.py
(1) img_files用来存放所有images的路径
(2) cache是个字典,key的个数为图像个数+4,存储了每张图像对应的所有gt box标签和图像宽高
(3) Rectangular Training是将images按照宽高比排序后,将宽高比接近的数据放到同一个batch。 因同一个batch里的数据,在输入网络时必需有相同的宽和高,这样将宽高比接近的数据放到同一个batch,则batch内的数据,填充的无效像素就是最少的。
(4) 将数据集中所有图像读取进来,并等比缩放,保存到self.imgs里,当设置了本地保存时,保存为本地.npy文件
2.YOLOv5结果
1)expX目录代表生成结果次数
2)result.png
- GIoU:越小方框越准(图上没有这个)
Objectness:检测loss均值,越小越准
mAP@0.5:0.95:阈值取0.5:0.05:0.95后取均值
mAP@0.5:阈值大于0.5的mAP
3) result.txt
- 从左到右依次为:epoch GPU消耗 边界框损失 目标检测损失 分类损失 total_loss targets数量 网络输入图片大小 P R mAP@0.5 mAP@0.5:0.95 验证集val_box 验证集val_obj val_cls
- train.py里面with open(result_file,‘a’) as f是将训练结果写入result.txt
- 640后面的四列分别表示Precision,Recall,mAP@.5,mAP@.5:.95
*mAP@.5:阈值为0.5时的mAP
*mAP@.5:阈值为0.5-0.95(步长为0.05)时的所有mAP的均值
4)confusion_matrix.png
- 混淆矩阵,用于监督学习(无监督学习叫匹配矩阵),用于观察是否混淆类,某一个格Aij表示第j和类别被预测为i的概率
5)curve.png
- P_curve:单一类准确率(预测为positive),曲线表明,置信度越大,类别检测越准确,即置信度很大时,才被判断为某一类
- R_curve: recall ,有多少正样本被找出来了
- PR_curve:精度越高,召回率越低。
- F1_curve:分类问题的衡量标准,是精确率和召回率的调和平均数[0,1],1是最好的,0最差。
6)labels.png
(1)训练集数据量,每个类别有多少
(2)框的尺寸、数量
(3)center点的位置
(4)label的高宽文章来源地址https://www.toymoban.com/news/detail-466262.html
7)train_batchx.png
- 一次读取的batch数量的图,test_batch同
到了这里,关于YOLOv5目标检测实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!