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

备案网站可以做接码平台么晋城市建设局网站

备案网站可以做接码平台么,晋城市建设局网站,网站建设培训教程新手入门到精通,怎么做自己的音乐网站目录 参考引用一、数据集介绍二、环境配置三、构建训练数据集四、修改配置文件五、训练及tensorboard可视化六、效果测试七、遇到的BUG 参考引用 你的陈某某-基于YOLOv5的PCB板缺陷检测 一、数据集介绍 印刷电路板#xff08;PCB#xff09;瑕疵数据集。它是一个公共合成P… 目录 参考引用一、数据集介绍二、环境配置三、构建训练数据集四、修改配置文件五、训练及tensorboard可视化六、效果测试七、遇到的BUG 参考引用 你的陈某某-基于YOLOv5的PCB板缺陷检测 一、数据集介绍 印刷电路板PCB瑕疵数据集。它是一个公共合成PCB数据集包含1386张图像具有6种缺陷漏孔、鼠咬、开路、短路、杂散、杂铜用于图像检测、分类和配准任务。 下载地址数据集 数据样本示例 二、环境配置 1、Gitub官网下载yolov5源码官方地址 2、Anaconda 安装配置省略 3、创建新的环境python3.8就行因为使用的是7.0的版本3.6有点低。 conda create -n pytorch python3.8.54、安装pytorchpytorch官网 conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia5、yolov5的依赖下载 根据下载的 yolov5中的requirements.txt进行安装缺啥补啥【注意具体安装以yolov5的readme.md为主】 pip install -r requirements.txt三、构建训练数据集 1、先构建数据集文件夹 下载好的PCB_DATASET解压后。是下面这种格式。 官网下载的PCB数据按照缺陷类划分文件夹的 将每个文件夹内的东西都复制出来到这个文件中。 然后删掉分类的文件夹。 images文件夹内的内容也是一样的。 ├── PCB_DATASET │ ├── Annotations 进行 detection 任务时的标签文件xml 形式文件名与图片名一一对应 │ ├── images 存放 .jpg 格式的图片文件 │ ├── ImageSets 存放的是分类和检测的数据集分割文件包含 train.txt,val.txt ,trainval.txt,test.txt │ ├── labels 存放label标注信息的txt文件与图片一一对应├── ImageSets(trainvaltest建议按照811比例划分) │ ├── train.txt 写着用于训练的图片名称 │ ├── val.txt 写着用于验证的图片名称 │ ├── trainval.txt train与val的合集 │ ├── test.txt 写着用于测试的图片名称2、训练数据生成分为两个代码训练集划分代码与用于yolo训练的txt格式代码 1训练集划分代码 在PCB_DATASET文件夹下新建ImageSets文件夹。 用途主要是将数据集分类成训练数据集和测试数据集默认trainvaltest按照比例进行随机分类运行后ImagesSets文件夹中会出现四个文件主要是生成的训练数据集和测试数据集的图片名称。 import os import randomtrainval_percent 0.9 train_percent 0.9 xmlfilepath D:\\pcb\\PCB_DATASET\\Annotations txtsavepath D:\\pcb\\PCB_DATASET\\ImageSets total_xml os.listdir(xmlfilepath)num len(total_xml) list range(num) tv int(num * trainval_percent) tr int(tv * train_percent) trainval random.sample(list, tv) train random.sample(trainval, tr)ftrainval open(txtsavepath\\trainval.txt, w) ftest open(txtsavepath\\test.txt, w) ftrain open(txtsavepath\\train.txt, w) fval open(txtsavepath\\val.txt, w)for i in list:name total_xml[i][:-4] \nif i in trainval:ftrainval.write(name)if i in train:ftrain.write(name)else:fval.write(name)else:ftest.write(name)ftrainval.close() ftrain.close() fval.close() ftest.close() 如下图。同时data目录下也会出现这四个文件内容是训练数据集和测试数据集的图片路径。 b用于yolo训练的txt格式代码 用途主要是将图片数据集标注后的xml文件中的标注信息读取出来并写入txt文件。 # xml解析包import xml.etree.ElementTree as ET import pickle import os# os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表from os import listdir, getcwd from os.path import joinsets [train, test, val] classes [missing_hole, mouse_bite, open_circuit, short, spur, spurious_copper] label_path D:\\pcb\\PCB_DATASET\\labels ImageSets D:\\pcb\\PCB_DATASET\\ImageSets images D:\\pcb\\PCB_DATASET\\images# 进行归一化操作def convert(size, box): # size:(原图w,原图h) , box:(xmin,xmax,ymin,ymax)dw 1./size[0] # 1/wdh 1./size[1] # 1/hx (box[0] box[1])/2.0 # 物体在图中的中心点x坐标y (box[2] box[3])/2.0 # 物体在图中的中心点y坐标w box[1] - box[0] # 物体实际像素宽度h box[3] - box[2] # 物体实际像素高度x x*dw # 物体中心点x的坐标比(相当于 x/原图w)w w*dw # 物体宽度的宽度比(相当于 w/原图w)y y*dh # 物体中心点y的坐标比(相当于 y/原图h)h h*dh # 物体宽度的宽度比(相当于 h/原图h)return (x, y, w, h) # 返回 相对于原图的物体中心点的x坐标比,y坐标比,宽度比,高度比,取值范围[0-1]# year 2012, 对应图片的id文件名def convert_annotation(image_id):将对应文件名的xml文件转化为label文件xml文件包含了对应的bunding框以及图片长款大小等信息通过对其解析然后进行归一化最终读到label文件中去也就是说一张图片文件对应一个xml文件然后通过解析和归一化能够将对应的信息保存到唯一一个label文件中去labal文件中的格式calss x y w h  同时一张图片对应的类别有多个所以对应的的信息也有多个# 对应的通过year 找到相应的文件夹并且打开相应image_id的xml文件其对应bund文件in_file open(D:\\pcb\\PCB_DATASET\\Annotations\\%s.xml % (image_id), encodingutf-8)# 准备在对应的image_id 中写入对应的label分别为# object-class x y width heightout_file open(label_path\\%s.txt % (image_id), w, encodingutf-8)# 解析xml文件tree ET.parse(in_file)# 获得对应的键值对root tree.getroot()# 获得图片的尺寸大小size root.find(size)# 如果xml内的标记为空增加判断条件if size ! None:# 获得宽w int(size.find(width).text)# 获得高h int(size.find(height).text)# 遍历目标objfor obj in root.iter(object):# 获得difficult difficult obj.find(difficult).text# 获得类别 string 类型cls obj.find(name).text# 如果类别不是对应在我们预定好的class文件中或difficult1则跳过if cls not in classes or int(difficult) 1:continue# 通过类别名称找到idcls_id classes.index(cls)# 找到bndbox 对象xmlbox obj.find(bndbox)# 获取对应的bndbox的数组 [xmin,xmax,ymin,ymax]b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text),float(xmlbox.find(ymax).text))print(image_id, cls, b)# 带入进行归一化操作# w 宽, h 高 b bndbox的数组 [xmin,xmax,ymin,ymax]bb convert((w, h), b)# bb 对应的是归一化后的(x,y,w,h)# 生成 calss x y w h 在label文件中out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)# 返回当前工作目录wd getcwd() print(wd)for image_set in sets:对所有的文件数据集进行遍历做了两个工作将所有图片文件都遍历一遍并且将其所有的全路径都写在对应的txt文件中去方便定位同时对所有的图片文件进行解析和转化将其对应的bundingbox 以及类别的信息全部解析写到label 文件中去最后再通过直接读取文件就能找到对应的label 信息# 先找labels文件夹如果不存在则创建if not os.path.exists(label_path):os.makedirs(label_path\\)# 读取在ImageSets/Main 中的train、test..等文件的内容# 包含对应的文件名称image_ids open(ImageSets\\%s.txt % (image_set)).read().strip().split()# 打开对应的2012_train.txt 文件对其进行写入准备list_file open(D:\pcb\PCB_DATASET\\%s.txt % (image_set), w)# 将对应的文件_id以及全路径写进去并换行for image_id in image_ids:list_file.write(images\\%s.jpg\n % (image_id))# 调用 year 年份 image_id 对应的文件名_idconvert_annotation(image_id)# 关闭文件list_file.close()# os.system(‘comand’) 会执行括号中的命令如果命令成功执行这条语句返回0否则返回1# 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) 运行后在labels文件夹中出现所有图片数据集的标注信息。 label文件夹中某文件内容如下 四、修改配置文件 1、数据集方面yolov5-7.0\data文件夹中新建一个yolovs-pcb.yaml文件内容设置如下 train: D:\\pcb\\PCB_DATASET\\train.txt val: D:\\pcb\\PCB_DATASET\\val.txt test: D:\\pcb\\PCB_DATASET\\test.txt# classesnc: 6 # number of classes names: [ missing_hole, mouse_bite, open_circuit, short, spur, spurious_copper ] # class names注意路径类别、标签名字与标注文件中一致 2、网络参数方面yolov5-7.0\model文件夹中复制yolov5s.yaml文件为yolov5s-pcb.yaml将内容进行修改 # Parametersnc: 6 # number of classes depth_multiple: 0.33 # model depth multiple width_multiple: 0.50 # layer channel multiple更改其中的nc即标签类别数目。一共是6类。 3、trian.py修改 主要用到的几个参数–weights–cfg–data–epochs–batch-size–img-size–project-workers 重点注意–weights–cfg–data其他的默认即可batch_sizeworkers根据自己电脑属性进行设置。 我的–weights–cfg–data设置如下 parser.add_argument(--weights, typestr, defaultyolov5s.pt, helpinitial weights path)parser.add_argument(--cfg, typestr, defaultmodels/yolov5s-pcb.yaml, helpmodel.yaml path)parser.add_argument(--data, typestr, defaultdata/PCB.yaml, helpdataset.yaml path)五、训练及tensorboard可视化 1、训练 两种方式pycharm中运行或者终端cmd运行看个人喜好 2、训练过程可视化 啰嗦一句yolov5-7.0文件夹中一个runs文件夹其中有检测结果和训练结果如runs\train\exp\results.csv中保存了每个epoch训练信息如下所示 可视化操作 a、打开一个新的终端激活环境 【注意使用tensorboard不需要安装tensorflow直接pip install xxx安装了即可使用yolov5安装文档会通过pip install -r requirements.txt自己安装上若没有再尝试单独装】 b、cd …\yolov5-7.0 c、tensorboard --logdirruns或者python -m tensorboard.main --logdirruns d、复制其中的网址去浏览器中打开推荐谷歌 e、可视化结果如下能够边训练边观察 3、在NVIDIA GeForce GTX 1650 8G显卡训练结果如下batch_size16workers8 注意可能 runs\train文件夹中会有多个exp文件如exp1,exp2等这是代表每一次新的训练。 当然你也可以修改本次训练结果的文件夹的名称。 六、效果测试 在CMD终端运行 python detect.py --source data_ready\01_missing_hole_01.jpg --weights runs\train\exp\weights\best.pt测试结果如下好像效果不咋地可以更换其他yolov5系列的网络试试或者聚类重选anchor 注在pycharm中运行检测只需更改train.py中的def parse_opt函数中的–source与–weights即可。 七、遇到的BUG 1、‘FreeTypeFont’ object has no attribute ‘getsize’ 运行时报错AttributeError: ‘FreeTypeFont’ object has no attribute ‘getsize’ 其实是pollow版本10.0之后删除了getsize的方法将pillow版本降低即可。 pip install Pillow9.5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
http://www.ihoyoo.com/news/34323.html

