YOLOv8安装配置全流程,一篇文章带你进入YOLOv8奇妙世界!(内涵yolov8资源)

最新版请移步

YOLOv8最新配置环境 (2024.7.23)

以下为老版本

这个是我上传到csdn的YOLOv8的整个文件夹(内含yolov8s.pt和yolov8n.pt)

第一步 下载YOLOv8代码

由于官网的数据更新,现在链接只能下载yolov11的代码(v11的代码也可以训练v8的预训练模型),需要yolov8代码可以下载之前上传的CSDN资源

github:YOLOv8-github

gitee:YOLOv8-gitee

推荐使用国内的gitee

第二步 创建conda虚拟环境

如果没有安装conda可以搜索一下conda配置教程,按照流程安装好conda,还要下载好符合自己电脑版本的CUDA 后续会用。

第一步 打开conda窗口 进入到安装的YOLOv8界面

请添加图片描述

第二步 创建新的虚拟环境

输入下面命令

conda create -n y8 python=3.8

请添加图片描述

是否安装环境所需基础包,输入y安装即可,安装完成如下图

请添加图片描述

输入下面命令查看是否创建成功

 conda env list 

在这里插入图片描述

激活进入环境

conda activate y8

在这里插入图片描述

激活成功后,前面的base会替换成y8

第三步 安装配置文件

首先先把pip的源换到国内aliyun镜像,下载速度提高很多

pip config set install.trusted-host mirrors.aliyun.com

首先conda环境cd进入ultralytics-main下,在文件夹内有个配置文件requirements.txt 在conda页面使用pip安装一下
注意如果是2024新版yolov8 requirements.txt文件在ultralytics.egg-info文件夹下

pip install -r requirements.txt

很多网友反应requirements.txt没有了,我把内容放在这,复制自己新建一个requirements.txt安装,配置环境。

# Ultralytics requirements
# Usage: pip install -r requirements.txt

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.64.0

# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

# Export --------------------------------------
# coremltools>=6.0,<=6.2  # CoreML export
# onnx>=1.12.0  # ONNX export
# onnxsim>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev>=2023.0  # OpenVINO export

# Extras --------------------------------------
psutil  # system utilization
py-cpuinfo  # display CPU info
# thop>=0.1.1  # FLOPs computation
# ipython  # interactive notebook
# albumentations>=1.0.3  # training augmentations
# pycocotools>=2.0.6  # COCO mAP
# roboflow

我已经安装了一遍,安装完成大概如下图所示

在这里插入图片描述

安装完配置文件在安装一下yolov8在python>=3.8版本必要安装包

pip install ultralytics

第四步 下载训练模型,推荐yolov8s.pt或者yolov8n.pt,模型小,下载快,在gitee或者github下方readme里面,下载完成后,将模型放在主文件夹下,

yolov8s.pt下载地址:yolov8s.pt

yolov8n.pt下载地址:yolov8n.pt

YOLOv8 可以在命令行界面(CLI)中直接使用,使用yolov8自带经典图片进行测试:
首先cd进入yolov8主文件夹下,运行下面命令

无显卡驱动
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg' device=cpu

有显卡驱动(看扩展的部分,安装gpu版本torch才能运行)
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg' device=0

在这里插入图片描述

我的结果保存在runs\detect\predict4中,你们的看Results saved to 存放地址,结果如下图

在这里插入图片描述

如果出现上面图片即成功

第四步 训练自己模型(cpu)

首先在yolov8主文件夹内创建data文件夹,创建一个data.yaml文件:

这里需要转成yolov8训练集 

train: xxx/xxx/images/train    //xxx/xxx为训练集图片根目录地址,一定要是绝对路径
val: xxx/xxx/images/val
nc: 1 #标签数量
names: ["1"]#标签名称

conda在主文件夹下运行下面命令:

yolo train data=data/data.yaml model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=cpu

data为yaml配置文件
model为下载的模型,放在主文件下
epochs为训练轮数
imagez为训练时ai看到的图片大小,检查大图片建议使用640,小图片可以320 越大越吃性能
batch为一轮训练中每一次放入图片数量,越大越快效果越好,但是对性能要求越高
device为使用的设备,使用cpu练就写cpu,使用显卡大多数都是0,多显卡就0,1,2,3,...多少显卡往后写多少

运行出现下面效果即为成功

在这里插入图片描述

扩展:训练自己的模型(GPU)

首先打开命令栏输入nvcc -V,查看自己的cuda版本
cuda版本查看

