在windows系统用Anaconda搭建运行PyTorch识别安全帽项目的环境

一.背景

       我期望基于开源项目实现工业场景中安全帽识别。之前的各种尝试,也不太顺利。发现安全帽识别的开源项目使用的是基于Python的PyTorch实现训练的。上一篇写了Python的安装,发现后续安装其他的并不方便。我为什么选择,下面再详细说原因。

二.为何选择Anaconda来搭建PyTorch运行环境?

     上一篇写了Python的安装,发现Python的版本是3.13.0。但是我看PyTorch官网的版本要求却是3.9-3.12。

     

     因为我是初学者,我看到PyTorch官网写了有使用Anaconda来安装,所以,我决定选择它了。

三.Anaconda的下载和安装

     1.Anaconda的下载

      你可以直接点击这里的官方下载,也可以去Anaconda官网自己找。

     

     2.Anaconda的下载

       就是一路向下,建议默认路径,记住一下默认路径。安装有点慢,耐心等待完成。

     3.Anaconda安装后的确认

        输入命令,看看Anaconda安装好了没有。

conda --version

    另外,还要输入命令,看看Python和pip安装好了没有。

python --versionpip --version

   如果没有安装好,就手动配置一下环境变量。我主要配置了3个,配置环境变量不要让我再截图步骤了吧。。。

C:\ProgramData\anaconda3\condabin
C:\ProgramData\anaconda3\Scripts
C:\ProgramData\anaconda3

     4.使用Anaconda管理Python环境

       主要用到了下面3行命令:     

#创建一个名字为myenv的环境,一次性的,不用每次进bat都去创建
conda create --name myenv #激活(使用)环境
conda activate myenv#安装 python 需要的包  
conda install package_name

      我cmd中输入 conda activate myenv后,就在最开始多了(myenv)。

(myenv) D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main>

四.开源安全帽识别项目Safety-Helmet-Detection的下载

      1.Safety-Helmet-Detection的下载

          项目主页是https://github.com/jomarkow/Safety-Helmet-Detection。里面训练用的图片有5千张,太大了,压缩下载下来都是1个多G,我们只是用结果,我也准备了一个结果的版本(删除了图片的)在这里下载。

五.运行测试Safety-Helmet-Detection

      1.Safety-Helmet-Detection解压

      我是解压到这里的D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main。

     2.安装PyTorch      

#激活(使用)环境
conda activate myenv#安装 python 需要的包  
conda install PyTorch

   3.安装ultralytics

     我在后面尝试运行模型时又出现了如下错误,说明这个组件没有安装。

ModuleNotFoundError: No module named 'ultralytics'

    我用的pip install ultralytics 安装的,我觉得上面的命令 conda install ultralytics也应该可以。

    4.了解本次模型的python运行代码

     打开Safety-Helmet-Detection-main\model\predict.py文件。我大概阅读了一下代码,是从test目录中遍历文件,然后去执行模型,分为图片和视频两种,图片以.jpg后缀的就会执行,视频是在文件名字包含了dfgdfg的就会执行。结果输出到test_output目录。因为test_output本身有内容,我给清空了。   

import os
from ultralytics import YOLO
import cv2PROY_FOLDER = os.getcwd().replace("\\","/")INPUT_FOLDER =  f"{PROY_FOLDER}/test/"
OUTPUT_FOLDER = f"{PROY_FOLDER}/test_output/"
MODEL_PATH =    f"{PROY_FOLDER}/output/best.pt"if not os.path.exists(OUTPUT_FOLDER):os.mkdir(OUTPUT_FOLDER)model = YOLO(MODEL_PATH) 
files = os.listdir(INPUT_FOLDER)def draw_box(params, frame, threshold = 0.5):x1, y1, x2, y2, score, class_id = paramsif score > threshold:cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 4)cv2.putText(frame, results.names[int(class_id)].upper(), (int(x1), int(y1 - 10)),cv2.FONT_HERSHEY_SIMPLEX, 1.3, (0, 255, 0), 3, cv2.LINE_AA)  return framefor file_name in files:file_path = INPUT_FOLDER + file_nameif "dfgdfg" in file_name:video_path_out = OUTPUT_FOLDER + file_name[:-4] + "_out.mp4"cap = cv2.VideoCapture(file_path)ret, frame = cap.read()H, W, _ = frame.shapeout = cv2.VideoWriter(video_path_out, cv2.VideoWriter_fourcc(*'MP4V'), int(cap.get(cv2.CAP_PROP_FPS)), (W, H))while ret:results = model(frame)[0]for result in results.boxes.data.tolist():frame = draw_box(result, frame)out.write(frame) ret, frame = cap.read()cap.release()out.release()elif ".jpg" in file_name:image_path_out = OUTPUT_FOLDER + file_name[:-4] + "_out.jpg"image = cv2.imread(file_path,cv2.IMREAD_COLOR) results = model(image)[0]for result in results.boxes.data.tolist():image = draw_box(result, image)cv2.imwrite(image_path_out, image) cv2.destroyAllWindows()

     5.运行开源项目

     本质很简单,就是用Python去执行它的程序文件predict.py。我没有学习过Python,简单了解了一下,就是输入命令 python xxx.py就可以执行了。于是,我动手了。    

