【USE】《Object detection based on deep learning for urine sediment examination》

在这里插入图片描述

Biocybernetics & Biomedical Engineering, 2018



1 Background and Motivation

尿沉渣检测的传统方法基于 cell segmentation, feature extraction and classification

The main characteristics of urine sediment cells images

  • cell adhesion
  • class confusion
  • the size of most cells is small.

class confusion 从如下图可见一斑!
在这里插入图片描述
作者采用目标检测的方法,来做尿沉渣检测,以 FPN 为框架(roi pooling 替换成 mask rcnn 中的 roi align),观察到 rpn 的结果中 recall 很高(95%),但是头部的分类器效果却很差(指的是红细胞,红细胞 erythrocyte 和白细胞 leukocyte 的 class confusion 导致红细胞的检测效果很不理想)

基于上述问题,作者从两个方面进行了尝试

  • 特征提取:把主干网络从 resnet 替换成 densenet
  • 注意力机制:在头部结构中加入注意力机制

2 Advantages / Contributions

1)adding attention module in the network head

  • improve 0.7 mAP with pre-trained ImageNet
  • improve 1.4 with pre-trained COCO

2)用 DenseNet 后 (DenseNet 配合 attention 由于计算资源限制,融合失败)

  • top result with a mAP of 86.9% on USE test set(improve 5.6 points)
  • erythrocyte’s AP is greatly improved from 65.4% to 93.8%

3 Innovations

更多的是应用创新,对问题的理解,以及对 attention module 的落地方式

4 Method(attention module)

关于 FPN、Mask RCNN、ResNet、DenseNet ,由于篇幅有限,可以参考如下文章

【FPN】《Feature Pyramid Networks for Object Detection》(CVPR-2017)
【Mask RCNN】《Mask R-CNN》(ICCV-2017)
【Keras-ResNet】CIFAR-10
【DenseNet】《Densely Connected Convolutional Networks》

先回顾下 faster rcnn 的头部结构
caffe 代码
caffe 代码可视化工具
在这里插入图片描述

再看看作者的改进,蓝色块表示原有的 faster rcnn,绿色的表示新增的模块!
在这里插入图片描述
图a
在这里插入图片描述
图b

  • channel-wise position attention module(图a中括号对应的部分)
    注意 position softmax表示对 77256 中的 7*7 部分 reshape后进行 softmax,相当于热力图
  • channel-agnostic position attention module(图a中非括号对应的部分)
    也相当于热力图
  • class-specific attention module(图b,效果好一点)
    classes softmax 相当于对 classes 进行 softmax,注意 local connected,双 fc 的连接操作如下
    在这里插入图片描述

5 Datasets

在这里插入图片描述
42759 labeled instances in 5377 images,7 cell categories as follows:

  • cast
  • crystals(cryst)
  • epithelial(epith)
  • epithelial nuclei(epithn)
  • erythrocyte(eryth)
  • leukocyte(leuko)
  • mycete

train, validation and test set in the ratio of 14:1:5.(哈哈,第一次看到这样的比例)
4256,268, 852

6 Experiments

  • Resnet
    learning rate 0.01, and then decreased by a factor of 10 every 20 epochs. (total 50 epochs)
    weight decay of 0.0001 and a momentum of 0.9
  • DenseNet
    25 个 epoch,learning rate 的设置同 ResNet
    weight decay of 0.001 and a momentum of 0.9

作者的分析 it is suitable to infer FPN architecture with DenseNet can finely extract the fine-grained features of categories.

baseline 如下
在这里插入图片描述

6.1 Training stage schedule

在这里插入图片描述
如上图的(a),train all 效果最好

6.2 Attention modules and pre-trained model

6.1小节(b)、(c)两行的 A、B、C 也即对应着三种 attention 的方法!
(b)pre-trained by ImageNet,backbone is ResNet-50,only C 提升了效果
(c)pre-trained by COCO,backbone is ResNet-101 效果很差,其实(b)(c)两行有两个变量,不好直接对比,但看 baseline 中 resnet-50 和 resnet-101 效果相仿,也可以推测,imagenet 的 pretrain 在作者的数据集上要优于 coco,作者做出了如下的解释

6.3 Balance between classification and bounding-box regression loss

也即 6.1 小节的(d)行
在这里插入图片描述
λ \lambda λ 只作用在了头部的分类器上, λ = 2 \lambda=2 λ=2 结果最好!

6.4 Model size and inference speed

在这里插入图片描述

6.5 Summary

在这里插入图片描述
attention 只是 嵌入在了 resnet
resnet 换成 densenet 效果显著提升!
最惊艳的是 eryth 的提升,不过作者的洞察力也是很独特的!观测到了 class confusion 的根源,提出了增强头部分类器和增强主干网络特征提取能力的两种方案!

7 Conclusion

作者对数据处理这一块的分析也是超级值得借鉴的,很荣幸和作者在一个实验室,且坐在我旁边,给了我很多工作上的启发,哈哈哈哈!

十大尿液分析仪品牌(2015)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
尿沉渣白细胞分割可以使用 Matlab 进行实现。下面是一个基本的流程: 1. 读取尿沉渣图像。 2. 对图像进行预处理,例如去除噪声、增强对比度等。 3. 将图像转换为灰度图像。 4. 使用阈值分割将图像分为背景和前景。 5. 对前景图像进行形态学操作,例如膨胀、腐蚀等,以去除小的噪点和连接白细胞。 6. 使用连通区域分析算法,将图像中的每个白细胞分割出来。 7. 对每个白细胞进行特征提取和分类,例如计算大小、形状、纹理等特征,并使用机器学习算法进行分类。 具体实现可以参考以下代码示例: ```matlab % 读取尿沉渣图像 I = imread('urine_sediment.jpg'); % 图像预处理 J = imnoise(I, 'gaussian', 0.02); % 加入高斯噪声 K = medfilt2(J, [5 5]); % 中值滤波 L = imadjust(K, [0.3 0.7], [0 1]); % 灰度值调整 % 阈值分割 BW = imbinarize(L, 'adaptive', 'Sensitivity', 0.5); % 形态学操作 SE = strel('disk', 3); BW2 = imopen(BW, SE); BW3 = imclose(BW2, SE); % 连通区域分析 CC = bwconncomp(BW3); stats = regionprops(CC, 'Area', 'BoundingBox'); areas = [stats.Area]; % 分割白细胞 idx = find(areas > 100); % 选取面积大于100像素的连通区域 figure, imshow(I); hold on; for i = 1:length(idx) bbox = stats(idx(i)).BoundingBox; rectangle('Position', bbox, 'EdgeColor', 'r', 'LineWidth', 2); end hold off; ``` 这段代码可以读取名为 urine_sediment.jpg 的尿沉渣图像,进行预处理、阈值分割、形态学操作和连通区域分析,最终将每个白细胞分割出来并用矩形框标记出来。需要注意的是,这段代码仅仅是一个基本的示例,实际应用中可能需要根据具体情况进行调整和优化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值