fater-rcnn绘制loss图

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

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

fater-rcnn绘制loss图_第1张图片

# -*- 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()

你可能感兴趣的:(faster-rcnn,代码分享)