Faster Rcnn算法实现医学图像中血细胞检测
点击上方“码农的后花园”,选择“星标” 公众号
精选文章,第一时间送达
Faster Rcnn是何凯明等大神在2015年提出目标检测算法,该算法在2015年的ILSVRV和COCO竞赛中获得多项第一。该算法在Fast Rcnn基础上提出了RPN候选框生成算法,使得目标检测速度大大提高。
ILSVRC比赛 是2010~2017年关于计算机视觉目标检测的一个比赛,即我们所说的 ImageNet比赛 ,全称是ImageNet Large-Scale Visual Recognition Challenge,平常说的ImageNet比赛指的是这个比赛,这个比赛中提出了AlexNet、VGG、Inception、RseNet、DenseNet、SENet等经典神经网络。
ILSVRC 2017是ImageNet比赛的最后一届,2018年起由WebVision竞赛(Challenge on Visual Understanding by Learning from Web Data)来接棒。WebVision所使用的数据集dataset抓取自浩瀚的网络,不经过人工处理与label,难度大大提高,但也会更加贴近实际运用场景。
而我们通常提到的ImageNet是一个超过15million的图像数据库,大约有22000个目标类别,是由美国国家工程院院士李飞飞的团队2007年,耗费大量人力通过网络抓取、人工标注、亚马逊众包平台收集制作而成,还作为论文在CVPR-2009中发布,ILSVRC比赛用到的数据就是ImageNet图像数据库中的。
本次就将使用基于Faster RCNN算法对医学图像中血细胞进行检测,使用到的数据集是BCCD。
BCCD数据集
BCCD全称Blood Cell Classification Datasets ,该数据集是医学影像中一个比较古老的数据集,该数据集总共364张图像,包括白细胞WBC(White Blood Cell)、红细胞RBC(Red Blood Cell)、血小板Platelets总共3个类别的图像。
细胞类别图如上所示,黄色框代表红细胞,紫色框代表白细胞、粉色框代表白小板,总共的目标标签数为4888个,分布图如下,其中红细胞标签个数最多,白细胞和血小板标签个数差不多相同。
数据集格式文件如下所示,Annotations文件夹下存储以.xml文件格式的标签文件、ImageSets存储划分的训练、验证、测试数据集图片名字的.txt索引文件、JPEGImages存储原图图片。
预训练模型下载
这里Faster Rcnn的特征提取网络使用VGG16,也可以使用ResNet50或者ResNet101,下载对应的预训练权重即可,VGG16预训练权重下载地址:https://github.com/fchollet/deep-learning- models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5
修改Train.py文件,选择VGG16作为我们主干特征提取网络,导入数据集、Vgg16预训练权重。
修改训练路径
# 训练路径,如果是voc格式,就给个目录,目录下有Annotations等,如果是简单的解析,就给解析文件,我这里改成了细胞检测的目录parser.add_option("-p", "--path", dest="train_path", help="Path to training data.", default="D:\keras-faster-rcnn-master\Dataset")
用voc格式解析数据:
# 解析数据方式,就是VOC或者简单的解析,对应后面的keras_frcnn.pascal_voc_parser或者keras_frcnn.simple_parserparser.add_option("-o", "--parser", dest="parser", help="Parser to use. One of simple or pascal_voc", default="pascal_voc")
主干特征网络改VGG:
# 主干网络的选择,可以是vgg也可以是resnet50,resnet101,有对应的代码parser.add_option("--network", dest="network", help="Base network to use. Supports vgg or resnet50.", default='vgg')
预训练网络模型权重
# 输入的预训练模型参数parser.add_option("--input_weight_path", dest="input_weight_path", help="Input path for weights. If not specified, will try to load default weights provided by keras.", default='vgg16_weights_tf_dim_ordering_tf_kernels.h5')
修改pascal_voc_parser.py
文件
解析voc数据的py文件,因为Faster Rcnn 是基于VOC数据集格式训练的,即Annotations+ImageSets+JPEGImages,这个py文件就是利用这三个文件下的内容进行读取解析,从而分别获取训练、验证和测试数据集图像的标签信息(目标c+位置xywh)以及对应的图像等信息,再送入模型中进行训练。
原来data_paths = [os.path.join(input_path,s) for s in ['VOC2007','VOC2012']],
是指
将voc2007,和voc2012文件夹下数据一起训练:
这里只用细胞检测的数据集,所以将其改成data_paths = [os.path.join(input_path,s) for s in ['']]
,也就是不用加任何路径了,因为数据集文件夹下没有其它子数据集文件。
修改config.py
模型配置文件
#修改主干特征提取网络: VGG或者Restnet50或者Resnet101self.network = 'vgg'#原图缩放时固定短边的大小,源码是600,这里根据自己的GPU内存进行修改# size to resize the smallest side of the imageself.im_size = 400
#模型训练后权重文件self.model_path = 'model_frcnn.vgg.hdf5'
然后我们就可以运行train_frcnn.py开始训练模型了,这里还可以根据自己的需要修改模型迭代的epochs,学习率等,最终将训练的模型权重保存为model_frcnn.hdf5,全部模型保存到config.pickle文件。
修改并运行test_frcnn.py
测试文件
修改测试时的主干特征提取网络、测试使用的模型权重、以及模型为自己训练时使用的主干预训练特征提取网络,模型以及权重保存文件。
#测试图片文件路径parser.add_option("-p", "--path", dest="test_path", help="Path to test data.", default=r'D:\keras-faster-rcnn-master\Dataset\test')parser.add_option("-n", "--num_rois", type="int", dest="num_rois", help="Number of ROIs per iteration. Higher means more memory use.", default=32)#加载训练模型保存文件parser.add_option("--config_filename", dest="config_filename", help= "Location to read the metadata related to the training (generated when training).", default="config.pickle")#加载模型训练权重文件parser.add_option("--network", dest="network", help="Base network to use. Supports vgg or resnet50.", default='vgg')
测试结果:
代码下载和环境设置
完整论文以及代码下载,后台回复关键字:项目实战,即可获取数据集和源代码。
参考:
https://arxiv.org/abs/1506.01497
https://github.com/moyiliyi/keras-faster-rcnn
https://blog.csdn.net/wangwei19871103/article/details/100923206
更多优质内容?等你点在看
Faster Rcnn算法实现医学图像中血细胞检测相关推荐
- 【目标检测】Faster RCNN算法详解
转载自:http://blog.csdn.net/shenxiaolu1984/article/details/51152614 Ren, Shaoqing, et al. "Faster ...
- 用于目标检测的Faster R-CNN算法的实际实现
Introduction 您使用哪种算法进行对象检测任务? 为了在最短的时间内构建最精确的模型,我尝试了其中的一些. 这个跨越多个黑客马拉松和现实世界数据集的旅程通常总是让我进入R-CNN系列算法. ...
- DL之FasterR-CNN:Faster R-CNN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之FasterR-CNN:Faster R-CNN算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Faster R-CNN算法的简介(论文介绍) 1.实验结果 2.三者架构对 ...
- Faster RCNN算法详解
Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal ne ...
- 【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域
前言 B站讲解视频 我的研究生毕业论文方向就是时空行为检测,所以,slowfast和ava是我重点搞的,我的博客主页也有很多这些相关内容. 终于,到了标注数据这一块了,为了更简单的标注数据,我要做的这 ...
- RCNN、Fast RCNN、Faster RCNN算法详细介绍
目标检测是深度学习的一个重要应用,就是在图片中要将里面的物体识别出来,并标出物体的位置,一般需要经过两个步骤: 1.分类,识别物体是什么 2.定位,找出物体在哪里 除了对单个物体进行检测,还要能支持对 ...
- 采用两阶段Faster RCNN算法,引入light head的思想
近日,华为云自研的人脸算法FDNet1.0,在业界极具挑战难度的人脸检测平台 WIDER FACE多项测评中斩获业界第一,彰显华为云在人脸识别领域的创新能力.这是华为云首次斩获人脸检测领域的世界纪录, ...
- Fast rcnn and Faster rcnn 算法原理
转载: http://blog.csdn.net/shenxiaolu1984/article/details/51036677 http://blog.csdn.net/shenxiaolu1984 ...
- python cnn 实例_学习python的算法-Faster RCNN算法复现
[实例简介]Faster RCNN算法复现 [实例截图] [核心代码]详细见压缩包 ssdetection-master ├── LICENSE ├── README.md ├── cfgs │ ...
最新文章
- Boost signals(1) 基本介绍
- Python---多任务介绍以及Thread的基本使用
- 赶紧下载SublimeText并快速设置代码自动补全,效率大大提高
- 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86...
- .net5或.net6(Preview) 之 顶级语句
- mysql数据库的服务无法启动_mysql5数据库服务无法启动
- 小鱼比可爱(洛谷-P1428)
- express 4.*升级后带来的影响
- java焦点事件如何使用_Java中如何释放鼠标事件的焦?
- 微软新一代系统镜像 Windows 11 系统 ISO 镜像下载 - BT 磁力 / 网盘地址
- 怎么创建css样式表,为HTML5表单创建CSS样式
- 我得意地笑: 搞定了, 哈哈 如何读取Thermo Scientific Nicolet Omnic *.spa二进制格式的谱图文件中的数据
- 明月当空照,python3D编程初阶:坐标、模型、纹理与光
- Django06 后台管理
- 京东暑期实习面经(已OC)
- 农民工如何拥有500多家加盟连锁店,看他是怎样做到的?
- 高匿代理,混淆代理,匿名代理,透明代理略解
- PC端生成小程序二维码海报并下载
- docker 镜像简单使用
- Linux磁盘监控工具说明