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()
?
? ?
?
|