C:\Users\Dell>cd /d D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main
D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main>conda activate  myenv(myenv) D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main>python ./model/predict.py0: 384x640 6 helmets, 1 head, 54.3ms
Speed: 3.0ms preprocess, 54.3ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)(myenv) D:\zsp\works\temp\20241119-赵仕平-安全帽\Safety-Helmet-Detection-main>

     我去了test_output目录查看,发现输出图片如下:

     

     视频运行慢,我试过了,就不写了。。。看程序就知道,只要把mp4文件的名字修改一下,包含dfgdfg就会运行的。

    6.我加了张自己的照片看看

     放到test目录,结果如下:

六.总结

     使用Anaconda来搭建PyTorch运行模型比较方便。就是我的机器太差了,估计训练很难,运行问题不大。为后续免费搭建工业场景安全帽检测的方案奠定了基础。本人没有学过AI和Python,过程中使用到了豆包和文心一言帮助我找思路,帮我快速实现了我的初步探索结论。最近在矿山上多,学习更新有点慢,见谅

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

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

相关文章

Spring事务的一道面试题

每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。 原理 Spring事务的原理是:通过AOP切面的方式实现的,也就是通过代理模式去实现事务增强。 具体过程是&a…

AI换脸facefusion 3.0.1安装及其使用方法(源代码安装)

文章目录 1. 本文简介2. 软件环境准备软件下载及安装代码下载 3. Conda环境4. 加速环境5. 依赖安装6. 图片测试 今天给大家分享换脸facefusion 3.0.1使用方法。不仅可以对单张图片换脸,也可以对视频换脸。如果是单张图片的话,没有GPU速度也很快&#xff…

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案 背景概述解决方案脚本实现脚本说明使用指南注意事项在CentOS操作系统环境中,若需并发上传特定目录下的.wav文件至HTTP服务器,而系统未安装GNU parallel工具,我们可通过其他方法实现此需求。本文将介绍一种利用Sh…

极兔速递开放平台快递物流查询API对接流程

目录 极兔速递开放平台快递物流查询API对接流程API简介物流查询API 对接流程1. 注册用户2. 申请成为开发者3. 企业认证4. 联调测试5. 发布上线 签名机制详解1. 提交方式2. 签名规则3. 字段类型与解析约定 物流轨迹服务极兔快递单号查询的其他方案总结 极兔速递开放平台快递物流…

Linux命令行解释器的模拟实现

欢迎拜访:羑悻的小杀马特.-CSDN博客 本篇主题:Linux命令行解释器 制作日期:2024.12.04 隶属专栏:linux之旅 本篇简介: 主线带你用ubuntu版系统步步分析实现基础版本的shell;比如支持重定向操作&#xff0…

微信 创建小程序码-有数量限制

获取小程序码:小程序码为圆图,有数量限制。 目录 文档 接口地址 功能描述 注意事项 请求参数 对接 获取小程序码 调用获取 小程序码示例 总结 文档 接口地址 https://api.weixin.qq.com/wxa/getwxacode?access_tokenaccess_token 功能描述 …

【spring mvc】全局处理请求体和响应体

