赞
踩
YOLOv8是基于目标检测算法YOLOv5的改进版,不仅仅可以实现目标检测,其还内置有Byte-Tracker、Bot-Tracker多目标跟踪算法。因此直接复现YOLOv8来进行这两种算法的调用是十分方便高效的。
(1)查看显卡的CUDA支持的最高版本,按住键盘Win+R打出cmd然后按住Enter键,打开命令行窗口,输入nvidia-smi
我这里最高支持的版本是12.2
,后面安装的CUDA toolkit和cuDNN大版本不能超过它,(我下载的是CUDA11.6+cudnn8.4)版本。
(2) CUDA安装(11.6)
CUDA toolkit Download:CUDA Toolkit Archive | NVIDIA Developer
在CUDA网站下载对应的版本:
下载安装包:
可以在D盘新建一个文件夹CUDA11.6来放置下载好的安装包,双击进行安装。
**安装CUDA:**保持路径默认即可
在CUDA的安装路径这里,保持默认就好,默然安装在C盘(保证C盘有足够空间,防止后期编译找不到CUDA的路径)。
安装完成后:
查看环境变量是否存在:
后面如果下载了其他的CUDA版本需要切换,直接在这里的环境v11.6后面的数字改掉就可以定位到了
如果系统变量没有自动配置的话,需要我们手动配置。路径是根据前面是否自己有没有修改来指定。
**最后:**配置好环境变量后,我们检查下CUDA是否安装成功。
nvcc -V
或
nvcc --version
显示cuda_11.6成功安装完成!
(3)CUDNN安装(8.4)
官网下载:cuDNN Archive | NVIDIA Developer
CUDNN需要对应安装的CUDA版本
可以建立一个cudnn8.4文件夹存放下载安装包
下载完成后解压全部的文件后:
CUDA和CUDNN安装成功!!!
具体安装步骤这里不再阐述,网上教程很多,可以参考深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)
安装完一定要设置环境变量,将以下四个路径添加进Path
验证安装是否成功
conda -V
如果没有设置环境变量会报错显示conda不是内部或外部命令
下面创建conda虚拟环境
在anaconda环境下新建一个环境。可以使用windows cmd命令行(前提是配置好anaconda环境变量),当然也可以使用 Anaconda Powershell Prompt(推荐使用这种方式)
YOLOv8需要3.8或以上的Python版本(我这里用的3.8版本),而且项目需要的torch版本不低于1.8。
然后输入下面的命令新建一个名为yolo8的环境
- # 创建虚拟环境
- conda create -n yolov8 python=3.8.0
- # 激活虚拟环境(切换至这个环境)
- conda activate yolov8
- # 查看已创建的虚拟环境
- conda info -e
其中base是anaconda自带的基础环境,yolov8是我们自己创建的python虚拟环境
具体安装过程不再阐述,教程有很多,我用的是Pycharm2018版本
源码链接:https://github.com/ultralytics/ultralytics/blob/main/README.zh-CN.md
这是官网链接,但是最新更新后发现requirements.txt配置文件没了,变成了pyproject.toml不太会用,所以我没有采用这个链接
我用的链接(很多教程也是基于这个链接):https://github.com/ultralytics/ultralytics
点击下载压缩包
下载下来的样子
因为解压之后会里外会套用很多文件夹,可以创建一个yolov8文件夹,把我们主文件拿出来放在里面,我这里把解压出来的ultralytics-mian文件名改成了ultralytics
目录结构如上图所示
(1)进入Anaconda Powershell Prompt
(2)首先激活环境
conda activate yolov8
(3)安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
(4)具体实现步骤如下
下载yolov8必要的库
- # 需要先安好这个库
- pip install ultralytics
因为requirements.txt自带的torch是CPU版本的,实际用起来很慢,因此我们将其更新为对应GPU版本的,我们需要去pytorch官网找到与cuda 11.6版本对应的命令
- # CUDA 11.6
- pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
自此, GPU下YOLOv8目标跟踪、目标检测任务环境配置,全部完成。
下载训练模型,推荐yolov8s.pt或者yolov8n.pt,模型小,下载快,在gitee或者github下方readme里面,下载完成后,将模型放在主文件夹下
yolov8s.pt下载地址:yolov8s.pt
yolov8n.pt下载地址:yolov8n.pt
yolov8n-seg.pt(分割追踪权重):yolov8n-seg.pt
yolov8n-pose.pt(姿态追踪权重):yolov8n-pose.pt
测试(1):
使用yolov8自带经典图片进行测试:
cd进入yolov8主文件夹下,运行下面命令
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg'
具体步骤如下:
我的结果保存在runs\detect\predict9中,你们的看Results saved to 存放地址,结果如下图
如果出现上面图片即成功
测试(2):
接下来我们在Pycharm里进行测试
首先打开项目文件如图
刚下载好的Pycharm我们要给他配上我们的虚拟环境
运行track.py脚本测试
运行之后会报错
这是因为导包使用的相对路径导入找不到,我们改为绝对路径
将
- from .bot_sort import BOTSORT
- from .byte_tracker import BYTETracker
替换为
- from ultralytics.trackers.bot_sort import BOTSORT
- from ultralytics.trackers.byte_tracker import BYTETracker
即可解决,下面运行没问题
下面开始具体调用,在trackers文件夹下的README.md里有介绍用法
- from ultralytics import YOLO
-
- # Load an official or custom model
- model = YOLO("yolov8n.pt") # Load an official Detect model
- model = YOLO("yolov8n-seg.pt") # Load an official Segment model
- model = YOLO("yolov8n-pose.pt") # Load an official Pose model
- model = YOLO("path/to/best.pt") # Load a custom trained model
-
- # Perform tracking with the model
- results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True) # Tracking with default tracker
- results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml") # Tracking with ByteTrack tracker
新建一个py脚本,把这块代码粘过去就可以运行了,下面我们改成自己本地准备好的视频测试,视频也放在根目录下,前面有图可以看一下我方的位置
- from ultralytics import YOLO
-
- # Load an official or custom model#每次选一个模型就可以了
- model = YOLO("yolov8n.pt") # Load an official Detect model#这个是原始的轨迹追踪
- # model = YOLO("yolov8n-seg.pt") # Load an official Segment model#这个是基于分割追踪
- # model = YOLO("yolov8n-pose.pt") # Load an official Pose model#这个是基于姿态追踪
- # model = YOLO("path/to/best.pt") # Load a custom trained model#这个是自己训练权重放的位置
- model.track(source="video1.mp4", tracker="ultralytics/cfg/trackers/bytetrack.yaml", save=True, show=True)
注意:只有设置了save=True视频才会保存下来, 只有设置show=True才能看到实时检测效果
下面是运行效果:
轨迹追踪效果
分割追踪效果:
姿态追踪效果
如果想切换Byte-Tracker和Bot-Tracker,在下面修改yaml文件前的名称即可,注意路径
注意所有的路径都是在根文件夹下的,写路径是不需要再把根路径也写上去会报错,比如:
错误
ultralytics/ultralytics/cfg/trackers/bytetrack.yaml
正确
ultralytics/cfg/trackers/bytetrack.yaml
问题1:跑视频时运行结束后会报错
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000025ce897db40] moov atom not found
我的原因是,我的视频文件损坏了,所以没法成功检测和保存
还有博主说是路径问题
video_path = r"E:\Code\videos\1HDcut\1HD-2.MP4"
就是去掉video_path后面的r,然后把‘\’都换成‘/’。
video_path = "E:\Code/videos/1HDcut/1HD-2.MP4"
具体视自己情况而定
问题2:ModuleNotFoundError: No module named ‘lap‘ 已解决
有的包没装上,激活我们的虚拟环境
直接pip install lap即可
本文参考:
5.YoloV8目标追踪演示 轨迹追踪 分割物体追踪 姿态估计追踪
6.[mov,mp4,m4a,3gp,3g2,mj2 @ 0000025ce897db40] moov atom not found
7.ModuleNotFoundError: No module named ‘lap‘ 已解决
8.【一分钟解决】Python报错ImportError: attempted relative import with no known parent package
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。