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