声明:每人都有自己的理解,动手实践才能对细节更加理解!

参考:https://www.cnblogs.com/darkknightzh/p/10043864.html

一.算法理解

  此处省略一万字。。。。。。。。。。。。。。。。。。

二.训练及源码理解

  首先配置:

  在./lib/utils文件下....运行

  python setup.py build_ext --inplace

  python setup.py build_ext install

  Go to ./lib/utils文件夹下...运行
  python setup.py build_ext --inplace
  1. 数据介绍:检测图片当中的手写体区域,图片不多自己标注了大约800张,但是图片中的手写体区域大约几千个,之前训练CTPN自己制作的数据集。
  2. 数据格式:分为3个文件夹,首先是JPEGImages(存放的训练图片,命名格式:000000.png,000001.png...等),然后是ImageSets(里面分Layout(包括test.txt,train.txt,trainval.txt,val.txt,存放训练测试验证的文件名称)和Main即可),另外Annotations(存放的是标注数据,xml格式的,之前数据标注在txt里面,自己转为xml标标准格式存储,或者用labelImg-master(Windows)标注,直接生成xml即可),至此数据准备完毕。。。。。。。
  3. 模型准备:默认前段卷积网络VGG16,vgg16需要自己下载,存放在路径.data/imagenet_weights/vgg16.ckpt
  4. 训练:train.py,主要流程及核心代码如下
    net.create_architecture(sess, "TRAIN", self.imdb.num_classes, tag='default')
    rois, cls_prob, bbox_pred = self.build_network(sess, training)  rois为roi pooling层得到的框,cls_prob分类得分,bbox_pred框预测
    net = self.build_head(is_training)  vgg16卷积层提取特征,图片缩小16倍
    rpn_cls_prob, rpn_bbox_pred, rpn_cls_score, rpn_cls_score_reshape = self.build_rpn(net, is_training, initializer)  rpn网络(anchor生成与原图对应坐标),分类得分,候选框偏移等
    rois = self.build_proposals(is_training, rpn_cls_prob, rpn_bbox_pred, rpn_cls_score)  通过超出图片区域,nms等筛选出合适的rois
    cls_score, cls_prob, bbox_pred = self.build_predictions(net, rois, is_training, initializer, initializer_bbox) roi pooling,全连接预测等
  5. 训练自己数据修改的地方,手写体识别就设置了一个类别:chinese,在源码pascal_voc.py中修改self._classes=('__background__', 'chinese')可以按照自己的类别进行修改,注意图片后缀格式,然后修改各种路径就可以训练了。
  6. 测试:迭代了10000次,用demo代码进行测试,数据较少,训练次数也不多,效果还可以,注意修改CLASSES = ('__background__', 'chinese') 预测结果如图所示:
  7.  

Faster Rcnn训练自己的数据集过程大白话记录的更多相关文章

  1. CTPN训练自己的数据集过程大白话记录

    一.算法理解 此处省略1万字.............. 二.训练及源码理解 配置以下3步: 在utils文件夹和utils\bbox文件夹下创建__init__.py文件 在utils\bbox文件 ...

  2. faster rcnn训练自己的数据集

    采用Pascal VOC数据集的组织结构,来构建自己的数据集,这种方法是faster rcnn最便捷的训练方式

  3. 如何才能将Faster R-CNN训练起来?

    如何才能将Faster R-CNN训练起来? 首先进入 Faster RCNN 的官网啦,即:https://github.com/rbgirshick/py-faster-rcnn#installa ...

  4. caffe学习三:使用Faster RCNN训练自己的数据

    本文假设你已经完成了安装,并可以运行demo.py 不会安装且用PASCAL VOC数据集的请看另来两篇博客. caffe学习一:ubuntu16.04下跑Faster R-CNN demo (基于c ...

  5. python3 + Tensorflow + Faster R-CNN训练自己的数据

    之前实现过faster rcnn, 但是因为各种原因,有需要实现一次,而且发现许多博客都不全面.现在发现了一个比较全面的博客.自己根据这篇博客实现的也比较顺利.在此记录一下(照搬). 原博客:http ...

  6. Fast RCNN 训练自己的数据集(3训练和检测)

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ https://github.com/YihangLou/fas ...

  7. faster rcnn训练详解

    http://blog.csdn.net/zy1034092330/article/details/62044941 py-faster-rcnn训练自己的数据:流程很详细并附代码 https://h ...

  8. Fast R-CNN训练自己的数据集时遇到的报错及解决方案

    最近使用Fast R-CNN训练了实验室的数据集,期间遇到一些报错,主要还是在配置环境上比较麻烦,但可以根据提示在网上找到解决这些错误的办法.这里我只记录一些难改的报错,以后再遇见这些时希望能尽快解决 ...

  9. faster rcnn训练过程讲解

    http://blog.csdn.net/u014696921/article/details/60321425

随机推荐

  1. python单例模式的实现与优化

    python单例模式的实现与优化 阅读目录(Content) 单例模式 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法实现(推荐使用,方便) 5.基于me ...

  2. HDU 1271

    这题做了好久..... 理解别人的代码都理解了好久!!!太弱太弱. #include<iostream> #include<algorithm> #include<cma ...

  3. [转载] iptables 防火墙设置

    http://hongwei.im/iptables-setting-for-ubuntu-1304/ Iptables是一个防火墙,所有的Ubuntu官方发行版(Ubuntu,Kubuntu,Xub ...

  4. js(三) ajax异步局部刷新技术底层代码实现

    ajax 异步 javaScript and xml 开发五步骤: 1. 创建对象 XMLHttpRequest(chrome,firefox) ie... jquery 2. 找到连接, http的 ...

  5. H3C 动态路由协议在协议栈中的位置

  6. Linux 内核 NuBus 总线

    另一个有趣的, 但是几乎被忘记的, 接口总线是 NuBus. 它被发现于老的 Mac 计算机(那 些有 M68K CPU 家族的). 所有的这个总线是内存映射的(象 M68K 的所有东西), 并且设备 ...

  7. Crazy Binary String<Map法>

    #include<cstdio> #include<iostream> #include<map> using namespace std; map<int, ...

  8. Netty小结

    前言 在实际开发中,netty的开发使用相对较小,why?在企业中涉及网络编程的部分比重较小,在这大环境内,企业会优先使用简单的http,udp等基础的通讯协议工具,如果不能满足需求,会考虑基于rpc ...

  9. easypermissions拒绝权限后闪退。 java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager

    Process: com.tazan.cd.streetlight, PID: 18825 java.lang.NoSuchMethodError: No virtual method isState ...

  10. Java 从入门到进阶之路(十九)

    在之前的文章我们介绍了一下 Java 中的Object,本章我们来看一下 Java 中的包装类. 在 Java 中有八个基本类型:byte,short,int,long,float,double,ch ...