CPU炼丹——YOLOv5s

1.Anaconda安装与配置

1.1安装与配置

Anaconda3的安装看下面的教程:

最新Anaconda3的安装配置及使用教程(详细过程)icon-default.png?t=N7T8http://t.csdnimg.cn/yygXD,接上面文章下载后,配置环境变量的时候记得在原来你装的Python更下面添加路径:

我直接放到了最后,这样你默认的Python依然是你之前就装好的Python而不是Anaconda自带的Python,下载好后打开cmd,输入下面的代码查看版本。

conda --version

 使用

conda info

可以看到一些具体的信息。

然后:

conda init

然后配置源:

conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

1.2创建虚拟环境

下面代码创建了一个叫yolov5_p3.8的环境(一定要3.8及以上的版本),之后炼丹用的就是这个环境

conda create -n yolov5_p3.8 python=3.8

 如下图:

会问你:

看到done就行了,上面创建后会有一个提示:

我们可以用这两句代码激活和退出环境

激活环境:

上图的第一个python是本地环境,版本是3.11.4,然后激活环境,再输入python,这时python的版本变成了3.7.12,这就是进入虚拟环境了。

退出环境:

conda deactivate

退出环境后,我输入python,可以看到版本回到了3.11.4.

1.3安装与导入pytorch

去官网:PyTorch

往下拉,按下图配置(版本大于等于1.8):

把最后一行代码复制到cmd:

然后是漫长的等待:

看到他就结束了:

然后输入:

conda list

就可以看到这个环境的包。

2.yolov5的下载与配置

yolov5源码下载地址:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)

 我选了yolov5s这个表轻量级版本,顺便把官方的预训练模型下载了:

在上面github的网页根据下图操作:

直接用这个版本的:

再往下翻:

展开后找到yolov5s.py点击下载:

 下载往后放到yolov5的目录下即可:

然后开始为这个项目配置运行环境,就是上面我们使用anaconda创建的环境:

 按照你安装的路径导入可执行文件,然后点击右侧加载环境:

然后我们导入一些运行需要的包,下面这行代码在requirement.txt文件里,我们直接在终端输入即可:

 pip install -r requirements.txt

 接下来可能遇到这个问题:

 这个时候建银手动装这个包:

pip install gitpython -i https://pypi.tuna.tsinghua.edu.cn/simple/  

然后再继续运行这句:

 pip install -r requirements.txt

 接下来可以测试一下装好了没,在pycharm终端输入:

python detect.py

 顺利的话可以在这个目录看到结果:

经典的一幕(bus.jpg):

你可能会遇到一些问题,大概是关于git的,先看一看你有没有git,在cmd输入git --version

有一个这样的报错:ImportError: Bad git executable.

没装git就去装:Git 详细安装教程(详解 Git 安装过程的每一个步骤)

 然后估计还有问题:

跟着接下来的步骤,找到anaconda3中我们创建的yolov5_p3.8的git中的下图所指文件:

 我们进去编辑:

import os
os.environ['GIT_PYTHON_REFRESH'] = 'quiet'

 3.训练自己的模型

3.1如何加入自己的训练集

在yolo的data文件下传一个文件夹叫my_data,里面放你分好的和标注好的训练集:

可以看到train下面放的两个文件夹:images和labels分别存储了对应的图片和标签,其他的也一样,当然mytest里面就是随便找的没标记的图片了。

数据集可以用coco的,也可以自己做或者搜一下,有个网站不错:Roboflow Universe: Open Source Computer Vision Community

3.2自己数据的yaml配置

yaml的编写可以参照源码自带的,在data目录下创建自己的数据集yaml:

我的长这样:

两种都可以,上面三个路径是相对于根目录而言,也就是train.py所在位置,换成自己的就行。

3.3train参数的设置

首先是这三个:

第一weights参数:填入我们下载的预训练模型,就在根目录下

第二个是这个模型的配置路径,这个源码中自带,路径如图

