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

邵阳学院研究生与学科建设处网站许昌中国建设银行官网站

邵阳学院研究生与学科建设处网站,许昌中国建设银行官网站,上海做网站最专业,网站默认模板前言 新年伊始#xff0c;ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本#xff0c;目前支持图像分类、物体检测和实例分割任务#xff0c;在还没有开源时就收到了用户的广泛关注。 值得一提的是#xff0c;在博主的印象中#xff0c;YOLO系…前言 新年伊始ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本目前支持图像分类、物体检测和实例分割任务在还没有开源时就收到了用户的广泛关注。 值得一提的是在博主的印象中YOLO系列都是完成目标检测方面的任务而YOLOv8中还可进行分类与语义分割任务。 无论哪个YOLOv8模型都有对应的预训练模型。目标检测和分割模型是在 COCO 数据集上预训练的而分类模型是在 ImageNet 数据集上预训练的。大家只需要下载对应模型即可。 前期准备 首先我们需要下载其源代码 https://github.com/ultralytics/ultralytics 随后我们使用Pycharm打开下载后的文件。 创建conda环境conda create -n yolov8 python3.8 在Pycharm中为项目选择conda环境 安装依赖 随后在我们的pycharm的Terminal中安装所需环境 这里由于博主将控制台改为了Linux系统的形式大家使用windows命令即可。 source activate yolov8 Linux下激活 activate yolov8 Windows下激活对于使用Pycharm连接远程服务器的安装方式可以先激活conda环境然后再切换到对应的文件目录下再执行安装命令 安装所需依赖包 pip install -r requirements.txt -i https://mirrors.bfsu.edu.cn/pypi/web/simple/安装成功了在setting中会显示出来。 注意其默认下载最新版的该版本中pytorch下载的为1.13由于博主没有与之对应的conda环境导致只能使用CPU进行运行因此博主需要自己再手动安装一下大家按照自己所需的即可。 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -c pytorch简单测试 首先使用他自带的权重文件进行检测测试。 下载权重文件 https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt 方法一 这里虽然在运行时会自动下载但有时却容易出错我们手动下载即可下载完成后将其放入ultralytics-main\ultralytics\yolo\v8\detect\yolov8n.pt目录同时运行该文件下的predict文件。 运行成功结果保存在下图箭头所指示的文件夹中 查看运行结果总体而言相比较博主原本的模型要强一些。 方法二 在该项目的readme中提到可以使用一下命令在控制台进行执行 yolo predict modelyolov8n.pt sourcehttps://ultralytics.com/images/bus.jpg但这个前提是需要安装ultralytics pip install ultralytics使用自制数据集进行训练 博主的数据集使用的时cadc数据集其标注方式为VOC格式我们需要将其转换为yolo格式并对其进行划分训练集验证集测试集。这里我们一定要将其转换为官方格式避免出错。 注意大家尽量按照我的这个步骤来进行数据集制作否则在进行训练时会报错 FileNotFoundError: train: No labels found in data\labels.cache, can not start training. 博主首先来讲一下流程首先我们需要得到VOC数据集的图像与标注文件随后我们要将该数据集的标注文件格式转换为YOLO标准格式随后我们将对数据集进行划分将图片保存在images中将标注文件放在labels中train与val文件夹内的文件分别对应训练集与验证集。 按照上面的说法我们在使用时只需要给出Annotations和JPEGImage文件夹即可。其余的文件都是通过voc2yolo8.py文件生成的。 完成后的文件目录格式如下 我们将使用voc2yolo文件来执行该过程 import xml.etree.ElementTree as ET import pickle import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile# 根据自己的数据标签修改 classes[car, truck, bus, person]def clear_hidden_files(path):dir_list os.listdir(path)for i in dir_list:abspath os.path.join(os.path.abspath(path), i)if os.path.isfile(abspath):if i.startswith(._):os.remove(abspath)else:clear_hidden_files(abspath)def convert(size, box):dw 1./size[0]dh 1./size[1]x (box[0] box[1])/2.0y (box[2] box[3])/2.0w box[1] - box[0]h box[3] - box[2]x x*dww w*dwy y*dhh h*dhreturn (x,y,w,h)def convert_annotation(image_id):in_file open(D:/Paper2023/ultralytics-main/ultralytics-main/data/Annotations/%s.xml %image_id)out_file open(D:/Paper2023/ultralytics-main/ultralytics-main/data/YOLOLabels/%s.txt %image_id, w)treeET.parse(in_file)root tree.getroot()size root.find(size)w int(size.find(width).text)h int(size.find(height).text)for obj in root.iter(object):#difficult obj.find(difficult).textcls obj.find(name).text#if cls not in classes or int(difficult) 1:#continuecls_id classes.index(cls)xmlbox obj.find(bndbox)b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text), float(xmlbox.find(ymax).text))bb convert((w,h), b)out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)in_file.close()out_file.close()wd os.getcwd() wd os.getcwd() data_base_dir os.path.join(wd, ) print(data_base_dir) if not os.path.isdir(data_base_dir):os.mkdir(data_base_dir) work_sapce_dir os.path.join(data_base_dir, ) if not os.path.isdir(work_sapce_dir):os.mkdir(work_sapce_dir) annotation_dir os.path.join(work_sapce_dir, Annotations/) if not os.path.isdir(annotation_dir):os.mkdir(annotation_dir) clear_hidden_files(annotation_dir) image_dir os.path.join(work_sapce_dir, JPEGImages/) if not os.path.isdir(image_dir):os.mkdir(image_dir) clear_hidden_files(image_dir) yolo_labels_dir os.path.join(work_sapce_dir, YOLOLabels/) if not os.path.isdir(yolo_labels_dir):os.mkdir(yolo_labels_dir) clear_hidden_files(yolo_labels_dir) yolov5_images_dir os.path.join(data_base_dir, images/) if not os.path.isdir(yolov5_images_dir):os.mkdir(yolov5_images_dir) clear_hidden_files(yolov5_images_dir) yolov5_labels_dir os.path.join(data_base_dir, labels/) if not os.path.isdir(yolov5_labels_dir):os.mkdir(yolov5_labels_dir) clear_hidden_files(yolov5_labels_dir) yolov5_images_train_dir os.path.join(yolov5_images_dir, train/) if not os.path.isdir(yolov5_images_train_dir):os.mkdir(yolov5_images_train_dir) clear_hidden_files(yolov5_images_train_dir) yolov5_images_test_dir os.path.join(yolov5_images_dir, val/) if not os.path.isdir(yolov5_images_test_dir):os.mkdir(yolov5_images_test_dir) clear_hidden_files(yolov5_images_test_dir) yolov5_labels_train_dir os.path.join(yolov5_labels_dir, train/) if not os.path.isdir(yolov5_labels_train_dir):os.mkdir(yolov5_labels_train_dir) clear_hidden_files(yolov5_labels_train_dir) yolov5_labels_test_dir os.path.join(yolov5_labels_dir, val/) if not os.path.isdir(yolov5_labels_test_dir):os.mkdir(yolov5_labels_test_dir) clear_hidden_files(yolov5_labels_test_dir)train_file open(os.path.join(wd, yolov8_train.txt), w) test_file open(os.path.join(wd, yolov8_val.txt), w) train_file.close() test_file.close() train_file open(os.path.join(wd, yolov8_train.txt), a) test_file open(os.path.join(wd, yolov8_val.txt), a) print(image_dir) list_imgs os.listdir(image_dir) # list image files probo random.randint(1, 100) print(1Probobility: %d % probo) print(list_imgs) for i in range(0,len(list_imgs)):path os.path.join(image_dir,list_imgs[i])if os.path.isfile(path):image_path image_dir list_imgs[i]voc_path list_imgs[i](nameWithoutExtention, extention) os.path.splitext(os.path.basename(image_path))(voc_nameWithoutExtention, voc_extention) os.path.splitext(os.path.basename(voc_path))annotation_name nameWithoutExtention .xmlannotation_path os.path.join(annotation_dir, annotation_name)label_name nameWithoutExtention .txtlabel_path os.path.join(yolo_labels_dir, label_name)probo random.randint(1, 100)print(2Probobility: %d % probo)if(probo 80): # train datasetif os.path.exists(annotation_path):train_file.write(image_path \n)convert_annotation(nameWithoutExtention) # convert labelcopyfile(image_path, yolov5_images_train_dir voc_path)copyfile(label_path, yolov5_labels_train_dir label_name)else: # test datasetif os.path.exists(annotation_path):test_file.write(image_path \n)convert_annotation(nameWithoutExtention) # convert labelcopyfile(image_path, yolov5_images_test_dir voc_path)copyfile(label_path, yolov5_labels_test_dir label_name) train_file.close() test_file.close()只需要修改代码中的路径就OK了。 随后还要创建一个yaml配置文件给出我们数据集路径与数据集相关信息 开始训练 找到train.py文件修改下图中框选的部分即可分别为权重文件与数据集配置文件。 此外关于batch-size,epoch等参数的配置在cfg文件夹下的default文件中。 修改完成后运行train.py即可。 值得一提的是在本地的环境配置中要求pytorch和cuda ,cudnn相对应而在安装时容易出问题而在服务器上安装时却十分轻松。 至于连接远程服务器的调试也是如法炮制。 训练完成 验证结果 推理结果 以上便是YOLOv8的调试训练与推理过程接下来博主还会对YOLOv8相关模型进行学习以期进行模型修改。 此外最后在运行完成时转换结果将csv作图时出现错误这个无伤大雅不用理会。 File /home/ubuntu/.conda/envs/yolov8/lib/python3.8/site-packages/matplotlib/pyplot.py, line 208, in _get_backend_modswitch_backend(rcParams._get(backend))File /home/ubuntu/.conda/envs/yolov8/lib/python3.8/site-packages/matplotlib/pyplot.py, line 331, in switch_backendmanager_pyplot_show vars(manager_class).get(pyplot_show) TypeError: vars() argument must have __dict__ attribute
http://www.tj-hxxt.cn/news/132610.html

