fater-rcnn绘制loss图

py-fater-rcnn根据生成的log文件绘制loss图。

一般输出是下图中的第一幅图(对应位置为2,5,1),但本身并没有多大的意义,只有将其平均之后如(对应位置为2,5,6),才能看出loss是否还在下降。


# -*- coding: utf-8 -*-
"""
Created on Wed Jun 13 09:58:00 2018

@author: ygx
"""
# -*- coding:utf-8 -*-
# !/usr/bin/env python
import matplotlib.pyplot as plt
f1=open('faster_rcnn_end2end_VGGcp_.txt.2018-06-12_17-51-16','r')
lines=f1.readlines()
i=0
Iteration=[]
loss=[]
loss_bbox=[]
loss_cls=[]
rpn_cls_loss=[]
rpn_loss_bbox=[]
for line in lines:  
    if line.find('solver.cpp:229] Iteration')>0:       
        Iteration.append(int(line.split('Iteration ')[1].split()[0].split(',')[0]))
        loss.append(float(line.split(' ')[-1]))
        i=i+1
        print '***',i,'***'     
    if line.find('Train net output #0:')>0:       
        loss_bbox.append(float(line.split(' ')[-6]))
    if line.find('Train net output #1:')>0:       
        loss_cls.append(float(line.split(' ')[-6]))
    if line.find('Train net output #2:')>0:       
        rpn_cls_loss.append(float(line.split(' ')[-6]))
    if line.find('Train net output #3:')>0:       
        rpn_loss_bbox.append(float(line.split(' ')[-6]))          
##总的loss图,我自己sovel文件中设置的是log文件中每20次显示一次       
plt.subplot(251)
plt.title('loss') 
plt.plot(Iteration,loss,c='green')

plt.subplot(252)
plt.title('loss_bbox') 
plt.plot(Iteration,loss_bbox,c='green')

plt.subplot(253)
plt.title('loss_cls') 
plt.plot(Iteration,loss_cls,c='green')

plt.subplot(254)
plt.title('rpn_cls_loss') 
plt.plot(Iteration,rpn_cls_loss,c='green')

plt.subplot(255)
plt.title('rpn_loss_bbox') 
plt.plot(Iteration,rpn_loss_bbox,c='green')

##平均的loss图
n=50 #(每20次显示一次loss平均一次loss)20*n表示真正的,这里1000次平均
k=len(Iteration)/n
loss_avg_=[]
loss_bbox_=[]
loss_cls_=[]
rpn_cls_loss_=[]
rpn_loss_bbox_=[]

for i in range(k):
    loss_avg_.append(sum(loss[i*n:(i+1)*n])/n)
plt.subplot(256)
plt.title('loss_avg') 
plt.plot(range(k),loss_avg_,c='red')

for i in range(k):
    loss_bbox_.append(sum(loss_bbox[i*n:(i+1)*n])/n)
plt.subplot(257)
plt.title('loss_bbox_avg')
plt.plot(range(k),loss_bbox_,c='red')

for i in range(k):
    loss_cls_.append(sum(loss_cls[i*n:(i+1)*n])/n)
plt.subplot(258)
plt.title('loss_cls_avg') 
plt.plot(range(k),loss_cls_,c='red')

for i in range(k):
    rpn_cls_loss_.append(sum(rpn_cls_loss[i*n:(i+1)*n])/n)
plt.subplot(259)
plt.title('rpn_cls_loss_avg') 
plt.plot(range(k),rpn_cls_loss_,c='red')

for i in range(k):
    rpn_loss_bbox_.append(sum(rpn_loss_bbox[i*n:(i+1)*n])/n) 
plt.subplot(2,5,10 )
plt.title('rpn_loss_bbox_avg')
plt.plot(range(k),rpn_loss_bbox_,c='red')

plt.show()
f1.close()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值