继续学习了YOLO论文
,感觉技术部分已经了解了,继续学的这一部分就是对论文结构的一个了解。
后面的部分都应该是写论文的套路,到什么位置该写对比、优势,展望等
1.YOLO里最开始是和一个模型的对比,并讨论了优势
2.讨论了当前的模型是速度最快的,且精度较高的模型,一秒可以处理40张图片
3.后面是和一堆模型的对比,准确度和精确度用两个模型做到了最好
4.展望的位置是,和之前较优的模型进行结合是否会有更好的效果
了解了当前的论文方向和创新点
继续pytorch学习,想今天卷完(了解了一下电脑配置问题,目前就是现用现租)
使用pytorch实现了vgg16网络在CIFAR10数据集上进行分类训练
代码(做了一些输出调试,网络一定要用.py文件保存否则无法引入包)
网络
import torch
from torch import nn
# 搭建神经网络
class Dsc(nn.Module):
def __init__(self):
super(Dsc, self).__init__()
self.model = nn.Sequential(
nn.Conv2d(3, 32, 5, 1, 2),
nn.MaxPool2d(2),
nn.Conv2d(32, 32, 5, 1, 2),
nn.MaxPool2d(2),
nn.Conv2d(32, 64, 5, 1, 2),
nn.MaxPool2d(2),
nn.Flatten(),
nn.Linear(1024, 64),
nn.Linear(64, 10)
)
def forward(self, x):
x = self.model(x)
return x
if __name__ == '__main__':
dsc = Dsc()
input = torch.ones((64, 3, 32, 32))
output = dsc(input)
print(output.shape)
# 对模型进行测试,用准确率检验模型的训练效果
训练代码
# 设置训练网络的一些参数
total_train_step = 0 # 记录 训练 的次数
total_test_step = 0 # 记录 测试 的次数
epoch = 5 # 训练的轮数
for i in range(epoch):
print("------第{}轮训练开始--------".format(i+1))
for data in train_dataloader:
imgs, targets = data
output = dsc(imgs)
loss = loss_fn(output, targets) # 计算损失函数放入模型预测的输出,和真实的标签
optimizer.zero_grad() # 优化器清零
loss.backward() # 得到每一个参数结点的梯度
optimizer.step() # 对其中的参数进行优化
total_train_step = total_train_step + 1
if total_train_step % 200 == 0:
print("训练次数: {}, Loss: {}".format(total_train_step, loss.item())) # 这里不加item也只输出数字,具体例子见上个代码块
writer.add_scalar("train_loss", loss.item(), total_train_step)
# 测试步骤
total_test_loss = 0
total_accuracy = 0
with torch.no_grad():
for data in test_dataloader:
imgs, targets = data
output = dsc(imgs)
loss = loss_fn(output, targets)
total_test_loss = total_test_loss + loss.item()
accuracy = (output.argmax(1)==targets).sum()
total_accuracy = total_accuracy + accuracy
acc = total_accuracy / test_data_size
print("整体测试集上的loss: {}".format(total_test_loss))
print("第{}轮模模型,整体测试集上的正确率: {}".format(i+1, acc))
print("---------准确率 {}, 步数 {}".format(acc, total_test_step))
writer.add_scalar("test_loss", loss.item(), total_test_step)
writer.add_scalar("test_accuracy", acc.item(), total_test_step)
total_test_step = total_test_step + 1
# 保存模型
torch.save(dsc, "dsc_{}.pth".format(i))
print("~~~~~~第{}轮模型已保存~~~~~~".format(i+1))
writer.close()