在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安装好了没有。

bash 复制代码
conda --version

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

bash 复制代码
python --version

pip --version

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

bash 复制代码
C:\ProgramData\anaconda3\condabin
C:\ProgramData\anaconda3\Scripts
C:\ProgramData\anaconda3

4.使用Anaconda管理Python环境

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

bash 复制代码
#创建一个名字为myenv的环境,一次性的,不用每次进bat都去创建
conda create --name myenv 

#激活(使用)环境
conda activate myenv

#安装 python 需要的包  
conda install package_name

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

bash 复制代码
(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

bash 复制代码
#激活(使用)环境
conda activate myenv

#安装 python 需要的包  
conda install PyTorch

3.安装ultralytics

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

bash 复制代码
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本身有内容,我给清空了。

python 复制代码
import os
from ultralytics import YOLO
import cv2

PROY_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 = params
    
    if 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 frame


for file_name in files:

    file_path = INPUT_FOLDER + file_name
    
    if "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.shape
        out = 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就可以执行了。于是,我动手了。

bash 复制代码
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.py

0: 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,过程中使用到了豆包和文心一言帮助我找思路,帮我快速实现了我的初步探索结论。最近在矿山上多,学习更新有点慢,见谅

相关推荐
dundunmm13 分钟前
数据挖掘之认识数据
人工智能·机器学习·信息可视化·数据挖掘
FBI780980459432 分钟前
API接口在电商行业中的创新应用与趋势
运维·网络·人工智能·爬虫·python
程序员黄同学35 分钟前
如何使用 Flask 框架创建简单的 Web 应用?
前端·python·flask
Sword9935 分钟前
豆包 MarsCode AI Apply功能揭秘:自动代码应用与 Diff 实现
前端·人工智能·豆包marscode
梁小憨憨36 分钟前
机器学习(Machine Learning)的安全问题
人工智能·安全·机器学习
凡人的AI工具箱1 小时前
每天40分玩转Django:Django管理界面
开发语言·数据库·后端·python·django
utmhikari1 小时前
【Python随笔】如何用pyside6开发并部署简单的postman工具
python·postman·pyqt·pyside6·桌面工具
碧水澜庭1 小时前
django中cookie与session的使用
python·django
鬼义II虎神1 小时前
将Minio设置为Django的默认Storage(django-storages)
python·django·minio·django-storages
Gauss松鼠会1 小时前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·人工智能·sql·mysql·gaussdb