在使用nvidia-smi查看是否安装cuda,如果显示没有此命令则没有安装,去CUDA Toolkit Archive | NVIDIA Developer该网站,找到对应版本cuda和系统版本进行下载安装,具体安装步骤可以参考此教程【精选】CUDA安装及环境配置——最新详细版_abbrave的博客-CSDN博客,安装完成后再次输入nvidia-smi出现下图即为成功。
在这里插入图片描述再去pytorch官网,下载对应cuda版本和操作系统的pytorch,如果找不到对应版本,可以安装低于电脑cuda版本的pytorch。
在这里插入图片描述
例如图cuda11.1 在conda中创建的虚拟环境运行下面对应的pip安装,在安装命令后面加上-i https://pypi.douban.com/simple/ some-package 使用国内下载源进行下载大大减少下载时间,等他下载完,在当前conda安装环境输入pip list找到torch+torchaudio+torchvision三个包,如下图在版本后带有+cuxxx即为安装成功。
在这里插入图片描述
输入下面代码进行测试,如果有多个显卡,在device=0,1,2…

yolo train data=data/data.yaml model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=0

在这里插入图片描述
可以运行,并且在运行时显示显卡型号即为成功。

如果还有问题可以添加下面vx备注yolov8,我拉个群聊大家一起讨论

请添加图片描述

### YOLOv8 Neck 层详细介绍与工作原理 YOLO (You Only Look Once) 是一种广泛应用于实时目标检测的神经网络框架。随着版本迭代,YOLO 的性能不断提升,在速度和精度之间取得了良好的平衡。 #### 1. Neck 层的作用 Neck 层位于特征提取器(Backbone)之后,预测头(Head)之前。其主要功能是对 Backbone 提取的基础特征图进行进一步处理,增强模型的表现力。通过引入额外的操作来融合多尺度信息或者调整通道数,使得最终用于物体检测的特征更加丰富有效[^1]。 对于 YOLOv8 而言,Neck 部分采用了 CSP (Cross Stage Partial connections) 结构以及 PANet (Path Aggregation Network),这些设计有助于提高小目标检测能力并加速收敛过程。 #### 2. 特征金字塔网络(FPN) FPN 是构建 Neck 层的核心组件之一。它自顶向下地连接不同层次的特征映射,并横向连接相同分辨率级别的特征映射,从而形成一个多尺度特征表示体系。这种机制能够有效地捕捉图像中的全局上下文信息,同时保留局部细节特性,非常适合于解决目标大小变化较大的场景下的检测任务[^4]。 ```python def build_fpn_neck(features): """ 构建 FPN neck 层 参数: features -- 来自 backbone 输出的一系列特征图 返回: out_features -- 经过 fpn 处理后的多尺度特征列表 """ # 自底向上路径 bottom_up = [] for i in range(len(features)): if i == 0: p_out = conv_block(features[i]) else: upsampled = tf.image.resize(p_out, size=(features[i].shape[1], features[i].shape[2])) add_layer = tf.keras.layers.Add()([upsampled, features[i]]) p_out = conv_block(add_layer) bottom_up.append(p_out) # 自顶向下路径 top_down = [] reversed_bottom_up = list(reversed(bottom_up)) for idx, feature in enumerate(reversed_bottom_up[:-1]): downsampled = conv_block(feature) lateral_connection = tf.keras.layers.Conv2D(filters=downsampled.shape[-1], kernel_size=(1, 1), strides=(1, 1))(reversed_bottom_up[idx + 1]) combined_feature = tf.keras.layers.Concatenate(axis=-1)([lateral_connection, downsampled]) top_down.insert(0, combined_feature) return top_down + [bottom_up[-1]] ``` #### 3. Path Aggregation Network(PANet) PANet 进一步改进了传统 FPN 的单向信息流模式,增加了自下而上的强化路径。这不仅加强了低级语义特征向高级特征传递的能力,而且促进了跨层级间的信息交流,提高了模型的整体表现尤其是针对小型物体的识别效果[^2]。 ```python def path_aggregation_network(fpn_outputs): """ 实现 PANet 中的自上而下再加自下而上的双向信息流动 参数: fpn_outputs -- FPN 输出的多个尺度特征图 返回: pan_output -- 经过 PANet 加工后的特征集合 """ # 上采样阶段 upsamples = [] last_level = None for level in reversed(range(len(fpn_outputs))): current_level = fpn_outputs[level] if last_level is not None: upsampled_last = tf.image.resize(last_level, size=current_level.shape[1:3]) concatenated = tf.concat([current_level, upsampled_last], axis=-1) fused = conv_block(concatenated) else: fused = conv_block(current_level) upsamples.append(fused) last_level = fused downsamples = [] first_level = True for level in range(len(upsamples)): current_level = upsamples[::-1][level] if not first_level: downsampled_prev = max_pooling(prev_level) concatenated = tf.concat([current_level, downsampled_prev], axis=-1) fused = conv_block(concatenated) else: fused = conv_block(current_level) downsamples.append(fused) prev_level = fused first_level = False return downsamples ``` 综上所述,YOLOv8 的 Neck 设计综合运用了多种先进的技术手段,旨在提升模型对复杂环境适应性和检测准确性的同时保持较高的运算效率。
评论 285
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值