雄县有做网站的吗,小公司网站开发,网站建设云技术公司推荐,国人在线做网站怎么样Yolov5
Anchor
#xff11;#xff0e;Anchor是啥#xff1f; anchor字面意思是锚#xff0c;是个把船固定的东东#xff08;上图#xff09;#xff0c;anchor在计算机视觉中有锚点或锚框#xff0c;目标检测中常出现的anchor box是锚框#xff0c;表示固定的参考框…Yolov5
Anchor
Anchor是啥 anchor字面意思是锚是个把船固定的东东上图anchor在计算机视觉中有锚点或锚框目标检测中常出现的anchor box是锚框表示固定的参考框。
目标检测是在哪里有什么的任务在这个任务中目标的类别不确定、数量不确定、位置不确定、尺度不确定。传统非深度学习方法和早期深度学习方法都要金字塔多尺度遍历滑窗的方式逐尺度逐位置判断这个尺度的这个位置处有没有认识的目标这种穷举的方法非常低效。
最近SOTA的目标检测方法几乎都用了anchor技术。首先预设一组不同尺度不同位置的anchor覆盖几乎所有位置和尺度每个anchor负责检测与其交并比大于阈值 (训练预设值常用0.5或0.7) 的目标anchor技术将问题转换为这个固定参考框中有没有认识的目标目标框偏离参考框多远不再需要多尺度遍历滑窗真正实现了又好又快如在Faster R-CNN和SSD两大主流目标检测框架及扩展算法中anchor都是重要部分。
目标检测中的固定的参考框
yolov5s.yaml
# YOLOv5 by Ultralytics, AGPL-3.0 license# Parameters
nc: 80 # number of classes
# 控制模型的大小
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:- [10,13, 16,30, 33,23] # P3/8 目标框anchor是原图 八分之一stride的大小- [30,61, 62,45, 59,119] # P4/16 十六分之一- [116,90, 156,198, 373,326] # P5/32
#感受野比较小适合小目标检测浅层次的feature
#往下感受野变大适合检测大物体
# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args]
# number(layer重复的次数 实际上会乘上depth_multiple: 0.331*0.33)
# args(每层输出的channel实际上会乘上width_multiple: 0.50 64*0.50
# 向上取整
#每行是一个layer的类别
# 第一列输入的feature从哪儿来的-1表示输入来自上一层的输出
# [64, 6, 2, 2] 64是输出的channel输入channel由上一层决定6是卷积核大小stridepadding[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
# 1-P2/4第一层p2 4 featuremap的大小变成了原图的 四分之一[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 9# SPPF 不同尺度feature的融合]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, C3, [512, False]], # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 4], 1, Concat, [1]], # cat backbone P3[-1, 3, C3, [256, False]], # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]], # cat head P4[-1, 3, C3, [512, False]], # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]], # cat head P5[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
#20*20*1024的feature map[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)]
bottleneck 和detect部分.pt文件 训练文件
路径在这
detect.py
核心部分
# 通过命令行设置其中的一些参数
# 不同文件对应不同的模型(weights不同目标检测的置信度不同# --source输入是个文件夹会对文件夹下所有的文件进行检测
也可以指定一张图片的相对路径
可以是视频会分成一帧一帧来处理
只支持YouTube视频链接别的视频要下载下来
检测不到的objections 是因为没有进行标记
if __name__ __main__:parser argparse.ArgumentParser()parser.add_argument(--weights, nargs, typestr, defaultyolov5l.pt, helpmodel.pt path(s))parser.add_argument(--source, typestr, defaultdata/images, helpsource) # file/folder, 0 for webcamparser.add_argument(--img-size, typeint, default640, helpinference size (pixels))parser.add_argument(--conf-thres, typefloat, default0.25, helpobject confidence threshold)置信度检测结果某个区域置信度大于0.25就当作是个物体实际运用过程中对参数进行调整和确认的parser.add_argument(--iou-thres, typefloat, default0.45, helpIOU threshold for NMS)default0.45iou的值大于阈值就当作一个objection从两个框中任选一个来表示这个物体小于阈值就当作不同的物体设置为0框和框之间不会有交集parser.add_argument(--device, default, helpcuda device, i.e. 0 or 0,1,2,3 or cpu)-- device:使用CPU还是GPU可以不同设置默认是空parser.add_argument(--view-img, actionstore_true, helpdisplay 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(--nosave, actionstore_true, helpdo not save images/videos)parser.add_argument(--classes, nargs, typeint, helpfilter by class: --class 0, or --class 0 2 3)parser.add_argument(--agnostic-nms, actionstore_true, helpclass-agnostic NMS)增强检测结果的一些方式 parser.add_argument(--augment, actionstore_true, helpaugmented inference)parser.add_argument(--update, actionstore_true, helpupdate all models)parser.add_argument(--project, defaultruns/detect, helpsave results to project/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)opt parser.parse_args()print(opt)check_requirements(exclude(pycocotools, thop))通过命令行设置其中的一些参数不同文件对应不同的模型(weights不同目标检测的置信度不同# --source输入是个文件夹会对文件夹下所有的文件进行检测
也可以指定一张图片的相对路径
可以是视频会分成一帧一帧来处理
只支持YouTube视频链接别的视频要下载下来
检测不到的objections 是因为没有进行标记parser.add_argument(--img-size, typeint, default640, helpinference size (pixels))
对输入的image进行 resize再送入神经网络中
这些训练模型指定image size是640
训练过程网络运算过程中对图片大小进行缩放会恢复输入输出尺寸其实保持不变
最好是和训练模型指定的image size进行匹配不匹配也没关系运行结果 进行实时检测rstp链接
通过手机电脑摄像头检测