目录
引言
安装相关
安装Anaconda
通过链接Anaconda下载安装包并根据提示安装到自己的目标目录下。国内网络环境不友好,可以更换国内镜像源。
然后在当前环境下创建一个新的环境命名为 pytorch(可随意确定)
并切换到新环境(pytorch)下,再安装pytorch所需的环境
|
|
安装完成之后进行验证
|
|
Tensorboard使用 举一个简单的画三角函数图像的例子:
|
|
然后通过命令 tensorboard --logdir=test_logs,根据提示可以打开网页看到结果,如下图所示。

Transforms图像变换
|
|
transforms.Compose组合实现各种变化
|
|
torchvision、DataLoader
nn.Module
卷积层
激活层
池化层
全连接层
损失函数
L1Loss && MSELoss
假设预期结果为 [1, 2, 8],但实际结果为 [1, 2, 3]
定义:
$$ ℓ(x,y)=\begin{cases} mean(L),\quad reduction=mean; \\\\ sum(L),\quad reduction=sum \end{cases} $$
loss_l1 = nn.L1loss(reduction='mean'或者'sum')
L1Loss的结果:
$$ ℓ(x,y)=\begin{cases} \frac {(1 - 1) + (2 - 2) + (8 - 3)}{3} = 1.67 \quad reduction = mean \\\ (1 - 1) + (2 - 2) + (8 - 3) = 5 \quad reduction = sum \end{cases} $$
loss_mse = nn.MSELoss()
MSELoss的结果:
$$ ℓ(x,y)=\begin{cases} \frac {(1 - 1)^2 + (2 - 2)^2 + (8 - 3)^2}{3} = 8.33 \quad reduction = mean \\\ (1 - 1)^2 + (2 - 2)^2 + (8 - 3)^2 = 25 \quad reduction = sum \end{cases} $$
CrossEntropyLoss
torch.nn.CrossEntropyLoss(weight=None, ignore_index=- 100, reduction='mean', label_smoothing=0.0)
定义:
$$ loss(x, class) = -ln(\frac{e^{x[class]}}{\sum_j e^{x[j]}}) \\\ =-x[class] + ln(\sum_j e^{x[j]}) $$
|
|
CrossEntropyLoss的结果:
$$ loss(x, class) = -0.2 + ln(e^{0.1} + e^{0.2} + e^{0.3}) = 1.1019 $$
一个简单的例子(Cifar-10分类任务)

|
|
Pytorch 各种模型的格式
| 格式 | 说明 | 适用场景 | 对应后缀 |
|---|---|---|---|
.pt或.pth |
pytorch默认的模型文件 | 需要保存和加载完整Pytorch模型的场景 | .pt或.pth |
.bin |
通用的二进制格式 | 需要将Pytorch模型转化为通用的二进制格式的场景 | .bin |
.onnx |
通用的交叉模型格式 | 需要将Pytorch模型转化为其他深度学习框架或硬件平台可用的格式的场景 | .onnx |
| TorchScript | Pytorch提供的一种序列化和优化模型的方法 | 需要将Pytorch模型序列化和优化,并在没有Pytorch环境的情况下运行模型的场景 | .pt或.pth |
目标检测数据集
VOC数据集
- Annotations: 包含了xml文件,描述了图片的各种信息,特别是目标的坐标位置
- ImagesSets: 主要关注Main文件夹的内容,里面的文件包含了不同类别目标的训练/验证数据集的图片名称
- JPEGImages: 图片原文件
- SegentationClass/Object: 用于语义分割
COCO数据集
创建自己的coco数据集:
|
|
安装labelme,然后在当前目录执行命令:
|
|
其中文件链接labelme2coco.py和labels.txt文件示例如下(本演示只有一个标签raccoon):
|
|
之后会在coco目录下生成可用的coco数据集文件。
加载该数据集并可视化显示的代码如下:
|
|
To be contuine