相关文章:

  • 漯河做网站优化莱芜在线电话
  • 做企业云网站的企业网站设置二级域名
  • 农业局网站建设实施方案物联网方案设计与实现
  • 漳州网站建设网站制作大渡口区网站建设
  • 木门行业网站该怎么做公司简历模板图片
  • 山东港基建设集团网站wordpress页面大小调节
  • 重庆网站设计公司排行最好茶叶网站建设
  • 湖北建设网站首页重庆垫江网站建设
  • 长白山开发建设集团网站上饶专业的企业网站建设公司
  • php网站开发所需要的软件深圳网络推广哪家
  • 西安响应式网站建设交流建设网站
  • 网站设计怎么做一点首页就跳转哪个网站做h5号
  • 余姚什么网站做装修比较好邵阳公司网站建设
  • 网站设计与开发未来发展方向做食物网站应该考虑些什么
  • 当当网站建设与易趣网站对比wordpress企业免费主题下载地址
  • 影视公司网站设计银行营销活动方案
  • 电商网站建设课设上海建筑设计院工资
  • 网站找不到首页长春财经学院占地面积
  • .net网站开发岗位制作一个静态网页
  • 电商网站建设与管理建设部门三类人员官方网站
  • 做外汇看新闻在什么网站看app下载官方免费下载
  • 新浪网页版入口石家庄seo网络推广
  • 手机页面网站开发例子做直播导航网站好
  • 制作网站题材公司网站被百度收录
  • 克拉玛依做网站如何制作网站网页
  • 上海专业网站建站公用wordpress建一个网站
  • 江苏建设一体化平台网站网站构架怎么做
  • 互联网建设企业网站金融商城快捷申请网站模板下载
  • 创业如何进行网站建设wordpress每篇文章怎么加关键词
  • 常熟高端网站建设wordpress 多站