【Python】FCN+滤波器实现细胞检测

2018-08-07 17:46:29 浏览数 (5449)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程>>戳此了解

导语

Hi~~~

“浮云一别后,流水十年间。”忙忙碌碌中发现又有多日没有更新公众号了,过来更一发~~~

【下个月再开始推一些爬虫相关的内容吧,这个月确实没什么时间。】

利用全卷积网络+滤波器实现细胞检测。

让我们愉快地开始吧!


相关文件

百度网盘下载链接: https://pan.baidu.com/s/16W2uByTpThAH8GUrv7pOZg

密码: 5f5k


开发工具

Python版本:3.6.4

相关模块:

numpy模块;

PIL模块;

scipy模块;

TensorFlow-GPU模块;

tensorlayer模块;

matplotlib模块;

以及一些Python自带的模块。

TensorFlow-GPU版本:

1.6.0

测试平台:

Windows10


环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

其中,TensorFlow-GPU的环境搭建请自行参考相关的网络教程,注意版本和驱动严格对应即可。

原理简介

利用简单的全卷积网络+高斯和统计排序滤波器实现的细胞检测算法。

其中全卷积网络的结构为:

训练集包含6种类型的细胞图像:

(依据其中心进行分类)

(1)细胞重叠:

(2)非目标细胞:

(3)细胞边缘

(4)细胞间隙:

(5)背景:

(6)细胞中心点:

T_T相信聪明的小伙伴已经猜到了:

我们采用的细胞检测算法其实就是利用滑动窗口遍历给定的图像,把每个窗口的图像感受野输入到训练好的网络,判断该窗口的中心是否为细胞中心,若是则标出。该思想类似于RCNN,不过我们对检测结果加了滤波器来提高其精度。

至于具体实现过程,详见相关文件中的源代码。


使用演示

模型训练:

在cmd窗口运行train.py文件即可。

相关文件中提供了原始数据集和转为tfrecords格式的数据集。训练只需使用tfrecords格式的数据集即可。若想自己生成,则将下图中的注释去掉,并将该函数中的原始数据集路径修改为你自己的数据集路径:

训练效果图:

模型测试:

相关文件中提供了训练好的模型,在cmd窗口运行test.py文件即可,运行前请自行修改该文件内的测试图像路径:


效果展示

原图像1:

检测效果1(注意红点):

原图像2:

检测效果2:

That'all~~~


更多

模型设计的比较简单,效率比较低。之后会推送一些高端点的算法~~~

代码截止2018-05-30测试无误。