第三个就是自己的数据集yaml的路径

 上面两个一个是轮次一个是表示几张图片进行一次权重更新,调小一些,毕竟没显卡,如果是没改模型的话,轮次改成30~40就差不多收敛了,结果0.78左右(最好的)。

这个可以改成True,方便意外打断继续训练,Ctrl+C打断。

 这个处理多线程的,改成0就行,要不可能失败或卡

最后,开始漫长的炼丹:

python train.py

4.验证炼丹

下图就是炼丹后的最佳模型文件所在:

 代开val.py文件,改参数,数据集yaml路径和刚才训练好的best.pt路径

 然后:

python val.py

 最后在下面这张图里就是最后验证后的结果,有一些衡量模型的图片,以及验证结果:

 截张图,验证的结果之一:

5.实战 

之前说过在data文件夹里我还创建了一个mydata文件,里面装了一些网上的随机的水果图片,有不在训练集种类范围的,我们做个实际的个识别验证:

打开detect.py,改下面这两个参数,weights就用我们刚训练好的best.pt,source就是我们用于测试的数据位置:

 下面的data不用改,这里似乎用不到,只有训练和他相关()。

然后

python detect.py

然后在下图可以找到识别的结果:

 比如:

参考:

在CPU上跑yolov5(详细步骤+适合入门)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目】高并发内存池实现(化简版tcmalloc)

前言 因为偶然的机会,我通过同学那里知道这个google有一个开源项目tcmalloc,他讲的头头是道,而我也对其非常感兴趣。 这个tcmalloc呢,全称Thread-Caching Malloc,通过名字就能看出跟线程相关,也确实如此&am…

Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 前言 通过前三篇Sprin…

[SaaS]建筑领域的sd应用

AirchiDesignhttp://www.aiarchi.art/#/建筑学长——千万建筑师的资源库和AI绘图创作平台建筑学长官网,为青年设计师建立的线上资源共享及AI绘图创作渲染平台,免费提供海量设计案例、CAD图纸、SU模型、PS素材、软件插件下载,提供丰富的设计软件教学与灵感参考素材图库。https:/…

扩展学习|一文读懂知识图谱

一、知识图谱的技术实现流程及相关应用 文献来源:曹倩,赵一鸣.知识图谱的技术实现流程及相关应用[J].情报理论与实践,2015, 38(12):127-132. (一)知识图谱的特征及功能 知识图谱是为了适应新的网络信息环境而产生的一种语义知识组织和服务的方…

fastdfs-client获取最新版FastDFS的storage节点时port为0

报错: com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:cant create connection to/192.168.152.128:0 很明显,他认为我storage的port是0,应该是23000才对。打断点,发现是 com.…

C语言知识点补充——输入输出

1、如何输入转义字符&#xff08;"\n"、"\t"&#xff09;文本 可以使用双反斜杠来取消转移字符的特殊含义。 代码如下&#xff1a; #include <stdio.h> int main() {printf("\\n");printf("\\t");return 0; } 运行结果&…

常用六大加密软件排行榜|好用加密文件软件分享

为了保障数据安全&#xff0c;越来越多的企业开始使用文件加密软件。哪款加密软件适合企业哪些办公场景呢&#xff1f; 今天就给大家推荐一下文件加密软件排行榜的前六名&#xff1a; 1.域智盾 这款软件专为企业和政府机构设计&#xff0c;提供全面的文件保护解决方案。 点…

SOLIDWORKS Electrical电气智能零部件的运用

电气2D向电气3D转型&#xff0c;3D模型无疑是重中之重&#xff0c;精准、正确的3D模型有利于电线长度、空间大小、耗材的计算。而线槽、导轨因为要根据实际情况裁剪&#xff0c;所以即使同一规格的线槽、导轨&#xff0c;在装配时也得根据实际情况&#xff0c;修改长度&#xf…

STM32 FreeRTOS 常用API

