一、环境准备
运行cmd执行python --version
检查是否安装成功
安装pip,打开运行指令 python -m ensurepip --upgrade
打开官网,下载get_pip.py
运行cmd 运行指令python get-pip.py
运行cmd 运行指令 pip --version
显示pip版本即安装成功
根据上面获取的相机序号,在python中通过cv2操作相机设备,参考如下脚本
import cv2
def videocapture():
#调用摄像头‘0’一般是打开电脑自带摄像头,‘1’是打开外部摄像头(只有一个摄像头的情况)
cap = cv2.VideoCapture(1)
if False == cap.isOpened():
print('Error: 无法打开相机,请检查相机是否已连接?')
return
#设置图像宽高,必须与相机分辨率一致,否则无法显示
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1440)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
# 设置帧率
cap.set(cv2.CAP_PROP_FPS , 15)
# 显示图像
while True:
ret, frame = cap.read()
frame_1 = cv2.resize(frame , (640 , 512))
cv2.imshow("frame", frame_1)
input = cv2.waitKey(1)
if input == ord('q'):
break
cap.release() # 释放摄像头
cv2.destroyAllWindows() # 销毁窗口
if __name__ == '__main__' :
videocapture()
二、YOLOX 安装
1、yolox源码下载
git clone https://github.com/Megvii-BaseDetection/YOLOX.git
pip3 install -v -e . # or python3 setup.py develop
2、安装 python 依赖包
安装 vcpkg (windows)
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
安装protoc、protobuf
#1 使用vcpkg 安装 protobuf
vcpkg install protobuf
#1 安装 protobuf
pip3 install protobuf==3.20.1
安装yolox依赖
cd 到 yolox 目录下,注释掉 requirements.txt 中的torch、torchvision、onnx相关行如下
pip3 install -r requirements.txt
1. 安装 cuda
cuda是Nvidia显卡配套的软件,只支持Nvidia显卡。
带Nvidia独显的电脑一般已经安装好cuda,可通过执行命令 nvidia-smi
检查
执行nvidia输出类似上述的界面,则表明已自带cuda,不需再安装cuda。
如果未自带cuda,可参考如下链接安装:
https://blog.csdn.net/m0_45447650/article/details/123704930
三、模型训练
1. 基于预训练模型训练
# 命令格式:
# python -m tools.train -n 模型 -d 显卡数量 -b batch_size --fp16 \
# -o -c 预训练模型路径
# 模型可选 yolox-m、yolox-l、yolox-x等
# 显卡数量 不能大于实际数量
python -m tools.train -n yolox-s -d 1 -b 16 --fp16 -o -c /home/common/standard_retrained_models/yolox_s.pth
2. 不基于预训练模型训练
# 命令格式:
# python -m tools.train -n 模型 -d 显卡数量 -b batch_size --fp16
# 模型可选 yolox-m、yolox-l、yolox-x等
# 显卡数量 不能大于实际数量
python -m tools.train -n yolox-s -d 1 -b 8 --fp16
3. 分布式训练
以2台机器使用预训练模型为例
3.1 master 机器
# 命令格式:
# python -m tools.train -n 模型 -d 显卡数量 -b batch_size --fp16
# --dist-url tcp://mater_ip:端口 --dist-backend 后端 \
# --num_machines 机器数量 --machine_rank 机器序号
# 模型可选 yolox-m、yolox-l、yolox-x等
# 显卡数量 不能大于实际数量
# 机器序号(0代表master)
# --dist-backend 后端 \
python -m tools.train -n yolox-s -d 1 -b 16 --fp16 \
-o -c ./pretrained_models/yolox_s.pth \
--dist-backend gloo --dist-url tcp://10.0.84.234:12315 \
--num_machines 2 --machine_rank 0
3.2 slave 机器
# 命令格式:
# python -m tools.train -n 模型 -d 显卡数量 -b batch_size --fp16
# --dist-url tcp://mater_ip:端口 --dist-backend 后端 \
# --num_machines 机器数量 --machine_rank 机器序号
# 模型可选 yolox-m、yolox-l、yolox-x等
# 显卡数量 不能大于实际数量
# 机器序号(0代表master,非0值代表slave,要与实际的机器数量一致,如3台机器,0代表master,则slave是1或2)
# mater_ip:端口 要与 master保持一致
python -m tools.train -n yolox-s -d 1 -b 16 --fp16 \
-o -c ./pretrained_models/yolox_s.pth \
--dist-backend gloo --dist-url tcp://10.0.84.234:12315 \
--num_machines 2 --machine_rank 1
四、模型使用
1、图片识别
python tools/demo.py image -n yolox-s -c /path/to/your/yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]
2、视频
python tools/demo.py video -n yolox-s -c /path/to/your/yolox_s.pth --path /path/to/your/video --conf 0.25 --nms 0.45 --tsize 640 --save_result --device [cpu/gpu]