目录 说明实现效果逻辑图 实现步骤创建公共处理的请求和响应的类api接口测试前端请求响应结果 扩展Response响应格式实体ResponseCode 响应状态码RSA工具类 RequestBodyAdvice 介绍使用场景 ResponseBodyAdvice 介绍使用场景 说明 由于项目中需要进行加密传输数据提高项目安全…

消息中间件-Kafka2-3.9.0源码构建

消息中间件-Kafka2-3.9.0源码构建 1、软件环境 JDK Version 1.8Scala Version 2.12.0Kafka-3.9.0 源码包 下载地址:https://downloads.apache.org/kafka/3.9.0/kafka-3.9.0-src.tgzGradle Version > 8.8Apache Zookeeper 3.7.0 2、源码编译 打开源码根目录修改…

AMEYA360 | 杭晶电子:晶振在AR/VR中的应用

晶振在AR/VR设备中扮演重要角色,为其核心电子系统提供稳定的时钟信号,确保设备的高性能运行。 以下是晶振在AR/VR应用中的具体作用: 01、图像处理与同步 1、晶振为图形处理单元(GPU)和显示芯片提供精准的时钟信号,支持高速图像渲染…

【SARL】单智能体强化学习(Single-Agent Reinforcement Learning)《纲要》

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…

Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等

前言 相信大家在刷算法题的过程中,好不容易想出来大概的思路,也知道去用哪个集合类,但各个集合类的一些命令都长得太像,很容易将他们弄错,并且在各集合之间的转化也是特别烦人,还有很多实用的函数都知道可…

Linux CentOS

​阿里云开源镜像下载链接 https://mirrors.aliyun.com/centos/7/isos/x86_64/ VMware 安装 CentOS7 自定义 下一步 选择稍后安装操作系统 选择 输入 查看物理机CPU内核数量 CtrlShiftEsc 总数不超过物理机内核数量 推荐内存 自选 推荐 推荐 默认 拆分成多个 默认 自定义硬件…

大数据新视界 -- Hive 数据湖集成与数据治理(下)(26 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

数据结构 (26)图的遍历

前言 数据结构中的图遍历是指从图中的任一顶点出发,按照某种方法访问图中的所有顶点,且每个顶点只访问一次。 一、遍历方法 遍历主要有两种方法:深度优先搜索(DFS)和广度优先搜索(BFS)。 1.深度…

B站狂神说Mybatis+Spring+SpringMVC整合理解(ssm框架整合)

文章目录 0.写在前面(对mybatis,spring的理解)(不看可跳过)0.1 为什么需要mybatis0.2 为什么需要spring0.3为什么需要springmvc 1.新建ssmbuild数据库2.新建Maven项目3.初始化步骤3.1 配置下载maven依赖,构建资源导出3.2 连接数据库3.3建包&a…

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…

MySQL事件

1、在数据库d_eams中创建一个名为E_enent的事件&#xff0c;用于每隔10s向数据表T_event 中插入一条数据 use d_eams; create event E_event on schedule every 10 second on completion preserve do insert into T_event(用户, 创建时间) values(Root, now()); 2、查看当前…

C语言(分支结构)

问题引出 我们在程序设计往往会遇到如下的问题&#xff0c;比如下的函数的计算。 也就是我们是必须要通过一个条件的结果来选择下一步的操作&#xff0c;算法上属于一个分支结构&#xff0c;C语言中实现分支结构主要使用if语句。 条件判断 根据某个条件成立与否&#xff0c…

SpringAop(1)

Spring中有两大重心&#xff1a;springIoc和springAop springioc将bean的控制权交给了spring管理&#xff0c;直接从spring中获取&#xff0c;通过五大注解来告诉spring帮我管理这个对象。通过Autowired和构造方法和set方法注入。 不仅仅是学习重点也是面试常考的难点。 spr…

GoReplay开源工具使用教程

目录 一、GoReplay环境搭建 1、Mac、Linux安装GoReplay环境 二、GoReplay录制与重播 1、搭建练习接口 2、录制命令 3、重播命令 三、GoReplay单个命令 1、常用命令 2、其他命令 3、命令示例 4、性能测试 5、正则表达式 四、gorepaly组合命令 1、组合命令实例 2、…