任务间同步 1&#xff0c;信号量 信号量分为二进制信号量 和计数型信号量 信号&#xff1a;起通知作用 量&#xff1a;还可以用来表示资源的数量 当"量"没有限制时&#xff0c;它就是"计数型信号量"(Counting Semaphores) 当"量"只有0、1两…

一文带你了解多数企业系统都在用的 RBAC 权限管理策略

前言 哈喽你好呀&#xff0c;我是 嘟老板&#xff0c;今天我们来聊聊几乎所有企业系统都离不开的 权限管理&#xff0c;大家平时在做项目开发的时候&#xff0c;有没有留意过权限这块的设计呢&#xff1f;都是怎样实现的呢&#xff1f;如果现在脑子里对于这块儿不够清晰&#…

【爬虫】爬取A股数据写入数据库(一)

1. 对东方财富官网的分析 步骤&#xff1a; 通过刷新网页&#xff0c;点击等操作&#xff0c;我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。我们使用python来模拟这个请求即可。 我们以如下选择的页面为切入点…

经典的设计模式和Python示例(一)

目录 一、工厂模式&#xff08;Factory Pattern&#xff09; 二、单例模式&#xff08;Singleton Pattern&#xff09; 三、观察者模式&#xff08;Observer Pattern&#xff09; 一、工厂模式&#xff08;Factory Pattern&#xff09; 工厂模式&#xff08;Factory Pattern…

项目|保障房房产管理系统,政务房产解决方案

一、系统概况 保障房管理系统是是为了落实中央关于住房保障的相关政策&#xff0c;实现对低收入家庭住房状况的调查管理、保障计划及落实管理、保障申请及审核管理、保障户和保障房源档案管理等。 针对政府保障房产管理的一站式解决方案&#xff0c;专注于为解决复杂、繁琐的…

【STM32嵌入式系统设计与开发】——18DAC(DAC输出应用)

这里写目录标题 STM32资料包&#xff1a; 百度网盘下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码&#xff1a;8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#…

Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点

Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点 此文档从 Kubernetes 官网摘录 中文地址 英文地址 节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。 管理 向 API 服务器添加节点的方式主要有两种&#xff1a; 节点上的 kubelet 向控制面执行自注册&#xff1b…

Eclipse 安装 lombok 和配置

如 Eclipse 不配置的话&#xff0c;是没有办法编译 lombok 项目的。 下载 Jar 如果你项目使用的是 maven&#xff0c;那么 jar 应该下载下来了。 到 pom.xm 文件中找到有关 lombok 的依赖。 <dependency><groupId>org.projectlombok</groupId><artifac…

基于python的动漫分析系统的设计与实现

基于python的动漫分析系统的设计与实现 Design and Implementation of an Anime Analysis System based on Python 完整下载链接:基于python的动漫分析系统的设计与实现 文章目录 基于python的动漫分析系统的设计与实现摘要第一章 绪论1.1 研究背景1.2 研究目的与意义1.3 研究…

PHP基础【介绍,注释,更改编码,赋值,数据类型】

源码 <?php //单行注释 /* 多行注释 *///通过header()函数发送http头的请求信息用来指定页面的字符集编码 header("Content-type:text/html;Charsetutf-8"); //告诉浏览器&#xff0c;当前页面的内容类型是HTML&#xff0c;并且页面内容使用的是UTF-8编码。//ph…

css 居中方法

行内元素水平居中: 行内元素指的是&#xff1a;text、image、超链接等&#xff0c;在父元素中使用如下代码&#xff1a; #parentId {text-align: center; }块级元素水平居中 块级元素指的是&#xff1a;div、h1-h6、ul等&#xff0c;在当前元素中使用如下代码&#xff0c;必…

Agent AI智能体的未来发展与挑战

Agent AI&#xff0c;作为一种具有自主感知、理解环境、决策和执行行动能力的智能体&#xff0c;正在成为AI时代业务场景的主流形式。相较于大模型&#xff0c;Agent AI更加注重对环境的感知和主动行动&#xff0c;不仅仅是依靠提示词进行交互。它具有以下核心特征&#xff1a;…