当前位置: 首页 > news >正文

网站建设考察报告wordpress格行代码6

网站建设考察报告,wordpress格行代码6,做网站背景图片要多大,企业建设营销网站的基本步骤有哪些文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 #x1f525; 优质竞赛项目系列#xff0c;今天要分享的是 #x1f6a9; 基于深度学习YOLO抽烟行为检测 该项目较为新颖#xff0c;适合作为竞赛课… 文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 优质竞赛项目系列今天要分享的是 基于深度学习YOLO抽烟行为检测 该项目较为新颖适合作为竞赛课题方向学长非常推荐 学长这里给一个题目综合评分(每项满分5分) 难度系数3分工作量3分创新点4分 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate 1 课题背景 公共场合抽烟的危害很大国家也相应地出台了在公共场合禁烟的政策。以前实行相关的政策都是靠工作人员巡逻发现并出言禁止这样做效率很低下。计算机视觉领域发展迅速而抽烟检测也属于一种计算机视觉目标检测的行为可以采用目标检测的方法来实现。目前目标检测在很多领域都取得显著成就但是在抽烟检测领域方面进行研究却几乎没有。该研究可以有效节省成本对公共场合禁烟政策的实行有很大的推动作用。 2 实现效果 左图为原图右图为推理后的图片以图片方式展示视频流和实时流也能达到这个效果由于视频转GIF大小原因这里暂不演示。 3 Yolov5算法 3.1 简介 YOLO系列是基于深度学习的回归方法。该系列陆续诞生出YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5。YOLOv5算法它是一种单阶段目标检测的算法该算法可以根据落地要求灵活地通过chaneel和layer的控制因子来配置和调节模型所以在比赛和落地中应用比较多。同时它有YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s四种模型。 具有以下优点 在pytorch环境下编写可以很容易编译成ON⁃NX和Core ML;运行速度很快每秒可以达到140FPS的速度模型精度高集成了YOLOv3和YOLOv4的部分优秀特性进行了推陈出新的改进。 3.2 相关技术 Mosaic数据增强 Mosaic数据增强技术采用了四张图片的随机缩放、随机剪裁、随机排布的方式对数据进行拼接相比CutMix数据增强多用了两张图片。在目标识别过程中要识别的目标有大目标、中等目标、小目标并且三种目标的占比例不均衡其中小目标的数量是最多的但是出现的频率很低这种情况就会导致在bp时对小目标的优化不足模型正确识别小目标的难度比识别中、大目标的难度要大很多于是对于小目标来说很容易出现误检和漏检的情况。Mosaic数据增强技术做出改进后上述的问题得到有效的解决。 该技术的优点是 丰富了数据集采用“三个随机”的方式对数据进行拼接丰富了检测的数据集尤其是随机缩放增加了很多小目标克服了小目标的不足让网络的鲁棒性得到提高减少GPU的使用在Mosaic增强训练时四张图片拼接在一起GPU可以直接计算四张图片的数据让Mini-batch的大小减少了很多这使得一个GPU就可以达到比较可观的效果。 自适应anchor 自适应anchor是checkanchors函数通过遗传算法与Kmeans迭代算出的最大可能召回率的anchor组合。在网络模型的训练过程中网络在初始化的锚框的基础上输出预测框然后与真实框groundtruth进行对比计算两个框之间的差值再根据差值进行反向更新迭代网络参数最后求出最佳的锚框值。自适应的anchor能够更好地配合网络训练提高模型的精度减少对anchor的设计难度具有很好的实用性。 自适应图片缩放 为了提高模型的推理速度YOLOv5提出自适应图片缩放根据长宽比对图像进行缩放并添加最少的黑边减少计算量。该方法是用缩放后的长边减去短边再对32进行取余运算求出padding。在训练时并没有采用缩减黑边的方法该方法只是在测试模型推理的时候才使用这样提高了目标检测的准确率和速度。 Focus结构 该结构采用切片操作将特征切片成四份每一份将当成下采样的特征然后在channel维度进行concat。例如原始608 608 3的数据图片经过切片操作先变成304 304 12的特征图再经过一次32个卷积核的卷积操作变成304 304 32的特征图。 CSP结构 YOLOv5中的CSP[5]结构应用于两处一处是CSP1X结构应用于Backbone的主干网络中另一处的CSP2X结构应用于Neck中用于加强网络的特征融合的能力。CSPNet主要从网络结构设计的角度解决推理中从计算量很大的问题。该结构的优点有1)增强CNN的学习能力使得模型在轻量化的同时保持较高的准确性2)减低计算的瓶颈问题3)减低内存的分险。 PFNPAN结构 这个结构是FPN和PAN的联合。FPN是自顶向下的将高层的特征信息通过上采样的方式进行传递融合得到进行预测的特征图而PAN正好与FPN的方向是相反的方向它是自底向上地采取特征信息。两个结构各自从不同的主干层对不同的检测层进行参数聚合。两个结构的强强联合让得到的特征图的特征更加明显和清楚。 Bounding box的损失函数 Bounding box损失函数[6]增加了相交尺度的衡量方式有效缓解了当两个框不相交和两个框大小完全相同的两种特殊情况。因为当预测框和目标框不相交时IOU0无法反应两个框距离的远近的时候此时的损失函数不可导两个框大小完全相同两个IOU也相同IOULOSS无法区分以上两种特殊情况。 nms非极大值抑制 在目标检测过程的后续处理中对于大量的目标框的筛选问题通常会进行nms操作以此来达到一个不错的效果。YO⁃LOv5算法同样采用了加权的nms操作。 4 数据集处理及实验 数据集准备 由于目前针对吸烟图片并没有现成的数据集我们使用Python爬虫利用关键字在互联网上获得的图片数据编写程序爬了1w张筛选下来有近1000张可用以及其他途径获取到的暂时可用数据集有5k张 深度学习图像标注软件众多按照不同分类标准有多中类型本文使用LabelImg单机标注软件进行标注。LabelImg是基于角点的标注方式产生边界框对图片进行标注得到xml格式的标注文件由于边界框对检测精度的影响较大因此采用手动标注并没有使用自动标注软件。 考虑到有的朋友时间不足博主提供了标注好的数据集和训练好的模型需要请联系。 数据标注简介 通过pip指令即可安装 ​ pip install labelimg在命令行中输入labelimg即可打开 5 部分核心代码 ​ # data/smoke.yaml# COCO 2017 dataset http://cocodataset.org# Download command: bash yolov5/data/get_coco2017.sh# Train command: python train.py --data ./data/coco.yaml# Dataset should be placed next to yolov5 folder:# /parent_folder# /coco# /yolov5# train and val datasets (image directory or *.txt file with image paths)train: data\train.txt # 上面我们生成的train根据自己的路径进行更改val: data\test.txt # 上面我们生成的test#test: ../coco/test-dev2017.txt # 20k images for submission to https://competitions.codalab.org/competitions/20794# number of classesnc: 1 #训练的类别# class namesnames: [smoke]# Print classes# with open(data/coco.yaml) as f:# d yaml.load(f, Loaderyaml.FullLoader) # dict# for i, x in enumerate(d[names]):# print(i, x)# model/yolov5s.yaml# parametersnc: 1 # number of classesdepth_multiple: 0.33 # model depth multiplewidth_multiple: 0.50 # layer channel multiple# anchorsanchors:- [116,90, 156,198, 373,326] # P5/32- [30,61, 62,45, 59,119] # P4/16- [10,13, 16,30, 33,23] # P3/8# YOLOv5 backbonebackbone:# [from, number, module, args][[-1, 1, Focus, [64, 3]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, BottleneckCSP, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 9, BottleneckCSP, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, BottleneckCSP, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 1, SPP, [1024, [5, 9, 13]]],]# YOLOv5 headhead:[[-1, 3, BottleneckCSP, [1024, False]], # 9[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, BottleneckCSP, [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, BottleneckCSP, [256, False]],[-1, 1, nn.Conv2d, [na * (nc 5), 1, 1]], # 18 (P3/8-small)[-2, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]], # cat head P4[-1, 3, BottleneckCSP, [512, False]],[-1, 1, nn.Conv2d, [na * (nc 5), 1, 1]], # 22 (P4/16-medium)[-2, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]], # cat head P5[-1, 3, BottleneckCSP, [1024, False]],[-1, 1, nn.Conv2d, [na * (nc 5), 1, 1]], # 26 (P5/32-large)[[], 1, Detect, [nc, anchors]], # Detect(P5, P4, P3)]# 训练部分主函数if __name__ __main__:check_git_status()parser argparse.ArgumentParser()parser.add_argument(--epochs, typeint, default300)parser.add_argument(--batch-size, typeint, default16)parser.add_argument(--cfg, typestr, defaultmodels/yolov5s.yaml, help*.cfg path)parser.add_argument(--data, typestr, defaultdata/smoke.yaml, help*.data path)parser.add_argument(--img-size, nargs, typeint, default[640, 640], helptrain,test sizes)parser.add_argument(--rect, actionstore_true, helprectangular training)parser.add_argument(--resume, actionstore_true, helpresume training from last.pt)parser.add_argument(--nosave, actionstore_true, helponly save final checkpoint)parser.add_argument(--notest, actionstore_true, helponly test final epoch)parser.add_argument(--noautoanchor, actionstore_true, helpdisable autoanchor check)parser.add_argument(--evolve, actionstore_true, helpevolve hyperparameters)parser.add_argument(--bucket, typestr, default, helpgsutil bucket)parser.add_argument(--cache-images, actionstore_true, helpcache images for faster training)parser.add_argument(--weights, typestr, default, helpinitial weights path)parser.add_argument(--name, default, helprenames results.txt to results_name.txt if supplied)parser.add_argument(--device, default0, helpcuda device, i.e. 0 or 0,1,2,3 or cpu)parser.add_argument(--adam, actionstore_true, helpuse adam optimizer)parser.add_argument(--multi-scale, actionstore_true, helpvary img-size /- 50%)parser.add_argument(--single-cls, actionstore_true, helptrain as single-class dataset)opt parser.parse_args()opt.weights last if opt.resume else opt.weightsopt.cfg check_file(opt.cfg) # check fileopt.data check_file(opt.data) # check fileprint(opt)opt.img_size.extend([opt.img_size[-1]] * (2 - len(opt.img_size))) # extend to 2 sizes (train, test)device torch_utils.select_device(opt.device, apexmixed_precision, batch_sizeopt.batch_size)if device.type cpu:mixed_precision False# Trainif not opt.evolve:tb_writer SummaryWriter(commentopt.name)print(Start Tensorboard with tensorboard --logdirruns, view at http://localhost:6006/)train(hyp)# Evolve hyperparameters (optional)else:tb_writer Noneopt.notest, opt.nosave True, True # only test/save final epochif opt.bucket:os.system(gsutil cp gs://%s/evolve.txt . % opt.bucket) # download evolve.txt if existsfor _ in range(10): # generations to evolveif os.path.exists(evolve.txt): # if evolve.txt exists: select best hyps and mutate# Select parent(s)parent single # parent selection method: single or weightedx np.loadtxt(evolve.txt, ndmin2)n min(5, len(x)) # number of previous results to considerx x[np.argsort(-fitness(x))][:n] # top n mutationsw fitness(x) - fitness(x).min() # weightsif parent single or len(x) 1:# x x[random.randint(0, n - 1)] # random selectionx x[random.choices(range(n), weightsw)[0]] # weighted selectionelif parent weighted:x (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination# Mutatemp, s 0.9, 0.2 # mutation probability, sigmanpr np.randomnpr.seed(int(time.time()))g np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gainsng len(g)v np.ones(ng)while all(v 1): # mutate until a change occurs (prevent duplicates)v (g * (npr.random(ng) mp) * npr.randn(ng) * npr.random() * s 1).clip(0.3, 3.0)for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300)hyp[k] x[i 7] * v[i] # mutate# Clip to limitskeys [lr0, iou_t, momentum, weight_decay, hsv_s, hsv_v, translate, scale, fl_gamma]limits [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)]for k, v in zip(keys, limits):hyp[k] np.clip(hyp[k], v[0], v[1])# Train mutationresults train(hyp.copy())# Write mutation resultsprint_mutation(hyp, results, opt.bucket)# Plot results# plot_evolution_results(hyp) ​ 6 最后 更多资料, 项目分享 https://gitee.com/dancheng-senior/postgraduate
http://www.sadfv.cn/news/196878/

