YOLOv3可视化Loss曲线

YOLOv3如何打印Loss曲线
我接触这个框架有一段时间了,我是基于pytorch框架跑的代码,有童鞋想问怎么跑这个YOLOv3试验,这里我建议先学习一下这篇YOLOv3训练自己的数据集(pytorch框架)博客链接,我也是先跑通这个试验才学着处理自己的数据集的,新手也不要害怕,可能自己的电脑配置环境,还有版本的一些问题,可能跑起来都不顺利,我的经验是变得厚脸皮一点,可以私信或者评论大佬们的博客,看看有没有好心的人可以回复,或者加相关的群问,总有人碰到类似的问题,总有人会给你回复,也是学习。

好了,啰嗦了半天,都跑题了,嗯,我比较适合劝学~切题,我今天想介绍2种打印Loss曲线的方法,我第一段中提到的博客,results.png图片中没有找到Loss曲线,只有Giou,map,F1等指数,就是没有LOSS曲线,loss曲线在深度学习中的作用,大家应该都知道,于是我找了2种方法来打印loss曲线,记录一下,方便以后查看。

1.python代码实现loss曲线的绘制
**特别注意:**首先在yolov3中生成的results.txt文件中的第六列就是咱们的loss值,python程序只需要读取这个文件就能画出loss曲线了。这里说一下,这个results.txt文件第一列/1…这种要删除,换成1.2.3…;第三列我记不清了有个G也得全部去掉,因为不去掉这2个地方,python读取文件的时候就会报错。
有网友问我如何批量删除这2列,他说他是一个个手动删除的列,OMG~~如果训练1000epoch那是不是要手动删除2000次。想办法呗!(办法应该很多,我觉得这个好用就用啦)
开始我在python程序中删除,发现不好删,后面我百度了一下将txt文件f复制到word中删除列好方便啊,光标定位在第二列第一个字的前面,然后按住Alt键,拖动鼠标,选中第二列字,松开Alt键,点击Delete键即可。

我参考的这个python代码实现loss曲线的绘制链接这个博客是画2条曲线,我们可以去掉另外一条线的代码,我贴一下去掉后的代码如下:
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
data1_loss =np.loadtxt(“D:\results.txt”)#results.txt存放路径
#print(data1_loss[0])

x = data1_loss[:,0] #第一列
y = data1_loss[:,5] #loss值第六列,所以是5
fig = plt.figure(figsize = (7,5)) #figsize是图片的大小ax1 = fig.add_subplot(1, 1, 1) # ax1是子图的名字
pl.plot(x,y,‘r-’,label=u’result’)
**# ‘’g‘’代表“green”,表示画出的曲线是绿色,“-”代表画的曲线是实线,可自行选择,label代表的是图例的名称,一般要在名称前面加一个u,如果名称是中文,会显示不出来,目前还不知道怎么解决。

p2 = pl.plot(x1, y1,‘r-’, label = u’RCSCA_Net’)

#显示图例

p3 = pl.plot(x2,y2, ‘b-’, label = u’SCRCA_Net’)**

pl.legend()
pl.xlabel(u’epoch’)
pl.ylabel(u’loss’)
plt.title(’ loss for yolov3 models in training’)
plt.show()
结果如下图:
YOLOv3可视化Loss曲线_第1张图片
另外一种就是使用tensorboard可视化loss曲线另外还有这个链接大家可以先了解一下,主要是还是依靠train.py里面添加几行代码就可以可视化了
首先你的电脑得安装了tensorboard,我之前电脑就装了tensorflow,先了解一下如何安装安装tesnorboard链接参考你只有安装了这个在train.py中修改代码才能生效。
话不多说了,下面我展示下在train.py中我的代码加在哪里
tensorboard可视化
前面可以导入包
train代码在第五行左右加入writer = SummaryWriter(comment=‘Linear’)如下:
import torch
import torch.nn as nn
from tensorboardX import SummaryWriter
import matplotlib.pyplot as plt
writer = SummaryWriter(comment=‘Linear’)

在279行左右加入打印loss函数writer.add_scalar(‘Train’, loss, epoch)

Compute loss

        loss, loss_items = compute_loss(pred, targets, model)
        if epoch % 10 == 0:
            writer.add_scalar('Train', loss, epoch)

在runs文件夹下打开终端运行 :tensorboard --logdir=Mar08_18-27-26_lmars-VM-ULinear
注意:这里一定要在runs文件夹内运行,不然会访问不了路径。输入上面的命令就出现了一串地址的链接,复制该链接在浏览器上就出现了下图的loss曲线:
YOLOv3可视化Loss曲线_第2张图片
至此,loss曲线可视化就完成啦!
其实pytroch自带的visdom工具也可以,我还没用过,大家可以试试啊,办法很多很多~~~~

你可能感兴趣的:(深度学习,python,YOLOv3)