深度卷积神经网络在肿瘤上皮与间质识别中的图像特征学习研究笔记
Classification of Tumor Epithelium and Stroma by Exploiting Image Features Learned by Deep Convolutional Neural Networks
重点看方法,对实验背景以及相关医学知识不进行赘述
论文研究的问题:
1.CNN的底层还是高层包含NI(NI自然图像natural image)特征,在肿瘤上皮和间质分类中具有更好的识别能力?与CNN架构有什么关系?
2.到什么程度可以通过微调模型来提高分类性能?
实验数据集来自TMAD和OUHSC,预处理主要包括图像增强和子图像建立(epithelium和stroma patches)。图像对比度由MATLAB实现的标准自动对比度算法进行增强。为了准备用于训练和测试的子图像,我们在Definiens Developer XD中采用了多分辨率分割算法生成epithelium和stroma patches的超像素。将这些分割出来的子图像,输入深度学习模型,分类为epithelium和stroma patches。
共19748张超像素图片来自TMAD(每类9874),16444张来自OUHSC(每类8222)对于这两个数据集,利用Python中sklearn包中的train_test_split函数,将图像的总数随机分割为训练集和测试集,分割比为0.6:0.4,如下图所示。为了避免在模型开发过程中过度拟合,使用cross_val_score函数对模型性能进行预估。
本文使用的深度卷积神经网络包括四种:
AlexNet
Places365-AlexNet
GoogLeNet
two modified AlexNet models
两种不同的使用方式
第一种方法是直接使用模型计算在每一层包含NI特征集的输出,在架构的各个层次(包括低层、中层和高层CNN特征),公正地选择了五组NI特征,因为对于哪一层应该包含更丰富、更容易概括的语义信息,还没有得出决定性的结论。
第二种方法执行端到端的微调(1000 iterations; base learning rate: 0.001, gamma: 0.1, momentum: 0.9, weight decay: 5e-04),在进行了微调之后利用了中间层的特征集进行训练(AlexNet and Places365: L7; GoogLe- Net: L5; C1–C3: L3; C1–C5: L5)。通过对这些网络进行微调,使用了两种完全不同的迁移学习策略,NI-to-PI和 PI-to-PI,如下图所示。
在NI-to-PI中,我们通过自然图像分类任务优化初始权值,直接对数据集I上的网络进行微调,该任务涉及到从自然图像数据集到病理图像数据集的转移学习。对于PI-to-PI,我们利用NI-to-PI传递的初始权重对数据集II上的net- works进行了微调,其中源数据集和目标数据集都是病理图像数据集。
为了消除变异在多个分类器的性能,采用了四种不同的分类器,
Support vector machines (SVMs) for classification with a kernel that is ‘linear’ (SVClnr),
SVMs with an ‘rbf’ kernel (SVCrbf),
random forest (RF)
k-near- est neighbors (KNN)
推荐阅读
-
[姿势估计] 实践记录:使用 Dlib 和 mediapipe 进行人脸姿势估计 - 本文重点介绍方法 2):方法 1:基于深度学习的方法:。 基于深度学习的方法:基于深度学习的方法利用深度学习模型,如卷积神经网络(CNN)或递归神经网络(RNN),直接从人脸图像中学习姿势估计。这些方法能够学习更复杂的特征表征,并在大规模数据集上取得优异的性能。方法二:基于二维校准信息估计三维姿态信息(计算机视觉 PnP 问题)。 特征点定位:人脸姿态估计的第一步是通过特征点定位来检测和定位人脸的关键点,如眼睛、鼻子和嘴巴。这些关键点提供了人脸的局部结构信息,可用于后续的姿势估计。 旋转表示:常见的旋转表示方法包括欧拉角和旋转矩阵。欧拉角通过三个旋转角度(通常是俯仰、偏航和滚动)描述头部的旋转姿态。旋转矩阵是一个 3x3 矩阵,表示头部从一个坐标系到另一个坐标系的变换。 三维模型重建:根据特征点的定位结果,三维人脸模型可用于姿势估计。通过将人脸的二维图像映射到三维模型上,可以估算出人脸的旋转和平移信息。这就需要建立人脸的三维模型,然后通过优化方法将模型与特征点对齐,从而获得姿势估计结果。 特征点定位 特征点定位是用于检测人脸关键部位的五官基础部分,还有其他更多的特征点表示方法,大家可以参考我上一篇文章中介绍的特征点检测方案实践:人脸校正二次定位操作来解决人脸校正的问题,客户在检测关键点的代码上略有修改,坐标转换部分客户见上图 def get_face_info(image). img_copy = image.copy image.flags.writeable = False image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = face_detection.process(image) # 在图像上绘制人脸检测注释。 image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) box_info, facial = None, None if results.detections: for detection in results. for detection in results.detections: mp_drawing.Drawing.detection = 无 mp_drawing.draw_detection(image, detection) 面部 = detection.location_data.relative_keypoints 返回面部 在上述代码中,返回的数据是五官(6 个关键点的坐标),这是用 mediapipe 库实现的,下面我们可以尝试用另一个库:dlib 来实现。 使用 dlib 使用 Dlib 库在 Python 中实现人脸关键点检测的步骤如下: 确保已安装 Dlib 库,可使用以下命令: pip install dlib 导入必要的库: 加载 Dlib 的人脸检测器和关键点检测器模型: 读取图像并将其灰度化: 使用人脸检测器检测图像中的人脸: 对检测到的人脸进行遍历,并使用关键点检测器检测人脸关键点: 显示绘制了关键点的图像: 以下代码将参数 landmarks_part 添加到要返回的关键点坐标中。
-
深度卷积神经网络在肿瘤上皮与间质识别中的图像特征学习研究笔记