网页后端开发,seo推广服务,仿贴吧的网站,网页设计结课报告1. 简介
目标检测分为Two stage和One stage,只使用一个网络同时产生候选区域并预测出物体的类别和位置#xff0c;所以它们通常被叫做单阶段检测算法#xff08;One stage#xff09;。本篇文章只讲One stage模型#xff0c;常见的模型有YOLO#xff0c;SSD。
目标检测发…1. 简介
目标检测分为Two stage和One stage,只使用一个网络同时产生候选区域并预测出物体的类别和位置所以它们通常被叫做单阶段检测算法One stage。本篇文章只讲One stage模型常见的模型有YOLOSSD。
目标检测发展路程(一)——Two stage_樱缘之梦-CSDN博客
2. 原理
1YOLOYou Only Look Once
YOLO模型已经更新了5个版本分别是YOLO v1,YOLO v2,YOLO v3,YOLO v4,YOLO v5,模型版本的异同可以参考以下文章已经有很多比较优秀的文章解释
总结 | 一文读懂 YOLOv1,v2,v3,v4 发展史 - 知乎
Yolov5 系列1--- Yolo发展史以及Yolov5模型详解_g11d111的博客-CSDN博客_yolov5模型
百度PaddleDetection也出了一个PP-YOLO模型基于YOLO v3的优化模型在COCO数据集上的mAP和执行速度要比YOLO v4好。
2SSD
SSD(Single Shot MultiBox Detector)于2016年提出,是经典的单阶段目标检测模型之一。具体算法细节可参考
目标检测|SSD原理与实现 - 知乎
3. 模型解析
下载地址GitHub - ultralytics/yolov5: YOLOv5 in PyTorch ONNX CoreML TFLiteYOLOv5 in PyTorch ONNX CoreML TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.https://github.com/ultralytics/yolov5
该地址中已包含简单调用可作为简单参考。
3.1. 文件内容解析
从上述地址下载文件解压之后获得如下文件 data数据文件夹————hyps超参数文件 ————imagesyolo v5测试的两张图片zidian.jpgbus.jpg ————各项数据集的yaml文件里边包括存储路径path、train、val、分类数量number of classes,分类名称、download下载路径等信息 models模型文件夹————hyps模型文件包含模型的anchors、backbone、head等参数 ————模型配置不同的yolo v5模型的配置精度和效果不一样有smxln五种。
runs运行结果文件运行之后会出现————detect测试模型输出图片并在图片中标注出物体和概率 ————train训练模型输出内容模型(最好、最新)权重、混淆矩阵、F1曲线、超参数文件、P曲线、R曲线、PR曲线、结果文件loss值、P、R等
utils工具文件夹detect.py测试文件export.pyhubconf.pyrequirement.txt可以通过pip install requirement进行依赖环境下载。train.py训练文件tutorial.ipynbval.pyyolov5s.pt自行下载的这个是yolov5轻量级的模型
3.2. 数据集
3.2.1. COCO数据集
COCO的 全称是Common Objects in COntext是微软团队提供的一个可以用来进行图像识别/图像分割/语义标注的数据集标注信息包括类别,位置和语义文本。MS COCO数据集中的图像分为训练、验证和测试集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像其使用了亚马逊的Mechanical TurkAMT。常用的场景有目标实例目标上的关键点、看图说话标注内容为json格式。
3.2.2. VOC数据集
PASCAL VOCPattern Analysis Statistical modellingComputational and Learning Visual Object Classes是一个用于图像分类/识别/分割的数据集。有人类、动物、交通工具室内四个大类20个小的目标类别。标注信息以XML格式保存。
3.3. 模型
YOLO v5的模型版本有s、m、l、x、n共5个不同精度的模型引入了depth_multiple和width_multiple系数来得到不同大小模型,depth_multiple表示channel的缩放系数就是将配置里面的backbone和head部分有关通道的设置全部乘以该系数即可。而width_multiple表示BottleneckCSP模块的层缩放系数将所有的BottleneckCSP模块的number系数乘上该参数就可以最终的层个数。可以发现通过这两个参数就可以实现不同大小不同复杂度的模型设计。比yolov4更加灵活。
4. 应用
4.1. detect测试
#不要有中文路径
python detect.py --source ./data/images/bus.jpg --weights yolov5s.pt
可配置参数
#--weights模型的权重参数文件
parser.add_argument(--weights, nargs, typestr, defaultROOT / yolov5s.pt, helpmodel path(s))
#--source 数据资源图片或视频地址
parser.add_argument(--source, typestr, defaultROOT / data/images, helpfile/dir/URL/glob, 0 for webcam)
#--imgsz--img--img-size 图像尺寸默认为640
parser.add_argument(--imgsz, --img, --img-size, nargs, typeint, default[640], helpinference size h,w)
#置信度阈值默认0.25
parser.add_argument(--conf-thres, typefloat, default0.25, helpconfidence threshold)
#iou交并比阈值默认0.45
parser.add_argument(--iou-thres, typefloat, default0.45, helpNMS IoU threshold)
#一张图片中最大识别种类的个数默认为1000
parser.add_argument(--max-det, typeint, default1000, helpmaximum detections per image)
#运行设备方式GPU或者CPU
parser.add_argument(--device, default, helpcuda device, i.e. 0 or 0,1,2,3 or cpu)
#展示结果图片
parser.add_argument(--view-img, actionstore_true, helpshow results)
#保存结果文件
parser.add_argument(--save-txt, actionstore_true, helpsave results to *.txt)
#保存置信度
parser.add_argument(--save-conf, actionstore_true, helpsave confidences in --save-txt labels)
#保存截取过得预测框
parser.add_argument(--save-crop, actionstore_true, helpsave cropped prediction boxes)
#不保存图片或视频
parser.add_argument(--nosave, actionstore_true, helpdo not save images/videos)
#指定分类
parser.add_argument(--classes, nargs, typeint, helpfilter by class: --classes 0, or --classes 0 2 3)
#未知的NMS
parser.add_argument(--agnostic-nms, actionstore_true, helpclass-agnostic NMS)
#增强推断
parser.add_argument(--augment, actionstore_true, helpaugmented inference)
#可视化特征
parser.add_argument(--visualize, actionstore_true, helpvisualize features)
#更新所有模型
parser.add_argument(--update, actionstore_true, helpupdate all models)
#保存结果在项目里边
parser.add_argument(--project, defaultROOT / runs/detect, helpsave results to project/name)
#保存结果在name里边
parser.add_argument(--name, defaultexp, helpsave results to project/name)
#项目存在则不增加
parser.add_argument(--exist-ok, actionstore_true, helpexisting project/name ok, do not increment)
#bbox边界框的边界的厚度像素
parser.add_argument(--line-thickness, default3, typeint, helpbounding box thickness (pixels))
#隐藏labels
parser.add_argument(--hide-labels, defaultFalse, actionstore_true, helphide labels)
#隐藏置信度
parser.add_argument(--hide-conf, defaultFalse, actionstore_true, helphide confidences)
#使用FP16 half-precision
parser.add_argument(--half, actionstore_true, helpuse FP16 half-precision inference)
#使用opencv的DNN
parser.add_argument(--dnn, actionstore_true, helpuse OpenCV DNN for ONNX inference)
4.2. train训练
#默认coco数据集
python train.py --weights yolov5s.pt --epochs 5
可配置参数未展示完全
#模型的权重参数文件
parser.add_argument(--weights, typestr, defaultROOT / yolov5s.pt, helpinitial weights path)
#模型yaml文件路径
parser.add_argument(--cfg, typestr, default, helpmodel.yaml path)
#数据集的yaml文件
parser.add_argument(--data, typestr, defaultROOT / data/coco128.yaml, helpdataset.yaml path)
#超参数文件
parser.add_argument(--hyp, typestr, defaultROOT / data/hyps/hyp.scratch.yaml, helphyperparameters path)
#训练批次
parser.add_argument(--epochs, typeint, default300)
#批次大小
parser.add_argument(--batch-size, typeint, default16, helptotal batch size for all GPUs)
#图片文件大小
parser.add_argument(--imgsz, --img, --img-size, typeint, default640, helptrain, val image size (pixels))
4.3. 数据标注
常用工具Labelimg,支持yolo v5的格式对真实框数据进行归一化处理 常用工具Calabeler支持xmljsonMongoDB格式数据集在进行yolo v3模型使用时还需进行边框值归一化处理。 4.4. 使用自己的数据集进行训练
python train.py --weights yolov5s.pt --data ./data/dataset.yaml --cfg ./models/yolov5s.yaml --epochs 50 --batch-size 8 --device 0
1数据集文件
如果是本地文件数据集包含路径分类数量分类类别 2权重文件
可以自行下载yolov5s.pt文件这个是精度为s的yolo v5模型。
5. 总结
想要实现其他模型步骤和现在类似但是会出现GPU资源不够用和CPU训练较慢的问题再者模型的原理细节也值得反复推敲。