摘要: 本文在讲述RCNN系列算法基本原理基础上,使用keras实现faster RCNN算法,在细胞检测任务上表现优异,可动手操作一下。 目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法、SSD以及YOLO等。如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求在最短的时间内构建最精确的模型时,我尝试了其中的R-CNN系列算法,如果读者们对这方面的算法还不太了解的话,建议阅读《目标检测算法图解:一文看懂RCNN系列算法》。在掌握基本原理后,下面进入实战部分。 本文将使用一个非常酷且有用的数据集来实现faster R-CNN,这些数据集具有潜在的真实应用场景。 问题陈述数据来源于医疗相关数据集,目的是解决血细胞检测问题。任务是通过显微图像读数来检测每张图像中的所有红细胞(RBC)、白细胞(WBC)以及血小板。最终预测效果应如下所示: 选择该数据集的原因是我们血液中RBC、WBC和血小板的密度提供了大量关于免疫系统和血红蛋白的信息,这些信息可以帮助我们初步地识别一个人是否健康,如果在其血液中发现了任何差异,我们就可以迅速采取行动来进行下一步的诊断。 通过显微镜手动查看样品是一个繁琐的过程,这也是深度学习模式能够发挥重要作用的地方,一些算法可以从显微图像中分类和检测血细胞,并且达到很高的精确度。 本文采用的血细胞检测数据集可以从这里下载,本文稍微修改了一些数据:
这里使用流行的Keras框架构建本文模型。 系统设置在真正进入模型构建阶段之前,需要确保系统已安装正确的库和相应的框架。运行此项目需要以下库:
对于已经安装了Anaconda和Jupyter的电脑而言,上述这些库大多数已经安装好了。建议从此链接下载requirements.txt文件,并使用它来安装剩余的库。在终端中键入以下命令来执行此操作: pip install -r requirement.txt 系统设置好后,下一步是进行数据处理。 数据探索首先探索所拥有的数据总是一个好开始(坦率地说,这是一个强制性的步骤)。对数据熟悉有助于挖掘隐藏的模式,还可以获得对整体的洞察力。本文从整个数据集中创建了三个文件,分别是:
读取.csv文件并打印出前几行: # importing required libraries
下面打印出一张图片来展示正在处理的图像: # reading single image using imread function of matplotlib 上图就是血细胞图像的样子,其中,蓝色部分代表WBC,略带红色的部分代表RBC。下面看看整个训练集中总共有多少张图像和不同类型的数量。 # Number of classes 结果显示训练集有254张图像。 # Number of classes 结果显示有三种不同类型的细胞,即RBC,WBC和血小板。最后,看一下检测到的对象的图像是怎样的: fig = plt.figure() 上图就是训练样本示例,从中可以看到,细胞有不同的类及其相应的边界框。下面进行模型训练,本文使用keras_frcnn库来训练搭建的模型以及对测试图像进行预测。 faster R-CNN实现为了实现 faster R-CNN算法,本文遵循此Github存储库中提到的步骤。因此,首先请确保克隆好此存储库。打开一个新的终端窗口并键入以下内容以执行此操作: git clone https://github.com/kbardool/keras-frcnn.git 并将train_images和test_images文件夹以及train.csv文件移动到该存储库目录下。为了在新数据集上训练模型,输入的格式应为: filepath,x1,y1,x2,y2,class_name 其中:
|