YOLOv8
YOLOv8 的下载、使用与导出(亲测有效)
一、YOLOv8环境的安装
安装所需软件:推荐安装Anaconda3+Pycharm
1、安装miniconda
miniconda相比于Anaconda功能上并没有相差太多,但它更加的轻量化
但由于从官网下载比较缓慢,所以这里推荐从国内的镜像源下载
[清华大学开源软件镜像站]https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
想直接下载的点这个: Miniconda3-py38_22.11.1-1-Windows-x86_64.exe
2、conda环境的创建
在电脑下方搜索框里输入cmd,找到Anaconda Prompt
输入以下命令,创建一个叫yolov8的环境
conda create -n yolov8 python=3.8
3、配置国内源(使下载更快)
网址:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
先激活环境
conda activate yolov8
4、选择CPU还是GPU
①判断是否有NVIDIA显卡
在安装PyTorch之前,我们需要判断您的计算机**是否安装了NVIDIA显卡,**因为PyTorch的GPU版本需要NVIDIA显卡来加速计算。您可以通过以下步骤来判断:
打开设备管理器:在Windows上,按下Win键和X键,然后选择“设备管理器”。在macOS上,打开“系统偏好设置”,选择“硬件”选项卡,然后点击“设备管理器”。
如果有NVIDIA显卡,那么您的计算机适合安装PyTorch的GPU版本。
如果没有NVIDIA显卡,您可以只安装PyTorch的CPU版本
②安装相应的版本
1)安装CPU版本
打开终端:打开 Anaconda Prompt 并激活刚刚创建的虚拟环境
conda activate yolov8pip install torch torchvision torchaudio
2)安装GPU 版本
查看CUDA显卡驱动版本
或者可以在终端里输入:nvidia-smi
5、安装CUDA与CUDNN(可选)
关于是否需要安装CUDA与CUDNN
如果只需要训练、简单推理,则无需安装CUDA与CUDNN,可以直接安装pytorch(可以直接跳过这一步);如果有部署要求,例如导出TensorRT模型,则需要进行安装
①安装CUDA
CUDA官网:https://developer.nvidia.com/cuda-toolkit-archive
查看是否安装成功,在命令行输入以下指令进行检查,出现以下类似的输出就证明安装成功。
Win+R 输入cmd
nvcc -V
②安装CuDNN(加速器)
官网地址:https://developer.nvidia.com/cudnn
下载完后要解压会得到cudnn-windows-x86_64-9.8.0.87_cuda11-archive文件夹,将这个文件夹复制到CUDA的安装路径下即可
6、安装pytorch
官网网址:https://pytorch.org/
验证pytorch是否安装完成:
1)你可以像我图片一样输入
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
#分别输入
2)也可以在PyCharm里 输入以下代码验证
import torchprint(torch.__version__)
print(torch.version.cuda)
print(torch.cuda.is_available())
先创建一个项目,在项目里创建一个python文件,复制代码,点击运行即可
二、下载Yolov8
1、下载模型
先打开Github:https://github.com/ (需要加速器)
在Github里搜索:ultralytics/ultralytics
2、将项目导入PyCharm
打开你的PyCharm,并创建一个新的项目
右上角新建项目
导入刚才下载的模型
找到刚刚解压好的文件导入
修改环境
如果不行,请在重复一次,看看有没有应用
将你下载的包加载到环境中:
在下面控制台里有一个终端,在终端里输入
pip install -e .
下载完后可以查看一下
pip list
往下可以看到这个,说明没有问题
3、初体验模型
①、体验前先到官网下载一个已经训练好的模型
Ultralytics YOLO:https://docs.ultralytics.com/zh
将下载完的文件复制到ultralytics-8.0.59包里就行了
②、图片体验
最终的效果:
①、在我们的终端上输入(这里用的图片是项目自带的,在ultralytics/assets目录下)
#完整代码
yolo mode = 'predict' task='detect' model='yolov8n.pt' source='./ultralytics/assets/bus.jpg'
#mode:模式---predict:推理预测
#task:任务---detect:检测
#model:模型#简化的代码
yolo predict model='yolov8n.pt' source='./ultralytics/assets/bus.jpg'
#task默认的是detect
#当然source也可以有其他
#source='video.mp4'
#source='screen'检测屏幕
#source=0 检测摄像头
②、或者我们也可以用python代码来检测
创建一个python文件
输入代码
from ultralytics import YOLO
yolo = YOLO("./yolov8n.pt", task="detect")
result = yolo(source="./ultralytics/assets/bus.jpg", save=True)
#如果你不想要将检测完的结果保存可以将save=True删除,不删除的话图片会保存在runs目录下
补充:
如果你的终端是这样的,说明你还没有激活环境,输入conda activate yolov8即可
可用一下代码来查看自己的环境
conda env list
说明现在是用的yolo模型
三、如何导出训练好的模型
如果你自己训练了一个模型想要将模型导出,放进自己的项目里,可以参考一下我下面的方法
1、将训练的YOLOv8模型转换成ONNX文件
①在终端输入这串代码安装onnx
pip install --upgrade onnx
②在PyCharm里创建一个python文件
import argparse
import cv2
import numpy as np
import onnxruntime as ort
import torch
from ultralytics import YOLOfrom ultralytics import YOLO
model = YOLO('yolov8n.pt')
model.export(format='onnx')
然后直接右击点击运行
同时在PyCharm里左侧也会有一个onnx文件
2、将转化好的onnx文件转化成ncnn文件
①现在网上许多的教程都是使用一键转换的网站
一键转换网址:https://convertmodel-1256200149.cos-website.ap-nanjing.myqcloud.com/
但是在我导出时这个网站是失效的,我是导不出来,所以我选择了接下来很麻烦的一种方法
②使用VS来转换(这个方法亲测有效就是太麻烦了,不嫌麻烦的可以跟做)
1)首先先安装Visual Studio: https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
下载免费的社区版即可,这里我下的是2022版的
记得选择C++桌面开发
2)下载CMake :https://cmake.org/download/ (根据自己的需求选择)
下载解压好会得到这些文件夹
添加系统环境:点击bin文件,复制路径
退回桌面右击此电脑,点击属性,点击高级系统设置,点击环境变量,找到系统环境里的Path,在path将刚刚复制的路径粘贴,然后一直点确定即可,最后点击Win+R,输入cmd,在里面输入cmake
3)下载Protobuf :https://github.com/google/protobuf/archive/v3.11.2.zip (在浏览器里直接搜就行了)
4)下载ncnn:https://gitcode.com/gh_mirrors/nc/ncnn/tags/20201218?utm_source=csdn_github_accelerator&isLogin=1
这里建议新建一个文件夹,方便后面操作
5)配置环境:
在这个窗口里输入这些代码(依次输入)
Ⅰ、编译Protobuf
这个是Protobuf 3.11.2的根目录,自行更换路径(例如我的就是D:\protobuf\protobuf-3.11.2)
cd <protobuf-root-dir>mkdir build-vs2022cd build-vs2022cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
如果你在cmake这一步显示的不是图片上的,那么请你输入where nmake指令,检查 nmake
是否在 PATH
中
如果返回空,说明 nmake
不在 PATH
中,可能是 Visual Studio 的 C++ 工具链未正确安装
解决方法:请你找到VS的文件夹
如果没有问题就接着输入
nmake
nmake install
执行完nmake命令出现下面的界面则表示编译成功
执行nmake install进行下载
到此 Protobuf 就算编译完成了
Ⅱ、接下来编译 ncnn
这个ncnn的根目录,自行更换路径(例如我的就是D:\ncnn\ncnn-20201218)
注意:cmake里有三个需要替换
cd <ncnn-root-dir>mkdir build-vs2022cd build-vs2022cmake -G "NMake Makefiles" ^-DCMAKE_BUILD_TYPE=Release ^-DCMAKE_INSTALL_PREFIX=%cd%/install ^-DProtobuf_INCLUDE_DIR=D:\protobuf\protobuf-3.11.2\build-vs2022\install\include ^-DProtobuf_LIBRARIES=D:\protobuf\protobuf-3.11.2\build-vs2022\install\lib\libprotobuf.lib ^-DProtobuf_PROTOC_EXECUTABLE=D:\protobuf\protobuf-3.11.2\build-vs2022\install\bin\protoc.exe ^-DNCNN_VULKAN=OFF ^..
这一步的Cmake指令自己要改的地方挺多的,如果失败了就仔细检查一下,看看版本号是不是与自己的一样,根目录有没有写错
接下来接着输入
nmake
nmake install
执行完nmake命令出现下面的界面
执行nmake install
结束后我们找到ncnn新建的那个build-vs2022文件夹->tools->onnx目录下,这样就可以看到生成了一个onnx2ncnn的exe文件
Ⅲ、下面就可以通过命令将onnx转成ncnn文件了
1)首先我们先进入D:\ncnn\ncnn-20201218\build-vs2022\tools\onnx目录下(终端)
cd.tools
cd.onnx
2)输入代码onnx2ncnn best.onnx best.param best.bin,将上述的best全换成你模型的名字,例如:
onnx2ncnn yolov8n.onnx yolov8n.param yolov8nt.bin
3)找到之前我们转换好的.onnx文件,复制到D:\ncnn\ncnn-20201218\build-vs2022\tools\onnx下
再一次打开onnx文件就能找到.bin和.param文件
接下来就可以通过这两个文件来部署了