一.背景
我期望基于开源项目实现工业场景中安全帽识别。之前的各种尝试,也不太顺利。发现安全帽识别的开源项目使用的是基于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,过程中使用到了豆包和文心一言帮助我找思路,帮我快速实现了我的初步探索结论。最近在矿山上多,学习更新有点慢,见谅