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

更多优质内容?等你点在看

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值