本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解
导语
本文转载至知乎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测试无误。