All Projects → Liu-Yicheng → R Cnn

Liu-Yicheng / R Cnn

My implementation of RCNN for the Flower Dates

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to R Cnn

Vehicle detection recognition
This is a Matlab lesson design for vehicle detection and recognition. Using cifar-10Net to training a RCNN, and finetune AlexNet to classify. Thanks to Cars Dataset:http://ai.stanford.edu/~jkrause/cars/car_dataset.html
Stars: ✭ 183 (+232.73%)
Mutual labels:  rcnn
OCR
Optical character recognition Using Deep Learning
Stars: ✭ 25 (-54.55%)
Mutual labels:  rcnn
Textclassificationbenchmark
A Benchmark of Text Classification in PyTorch
Stars: ✭ 534 (+870.91%)
Mutual labels:  rcnn
RCNN
Step-By-Step Implementation of R-CNN from scratch in python
Stars: ✭ 75 (+36.36%)
Mutual labels:  rcnn
rt-mrcnn
Real time instance segmentation with Mask R-CNN, live from webcam feed.
Stars: ✭ 47 (-14.55%)
Mutual labels:  rcnn
medical-diagnosis-cnn-rnn-rcnn
分别使用rnn/cnn/rcnn来实现根据患者描述,进行疾病诊断
Stars: ✭ 39 (-29.09%)
Mutual labels:  rcnn
Tf deformable net
Deformable convolution net on Tensorflow
Stars: ✭ 173 (+214.55%)
Mutual labels:  rcnn
Keras Textclassification
中文长文本分类、短句子分类、多标签分类、两句子相似度(Chinese Text Classification of Keras NLP, multi-label classify, or sentence classify, long or short),字词句向量嵌入层(embeddings)和网络层(graph)构建基类,FastText,TextCNN,CharCNN,TextRNN, RCNN, DCNN, DPCNN, VDCNN, CRNN, Bert, Xlnet, Albert, Attention, DeepMoji, HAN, 胶囊网络-CapsuleNet, Transformer-encode, Seq2seq, SWEM, LEAM, TextGCN
Stars: ✭ 914 (+1561.82%)
Mutual labels:  rcnn
YuzuMarker
🍋 [WIP] Manga Translation Tool
Stars: ✭ 76 (+38.18%)
Mutual labels:  rcnn
Text Classification Models Pytorch
Implementation of State-of-the-art Text Classification Models in Pytorch
Stars: ✭ 379 (+589.09%)
Mutual labels:  rcnn
Object-Detection-Tensorflow
Object Detection API Tensorflow
Stars: ✭ 275 (+400%)
Mutual labels:  rcnn
video title classification
Video short title classification.
Stars: ✭ 12 (-78.18%)
Mutual labels:  rcnn
Object Detection Api Tensorflow
Object Detection API Tensorflow
Stars: ✭ 267 (+385.45%)
Mutual labels:  rcnn
RCNN-Vehicle-Tracking-Lane-Detection
Vehicle Detection using Mask R-CNN and Computer Vision based Lane Detection
Stars: ✭ 116 (+110.91%)
Mutual labels:  rcnn
Textclassification Keras
Text classification models implemented in Keras, including: FastText, TextCNN, TextRNN, TextBiRNN, TextAttBiRNN, HAN, RCNN, RCNNVariant, etc.
Stars: ✭ 621 (+1029.09%)
Mutual labels:  rcnn
Dockerface
Face detection using deep learning.
Stars: ✭ 173 (+214.55%)
Mutual labels:  rcnn
object-tracking
Multiple Object Tracking System in Keras + (Detection Network - YOLO)
Stars: ✭ 89 (+61.82%)
Mutual labels:  rcnn
Textclassification
All kinds of neural text classifiers implemented by Keras
Stars: ✭ 51 (-7.27%)
Mutual labels:  rcnn
Tffrcnn
FastER RCNN built on tensorflow
Stars: ✭ 898 (+1532.73%)
Mutual labels:  rcnn
Fastmaskrcnn
Mask RCNN in TensorFlow
Stars: ✭ 3,069 (+5480%)
Mutual labels:  rcnn

RCNN

Rich feature hierarchies for accurate object detection and semantic segmentation

工程内容

这个程序是基于tensorflow实现RCNN功能。

开发环境

windows10 + python3.5 + tensorflow1.2 + tflearn + cv2 + scikit-learn
i5-7500 + GTX 1070Ti

数据集

采用17flowers据集, 官网下载:http://www.robots.ox.ac.uk/~vgg/data/flowers/17/

程序说明

