Caffe版Faster R-CNN可视化——网络模型,图像特征,Loss图,PR曲线

本文详细介绍了如何使用Caffe进行Faster R-CNN的网络模型、图像特征、Loss和PR曲线的可视化,包括Netscope在线工具、draw_net.py脚本、修改demo.py以及使用deep-visualization-toolbox。通过可视化,有助于理解模型结构和性能。
摘要由CSDN通过智能技术生成

可视化网络模型

  Caffe目前有两种常用的可视化模型方式:
* 使用Netscope在线可视化
* Caffe代码包内置的draw_net.py文件可以可视化网络模型

Netscope

  Netscope能可视化神经网络体系结构(或技术上说,Netscope能可视化任何有向无环图)。目前Netscope能可视化Caffe的prototxt 文件。网址为:
http://ethereon.github.io/netscope/#/editor
  Netscope的使用非常简单,只需要将prototxt的文件复制到Netscope的编辑框,再按快捷键Shift+Enter即可得到网络模型的可视化结构。Netscope的优点是显示的网络模型简洁,而且将鼠标放在右侧可视化的网络模型的任意模块上,会显示该模块的具体参数。图1以Faster R-CNN中ZF模型的train.prototxt文件为例

图1 Netscope可视化ZF网络模型

图1 Netscope可视化ZF网络模

draw_net.py

  draw_net.py同样是将prototxt绘制成网络模型,在绘制之前,需要安装两个依赖库:

1、安装GraphViz
  # sudo apt-get install GraphViz
  注意,这里用的是apt-get来安装,而不是pip.
  2 、安装pydot
  # sudo pip install pydot
  用的是pip来安装,而不是apt-get

  安装完毕后,即可调用draw_net.py绘制网络模型,如绘制caffe自带的LeNet网络模型:

sudo python python/draw_net.py examples/mnist/lenet_train_test.prototxt netImage/lenet.png --rankdir=TB

  其中有三个参数,各自的含义为:

第一个参数:网络模型的prototxt文件
第二个参数:保存的图片路径及名字
第二个参数:–rankdir=x , x 有四种选项,分别是LR, RL, TB, BT 。用来表示网络的方向,分别是从左到右,从右到左,从上到小,从下到上。默认为LR。

  可视化结果如下图所示:

图2 draw_net.py可视化LeNet网络模型

图2 draw_net.py可视化LeNet网络模型

可视化图像特征

  关于图像的可视化,我也使用过两种两种方式:
* 修改demo.py代码输出中间层结果
* 使用可视化工具deep-visualization-toolbox

修改demo.py

  该部分是参考薛开宇的《caffe学习笔记》中的逐层特征可视化部分,还是以ZFNet网络训练Pascal VOC为例,修改demo.py文件后,代码如下:

#!/usr/bin/env python
#-*-coding:utf-8-*-


import matplotlib
matplotlib.use('Agg')
import _init_paths
from fast_rcnn.config import cfg
from fast_rcnn.test import im_detect
from fast_rcnn.nms_wrapper import nms
from utils.timer import Timer
import matplotlib.pyplot as plt
import numpy as np
import scipy.io as sio
import caffe, os, sys, cv2
import argparse

CLASSES = ('__background__',
           'aeroplane', 'bicycle', 'bird', 'boat',
           'bottle', 'bus', 'car', 'cat', 'chair',
           'cow', 'diningtable', 'dog', 'horse',
           'motorbike', 'person', 'pottedplant',
           'sheep', 'sofa', 'train', 'tvmonitor')

NETS = {
  'vgg16': ('VGG16',
                  'VGG16_faster_rcnn_final.caffemodel'),
        'zf': ('ZF',
                  'zf_faster_rcnn_iter_2000.caffemodel')}

def vis_detections(im, class_name, dets, thresh=0.5):
    """Draw detected bounding boxes."""
    inds = np.where(dets[:, -1] >= thresh)[0]
    if len(inds) == 0:
        return

    im = im[:, :, (2, 1, 0)]
    fig, ax = plt.subplots(figsize=(12, 12))
    ax.imshow(im, aspect='equal')
    for i in inds:
        bbox = dets[i, :4]
        scor
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值