相关文章:

  • dedecms下载站天津建设网官方网站
  • 建个网站公司j建网站
  • 网站域名列表是什么id怎么转wordpress
  • 夺宝网站制作wordpress 启用ssl
  • ppt链接网站怎么做巴中区建设局网站
  • 国外网站界面使用jquery做网站
  • 做响应网站的素材网站wap网站开发语言
  • 做网站接口多少钱wordpress文章名字相同的不发布
  • 16岁做分期网站全国各大网站
  • 最新远程网站建设服务器做婚礼效果图的网站有哪些
  • 建网站服务器用哪种长安网站制作公司
  • 网站建设人工智能青岛建网站公司哪家专业
  • 国内哪家网站建设公司好商城网站建站程序
  • 织梦网站如何更新系统种植类网站模板
  • 徐州网站制作费用网络运维工程师周报
  • 网站开发平台选择西安网站建设APP开发
  • 美橙网站建设外包
  • c 网站开发的书籍google官网登录入口
  • 网站公司设计 网站首页网线制作ppt
  • 池州网站建设费用凡科互动抽奖
  • 工艺礼品东莞网站建设深圳保障性住房官网
  • 快速做效果图的网站叫什么品牌视觉识别系统案例
  • 上海知名网站制作公司辽宁建设考试培训网站
  • 网站基本代码网页展示模板
  • 有没有专做游戏脚本的网站年终总结汇报ppt模板
  • 免费手机网站源码网站视频大全
  • 产品运营方案网站优化关键词排名公司
  • 建各企业网站多少钱梵客家装
  • 网站建设报价多少钱建设部指定发布招标信息网站
  • wordpress热门主题seo免费软件