目标检测——夏侯南溪模型搭建篇

Posted songyuc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测——夏侯南溪模型搭建篇相关的知识,希望对你有一定的参考价值。

1 网络模型的设计原则

1.1 归一化原则

对于深度神经网络来说,其输入最好进行归一化的设计,也就是目标值(的encoding)最好归一化到[0,1]的区间内;
参考模型:
YOLOV5——YOLO模型的标注使用的是yolo格式,yolo格式的数据是进行了归一化之后的数据,
​​​​

2 数据载入

定义自己的数据载入器,继承父类Dataloader
​​​​​​​注意:将pin_memory设置为True可以加快多进程方式的数据读取;

[PyTorch Official]: ​
Warning:
It is generally not recommended to return CUDA tensors in multi-process loading because of many subtleties in using CUDA and sharing CUDA tensors in multiprocessing (see CUDA in multiprocessing). Instead, we recommend using automatic memory pinning (i.e., setting pin_memory=True), which enables fast data transfer to CUDA-enabled GPUs.

3.1 图像文件无法读取?——需要修改当前的工作目录

可以参考下面的代码:
os.chdir(path.dirname(__file__))
其中函数的作用是,
path.dirname(__file__):获取当前文件的工作目录。

5 训练模型

5.1 初始化Dataloader对象,并用其载入数据;

(训练数据和验证数据使用不同的Dataloader)
注意:将num_workers设成CPU的核心数可以极大地提高训练速度,(我在学习DeepLabV3+试了一下,加速比大概在4倍左右!)
获得CPU的核心数:

import psutil
psutil.cpu_count(False)

这里我们就设置为psutil.cpu_count(False)-2,(为系统进程和UI进程留出2个CPU核心)。
pin_memory设置为True可以加快多进程方式的数据读取;

5.2 模型训练的PyTorch相关设置——model.enter_train_mode()

初始化检测器,记得将网络设置为train模式,

net.train()

将梯度重置为0

optimizer.zero_grad()


以上是关于目标检测——夏侯南溪模型搭建篇的主要内容,如果未能解决你的问题,请参考以下文章

《南溪的目标检测学习笔记》——权重初始化

《南溪的目标检测学习笔记》——模型预处理的学习笔记

YOLOv7学习夏侯南溪的学习笔记

YOLOv7学习夏侯南溪的学习笔记

《南溪的目标检测学习笔记》——性能优化的学习笔记

《南溪的目标检测学习笔记》——训练PyTorch模型遇到显存不足的情况怎么办