相关文章:

  • 网站怎样上线WordPress仪盘表半透明
  • 无忧网站模板长沙平面设计公司都有哪些
  • 泰安整站优化邯郸做移动网站价格表
  • 视频聚合网站怎么做不侵权定制家具如何选择
  • 在家做私房菜的网站做图片素材的网站
  • 国外做文化的网站网站怎样做301跳转
  • 学做效果图网站有哪些hao123从上网官网
  • 合肥品牌型网站建设地址公司建立网站怎么做分录
  • 做网站前两个月应该干什么wordpress首页自定义小工具
  • wordpress怎么在上面建几个分类seo的主要分析工具
  • 网站登记模板苏州公司注册代理
  • 上杭县城乡规划建设局网站济南mip网站建设
  • 怎样在各大网站做推广做网站智能工具
  • 国外商业网站建设推广赚钱返佣平台
  • 织梦网站后台进不去免费建微网站
  • 网站排名下降怎么上去wordpress连接自建数据库
  • 健身器械网站建设案例播视频网站开发
  • 做网站费是多少阳江网站建设推广公司电话
  • 免费网站空间免备案电脑培训学校哪家好
  • 郯城地建设局网站中国域名查询
  • 公司网站cmsppt设计器怎么打开
  • 怎样给自己的网站做优化做推广的技巧
  • 宁波市建设工程监理协会网站联想服务器怎么建设第二个网站
  • 多用户自助建站宁远县做网站的
  • 网站建设域名自己的服务器 做网站
  • 泰州网站建设价格网站建设设计服务公司
  • pr模板免费下载网站网站开发商城图片上传
  • 如何在建设部网站补录项目网站建设与管理项目1项目规划
  • 营销型企业网站的功能免费正能量erp软件下载
  • 山西长治做网站公司有哪些关键词排名的排名优化