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

刘家窑网站建设网页设计作业成品导航条代码

刘家窑网站建设,网页设计作业成品导航条代码,微信推广平台哪里找,网页设计旅游哈尔滨代码原文发表在#xff1a;语雀文档0.前言本文为Darknet框架下#xff0c;利用官方VOC数据集的yolov3模型训练#xff0c;训练环境为#xff1a;Ubuntu18.04下的GPU训练#xff0c;cuda版本10.0#xff1b;cudnn版本7.6.5。经过一晚上的训练#xff0c;模型20个类别的mAP达到…原文发表在语雀文档0.前言本文为Darknet框架下利用官方VOC数据集的yolov3模型训练训练环境为Ubuntu18.04下的GPU训练cuda版本10.0cudnn版本7.6.5。经过一晚上的训练模型20个类别的mAP达到74%。主要模块概述源码编译功能测试模型训练模型验证【概述】主要介绍yolo系列模型和darknet框架的关系、资源网站和数据集下载 【源码编译】主要是用官方源码和make命令编译出Linux下可执行文件包括cudacudnn的设置 【功能测试】主要是用官网给出的demo和与训练模型来进行图片测试 【模型训练】主要是用darknetyolov3模型训练VOC图像数据集VOC2007VOC2012 【模型验证】即用训练好的模型检测模型训练效果.1.概述官网https://pjreddie.com/ 1.1 YoloYolo系列模型v1~v3在近年些来的目标检测领域非常火热Yolo为You only look once的缩写同时也表明了其特点只需要一次即可完成从图像分割到检测故其被称为one-stage系列模型的鼻祖。two-stage类目标检测模型如Fast R-CNN、Faster R-CNN1.2 Darknetyolo系列就是深度学习领域中用于目标检测的模型yolov1~v3那么darknet是什么两者关系如何 darknet是作者用c和cuda编写的用于深度学习模型训练的框架支持CPU和GPU训练是个非常简单轻量级框架就和Tensorflow,MxnetPytorch,Caffe一样虽然功能没有它们多不过小也有小的优势如果你会c语言可以对其进行充分地利用和改造或者读读源码看一下其实现也会收货满满 So,总结一下Darknet是深度学习框架yolov1~v3是yolo系列的目标检测模型1.3 资源下载官网https://pjreddie.com/ 源码Darknet源码 https://github.com/pjreddie/darknetDarknet是用纯c和cuda编写的要想用darknet来训练模型最好用Linux/Unix系统官方也提供了python的接口如果是Windows系统可以利用网友开源实现https://github.com/AlexeyAB/darknet可以直接下载zip包darknet-master.zip也可直接执行 git clonehttps://github.com/pjreddie/darknet将源码下载到本地权重文件yolov3-tiny.weightsyolov2.weights yolov3.weightsdarknet53.conv.74VOC数据集VOCtrainval_11-May-2012.tarVOCtrainval_06-Nov-2007.tar VOCtest_06-Nov-2007.tar其他YOLO-V3可视化训练过程中的参数绘制loss、IOU、avg Recall等的曲线图 AlexyAB大神总结的优化经验2.源码编译2.1 编辑Makefile指定是否使用GPU 在执行make指令编译之前需要编辑一下makefile来指定是否需要用GPU(cuda)如果用cuda是否需要用cudnn加速是否需要用opencv等。我这里是用GPU且需要用CUDNN加速的不使用OpenCV。 Makefile的前5行如下这5项内容0表示不启用1表示启用可根据需求自己配置。GPU 是否启用GPU1CUDNN 是否启用CUDNN加速若GPU 1则CUDNN可选1或0GPU0则CUDNN0OPENCV 是否启用OpenCV,启用的话需先编译安装好启用可支持对视频和图像流文件处理OPENMP 是否启动多核CPU来加速Yolo,如果是用CPU训练建议开启1DEBUG 表示编译的Yolo版本为是否为DEBUG版 如果不使用GPU则GPU0,CUDNN0还有一点需注意如果在shell执行nvcc找不到命令没有添加到环境变量则需要将nvcc命令的全路径写出来 指定cuda的路径 如果不使用GPU,则此步可忽略如果使用GPU,则需要指定cuda路径。官方的Makefile默认的cuda路径为/usr/local/cuda如果你安装了多个cuda或者cuda路径更改过则需要指定你的cuda路径这里需要改两处51行的COMMON和53行的LDFAGS 2.2 执行make 执行make编译完成后在项目主目录下生成可执行的darknet文件。然后我们就可以用这个可执行文件来进行模型训练和测试了3.功能测试将下载好的权重文件放入主目录下然后cd到该目录下执行./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg如果你看到如下输出且在主目录下找到一张predictions.jpg的图片则执行成功表明上一步骤中编译的darknet可以正常使用。 你也可以指定一个阈值yolo默认输出置信度0.25的预测框你也可以自行指定./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0.45-thresh 0.45表示置信度低于45%的预测框都不会被输出。除了使用经典的yolov3模型外你还可以换一个模型尝试譬如yolov3-tiny.weights./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg当然也可以通过连接摄像头实现实时视频画面预测。需要编译时添加opencv./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights video file4.模型训练4.1 数据准备模型训练前首先准备数据集我们用VOC数据集将VOC数据集解压解压后共同存放在VOCevkit文件夹中我将VOCevkit放在了darknet主文件夹/data/VOC/下。 cd到/VOC目录下下载voc_label.py 并运行python voc_label.py可以将该脚本复制到/scripts下留作备份文件夹下会生成7个.txt文件 如果你的voc_label.py脚本是从官网wget https://pjreddie.com/media/files/voc_label.py下载的则需要在脚本57行处额外加上如下两行内容os.system(cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt train.txt) os.system(cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt train.all.txt)目的将2007年的训练和验证图像2012年的图像都放入了train.txt用于集中训练4.2 修改配置文件voc.data配置cfg/voc.data,来确定你需要检测的目标类别数量和名称修改train和valid的图片资源路径。训练资源指向train.txt测试/验证资源指向2007_test.txt VOC数据集默认的类别数量为20个名称在data/voc.names中 我这里使用默认的20个类别所以无需修改如果你只想检测其中的几个类别譬如person和car那么可以设置voc.data中classes2,names只保留person和car这两种不过后面相应的需要更改yolov3-voc.cfg里的卷积层配置等。4.3 修改yolov3-voc.cfgyolov3-voc.cfg文件定义了yolo的卷积神经网络模型和超参数配置等。这里需要注意训练时需要将#Testing区块下的batch和subvisions注释掉测试和验证时则放开注释同时注释掉#Training区块下的内容。 训练时可以根据自己GPU的内存来设置批的大小batch可设为16、32、64、128 验证时batch和subvisions同时设为1即可。 4.4 开始训练cd回项目主目录将darknet53.conv.74权重放入主目录下运行./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74如果报错提示cuda内存溢出可以降低batch再次运行运行过程中可以通过nvidia-smi查看显存占用情况 训练过程中会持续往backup/下生成权重文件如yolov3-voc_100.weights、yolov3-voc_200.weights....5.模型验证检验生成的模型权重文件、测试准确率和map等指标。验证前需要将yolov3-voc.cfg中的batch和subdivisions都改成1。然后找到需要测试的权重文件默认权重文件保存在项目目录/bakcup/下我选择这个yolov3-voc_10000.weights训练大约一个晚上12小时左右loss在0.6多。 5.1 测试测试一我们从VOC数据集中随便找一找图片来测试一下这里我选取000275.jpg放入主目录下运行./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_10000.weights 000275.jpg运行结束会在控制台打印出标注出的目标类别以及置信度、同时会在目录下生成一张标注图片predictions.jpg ** 测试二再随便找一张图片试试./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_10000.weights data/person.jpg5.2 验证测试只能一张张地直观感受下模型的训练效果看看标注出的目标是否正确通过验证才能确定模型的整体训练效果验证时会用模型对所有的4952张测试集图片进行预测同时与正确结果进行比对得出一个模型预测准确率。验证测试集可以运行以下脚本进行验证./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_10000.weights验证完会在results文件夹下生成20个类别的验证结果txt文件 默认的文件命名规则是comp4_det_test_ 类别名称 .txt如bird类生成comp4_det_test_bird.txt文件。 如图第一列000053表示图像编号第二列为置信度后4列为检测出的目标框坐标计算map计算map,我们需要两个python文件voc_eval.pycompute_mAP.py其中voc_eval.py是github上开源项目的代码voc_eval.pycompute_mAP.py需要我们自己编写voc_eval.py 我们为了适配darknet中voc数据集的验证需要对源码做几处修改 a.源码第9行import cPickle 改为import _pickle as cPickle因为源码是python2.x版本如果python3.x版本的运行会报错故需要修改。b.源码103行 imagenames [x.strip() for x in lines]改为imagenames [x.strip().split(/)[-1].split(.)[0] for x in lines]这个主要是为了方便适配2007_test.txt因为我们验证时采用的是2007_test.txt中的测试集图片文件中存放的是图片的全路径而imagenames需要用的是文件名、所以需要将全路径做个转换截取到文件名。c.115行with open(cachefile, w) as f:和 119行with open(cachefile, r) as f:改成with open(cachefile, wb) as f: with open(cachefile, rb) as f:如果不修改成‘wb’和‘rb’存储二进制格式运行时会报错compute_mAP.py 新建compute_mAP.py文件用于调用voc_eval.py,内容如下:from voc_eval import voc_eval import os map_ 0 # classnames填写训练模型时定义的类别名称 classnames [aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,diningtable,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor] for classname in classnames:ap voc_eval(../results/{}.txt, ../data/VOC/VOCdevkit/VOC2007/Annotations/{}.xml, ../data/VOC/2007_test.txt, classname, .)map_ ap#print (%-20s % (classname _ap:)%s % ap)print (%s % (classname _ap:)%s % ap) # 删除临时的dump文件 if(os.path.exists(annots.pkl)):os.remove(annots.pkl)print(cache file:annots.pkl has been removed!) # 打印map map map_/len(classnames) #print (%-20s % map: %s % map) print (map:%s % map)我这里在项目主目录下新建了一个【yolo-compute-util】文件夹将两个.py文件放在文件夹中cd /yolo-compute-util然后运行python compute_mAP.py即可根据results中的验证结果统计出各个类别的ap,以及汇总的map。 可以看见经过1晚上的训练我们的模型——yolov3-voc_10000.weights的mAP是0.740虽然没有达到yolov2系列76.8的水平不过一晚上的训练能达到如此程度也是挺高了。
http://www.zqtcl.cn/news/267321/