1、config.py---网络定义、训练与数据处理所需要用到的参数
2、Networks.py---用于定义Alexnet_Net模型、fineturn模型、SVM模型、边框回归模型
4、process_data.py---用于对训练数据集与微调数据集进行处理(选择性搜索、数据存取等)
5、train_and_test.py---用于各类模型的训练与测试、主函数
6、selectivesearch.py---选择性搜索源码

文件说明

1、train_list.txt---预训练数据,数据在17flowers文件夹中
2、fine_tune_list.txt---微调数据2flowers文件夹中
3、直接用选择性搜索的区域划分    通过RCNN后的区域划分  通过SVM与边框回归之后的最终结果
  selectivesearch_1   RCNN_1   RCNN_2

程序问题

1.参考代码给出了R-CNN十分清晰的主体流程,但缺失了最后的边框回归步骤。在实现的部分中使用了tflearn来实现
 网络的定义与使用,好处是使用十分简单,使得程序易懂,代价是效率与灵活性。
2.在保留参考代码的主体思想与一些小轮子的基础上,本代码实现了各个网络定义与使用的每一个具体步骤
 与集成数据处理各个步骤。本次学习的目的:学习RCNN的实现过程,熟悉用tensorflow来构建网络与训练
3.微调时的数据集存在一定的问题:一张图片经过筛选后一般保留100-200个候选框,当这些候选框与ground_truth的
 IOU大于0.3时,我们将其认为是目标,小于0.3时我们认为是背景。实际情况是,目标候选框与背景候选框的比例过于
 悬殊,可能达到几十比一的比例,这就导致了在微调训练时效果并不是特别好。  解决思路:将目标候选框与背景候选框在数据处理时就分开保存,之后训练时,按1:2的比例调数据进行训练。待续
4.在训练边框回归网络时,采用ReLU激活函数导致训练失败,许多权重都被变为0, 再一次证明了Relu的脆弱性。因此
 采用了tanh激活函数,问题得到解决。上一次发生这种情况采用Leaky ReLU激活函数(可以解决ReLU易坏死问题)。
5.SVM训练过程,没有采用论文所描述的hard negative mining method与NMS,简单化了。

论文细节补充:

1.finturn过程: 计算每个region proposal与人工标注的框的IoU,IoU重叠阈值设为0.5,大于这个阈值的作为正样本,其他作
 为负样本。然后在训练的每一次迭代中都使用32个正样本(包括所有类别)和96个背景样本组成的128张图片的batch
 进行训练(正样本图片太少了)
2.SVM训练过程:
 对每个类都训练一个线性的SVM分类器,训练SVM需要正负样本文件,这里的正样本就是ground-truth框中的图像作
 为正样本,完全不包含的region proposal应该是负样本,但是对于部分包含某一类物体的region proposal该如
 何训练作者同样是使用IoU阈值的方法,这次的阈值为0.3,计算每一个region proposal与标准框的IoU,小于0.3
 的作为负样本,其他的全都丢弃。由于训练样本比较大,作者使用了standard hard negative mining method
 (具体怎么弄的不清楚)来训练分类器。作者在补充材料中讨论了为什么fine-tuning和训练SVM时所用的正负样本
 标准不一样,以及为什么不直接用卷积神经网络的输出来分类而要单独训练SVM来分类,作者提到,刚开始时只是用了
 ImageNet预训练了CNN,并用提取的特征训练了SVMs,此时用正负样本标记方法就是前面所述的0.3,后来刚开始使用
 fine-tuning时,使用了这个方法但是发现结果很差,于是通过调试选择了0.5这个方法,作者认为这样可以加大样本
 的数量,从而避免过拟合。然而,IoU大于0.5就作为正样本会导致网络定位准确度的下降,故使用了SVM来做检测,全
 部使用ground-truth样本作为正样本,且使用非正样本的,且IoU小于0.3的“hard negatives”,提高了定位的准确度。
3.hard negatives:
 在训练过程中会出现 正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多false positive。  采取办法可以是,先将正样本与一部分的负样本投入模型进行训练,然后将训练出来的模型去预测剩下未加入训练过程的负样本,  当负样本被预测为正样本时,则它就为false positive,就把它加入训练的负样本集,进行下一次训练,知道模型的预测精度不再提升  这就好比错题集,做错了一道题,把它加入错题集进行学习,学会了这道题,成绩就能得到稍微提升,把自己的错题集都学过去,成绩就达到了相对最优

参考

1、论文参考:
https://www.computer.org/csdl/proceedings/cvpr/2014/5118/00/5118a580-abs.html
2、代码参考:
https://github.com/yangxue0827/RCNN
https://github.com/edwardbi/DeepLearningModels/tree/master/RCNN
3、博客参考:
http://blog.csdn.net/u011534057/article/details/51218218
http://blog.csdn.net/u011534057/article/details/51218250

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].