关闭

利用 caffe 接口构建 CNN 网络

标签: caffe机器学习CNN
1855人阅读 评论(0) 收藏 举报
分类:

我的研究重点原本是在 Torch 上,我也很喜欢用 Torch 去实现网络。但最近不得不转到 caffe 上。

在实现上篇博文:论文阅读:Reading Text in the Wild with Convolutional Neural Networks 的代码时,在 Bounding Box Regression 部分,需要用 caffe 来实现这个网络。

而一开始我构建论文中提到的这个 CNN 网络时,并没有用 caffe 提供的接口,而是直接手写 train.prototxttest.prototxt 文件。结果除了很多错,caffe 的 layers 名称也在变化,所以极其不推荐这种方式。我这个网络较浅时还好,一旦网络很深,写起来累死人。

我将这个网络用 caffe 中的 draw_net.py 脚本生成图像,网络结构如下:

这里写图片描述

调用 caffe 的 python 接口,网络构建方式如下:

import os, sys, glob

CAFFE_PATH = '/home/chenxp/caffe/python'
sys.path.append(CAFFE_PATH)
import caffe
import caffe.io

from caffe import layers as L
from caffe import params as P

import h5py

def Bounding_Box_Reg(hdf5, batch_size):
    n = caffe.NetSpec()
    n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)
    n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=64, pad=2, weight_filler=dict(type='xavier'))
    n.relu1 = L.ReLU(n.conv1, in_place=True)
    n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)
    n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=128, pad=2, weight_filler=dict(type='xavier'))
    n.relu2 = L.ReLU(n.conv2, in_place=True)
    n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)
    n.conv3 = L.Convolution(n.pool2, kernel_size=3, num_output=256, pad=1, weight_filler=dict(type='xavier'))
    n.relu3 = L.ReLU(n.conv3, in_place=True)
    n.pool3 = L.Pooling(n.conv3, kernel_size=2, stride=2, pool=P.Pooling.MAX)
    n.conv4 = L.Convolution(n.pool3, kernel_size=3, num_output=512, pad=1, weight_filler=dict(type='xavier'))
    n.relu4 = L.ReLU(n.conv4, in_place=True)
    n.pool4 = L.Pooling(n.conv4, kernel_size=2, stride=2, pool=P.Pooling.MAX)
    n.ip1   = L.InnerProduct(n.pool4, num_output=4000, weight_filler=dict(type='xavier'))
    n.dp1   = L.Dropout(n.ip1, dropout_ratio=0.5)
    n.ip2   = L.InnerProduct(n.ip1, num_output=4, weight_filler=dict(type='xavier'))
    n.loss  = L.EuclideanLoss(n.ip2, n.label)

    return n.to_proto()

with open('BBR_train.prototxt', 'w') as f:
    f.write(str(Bounding_Box_Reg('train.h5', 16)))

with open('BBR_test.prototxt', 'w') as f:
    f.write(str(Bounding_Box_Reg('test.h5', 16)))

最后生成两个 prototxt 文件,一个是 BBR_train.prototxt,另一个是 BBR_test.prototxt 文件。

下图是自动生成的 BBR_train.prototxt 文件:

这里写图片描述

这样的方式更快速,还不容易出错~^_^

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

论文阅读:Reading Text in the Wild with Convolutional Neural Networks

来自 VGG 实验室,发表在 IJCV 上。实验步骤分为两部分,基于 region proposal mechanism 的检测文字部分,以及基于 CNN 的文字识别部分。在第一部分的 region proposal 部分,首先保证较高的 recall,尽量把所有可能的文字区域先检测出来;然后经过一...
  • u010167269
  • u010167269
  • 2016-08-27 21:41
  • 2882

文字检测与识别资源

本文转载自: http://blog.csdn.net/peaceinmind/article/details/51387367 综述 [2015-PAMI-Overview]Text Detection and Recognition in Ima...
  • hx921123
  • hx921123
  • 2017-02-24 15:26
  • 2819

论文阅读:Synthetic Data for Text Localisation in Natural Images

重新把注意力放到了 自然场景文本检测与识别 上了。已经从这块方向离开了一年多了。再回来,已经物是人非。都不像以前那么玩了,论文赶紧看起来。 上次阅读完 Reading Text in the Wild with Convolutional Neural Networks 之后,文中提到了作者自己生成...
  • u010167269
  • u010167269
  • 2016-08-31 22:24
  • 5074

多模态+Recorder︱多模态循环网络的图像文本互匹配

来源于公众号:大数据与多模态计算 .1.问题背景图像文本匹配,顾名思义,就是度量一幅图像和一段文本的相似性,该技术是多个模式识别任务的核心算法。例如,在图像文本跨模态检索任务中,当给定查询文本,需要依据图像文本的相似性去检索内容相似的图像;在图像描述生成任务中,给定一幅图像,需要依据图像内容检索相似...
  • sinat_26917383
  • sinat_26917383
  • 2017-05-01 12:17
  • 1233

Caffe源码理解(1)——caffe框架梳理

Caffe是深度学习的一种框架,由C++和Python编写,底层是C++源码。一、Caffe-master源代码大框架: 关键文件如下: - data:用于存放caffe-master中程序所需要的原始数据(图片等) - docs:用于存放帮助文档 - examples:用于存放代码 ...
  • Lucifer_zzq
  • Lucifer_zzq
  • 2017-06-14 22:50
  • 687

基于深度学习的自然场景文字识别

1.1引言 传统光学字符识别主要面向高质量的文档图像,此类技术假设输入图像背景干净、字体简单且文字排布整齐,在符合要求的情况下能够达到很高的识别水平。 与文档文字识别不同,自然场景中的文字识别 -----图像背景复杂、分辨率低下、字体多样、分布随意等,传统光学字符识别在此类情况下无法应用。 ...
  • roslei
  • roslei
  • 2017-06-08 16:24
  • 3013

CVPR2017论文

CVPR2017论文 http://openaccess.thecvf.com/menu.py Computer Vision Foundation open access These research papers are the Open Access versions, provid...
  • wzebinbin
  • wzebinbin
  • 2017-08-24 11:31
  • 2310

【论文笔记】Recursive Recurrent Nets with Attention Modeling for OCR in the Wild

《Recursive Recurrent Nets with Attention Modeling for OCR in the Wild》已经被CVPR 2016(CV领域三大顶会之一)正式接收了,主要是介绍了在lexicon-free的情况下,使用带Attention Model的recurci...
  • tmylzq187
  • tmylzq187
  • 2016-05-26 09:42
  • 4001

基于3D卷积神经网络的人体行为理解(论文笔记)

基于3D卷积神经网络的人体行为理解(论文笔记)zouxy09@qq.comhttp://blog.csdn.net/zouxy09        最近看Deep Learning的论文,看到这篇论文:3D Convolutiona...
  • zouxy09
  • zouxy09
  • 2013-05-31 21:16
  • 48376

再探OCR------text detection in natural scene自然场景下的字符识别 [持续更新]

A. Shahab, F. Shafait, A. Dengel, "ICDAR 2011 Robust Reading Competition - Challenge 2: Reading Text in Scene Images",  In Proc. 11th I...
  • traumland
  • traumland
  • 2016-06-25 21:58
  • 6756
    个人资料
    • 访问:262651次
    • 积分:2972
    • 等级:
    • 排名:第13747名
    • 原创:52篇
    • 转载:0篇
    • 译文:2篇
    • 评论:202条
    博客公告
    最新评论