相关文章:

  • 网站模板用什么软件做泉州网站建设轩奇网讯
  • 网站开发必备人员网页设计图片居中代码
  • 网站列表页怎么做的百度seo优
  • 做网站销售好不好企业seo培训
  • 网站制作排版越南网站建设
  • 满城建设局网站我要买房网
  • 长沙百度提升排名南宁网站seo公司
  • 凡科网做网站怎样东莞寮步汽车城
  • 做百度网站费用多少基于html5的移动端网站开发
  • 专业做网站设计哪家好大型网站技术方案
  • 海外医疗兼职网站建设wordpress 最受欢迎主题
  • 网站改版方案案例入门级网页设计培训学员
  • 安徽优化网站运营平台
  • 小型企业网站设计教程面备案网站建设
  • 重庆业务外包网站建设办公室装修一般多少钱一个平方
  • 网站查询域名ip解析手机短视频网站的建设
  • 甘肃机械化建设工程有限公司网站微小店网站建设价格
  • 个人空间网站建设报告网络游戏交易平台
  • 深圳医疗网站建设中小企业网站功能
  • 汕头集团做网站方案建设网站要买空间吗
  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学
  • 网站建设推广重要性河北高端网站建设
  • 网站的seo方案怎么做wordpress自动转内链
  • 番禺手机网站制作推广wordpress远程数据库
  • 企业网站seo外包 s深圳国内设计网站
  • 临海高端营销型网站建设地址免费网站alexa排名查询
  • 做企业网站的轻量级cms建设电子商务网站流程图
  • 淘宝网站设计分析国内在线免费服务器
  • wordpress网站文章加密网站建设 博采网络