1.摘要
皮肤癌是人类最常见的恶性肿瘤,主要通过视觉诊断进行初步临床筛查。但是由于皮肤病变外观的细微变化性,使用图像自动分类皮肤病变是一项具有挑战性的任务。本文为了提高深度学习算法在皮肤病检测上的准确率,本文提出了基于Inception和ResNet深度残差网络架构的皮肤癌分类识别算法,并与基线模型进行了比较,实验表明, 与传统神经网络模型相比, 本文提出的新的分类算法降低了时间复杂度, 提高了识别准确率。最后,本文将训练好的模型参数应用到web系统中,实现了对上传图像的皮肤病检测,同时还能通过视频进行实时检测皮肤病,简化了检测皮肤肿瘤的流程,可有效辅助医生诊断,使得医生患者仅需简单操作Web端即可实时得到检测结果,以协助早期发现皮肤癌。
2.数据集介绍
该数据集收集了来自不同人群的皮肤镜图像,通过不同的方式获取和存储。最终数据集包含 10015 张皮肤镜图像,可用作学术机器学习目的的训练集。
该数据集名为: HAM10000 的公共数据集 。可以自行下载。
3. Inception-ResNet模型设计与实现
该模型结合了 Inception 和残差网络的两种架构,以获得更稳定的性能,同时保持相对较低的计算成本。它由一个主干块、三组残差 Inception 块模块组成,分别为 [5,10,5] 个 Inception-ResNetA、Inception-RetNetB、Inception-RetNetC 模块块,随后在每组 Inception-ResNet 模块之后有池化层,这些都是按顺序连接的。卷积网络深度为 164 层。
核心实现代码如下:
base_model = InceptionResNetV2(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
for layer in base_model.layers:
layer.trainable = True
x = base_model.output
x = GlobalAveragePooling2D()(x)
# x = Flatten()(x)
# x = Dense(4096, activation='relu')(x)
# x = Dropout(0.5)(x)
# x = Dense(512, activation='relu')(x)
# x = Dropout(0.5)(x)
x = Dense(128,kernel_regularizer='l2',activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(7, activation='softmax')(x)
tl_model = Model(inputs=base_model.input, outputs=x)
tl_model.summary()
在上述数据集进行训练,该模型的训练结果为:
与其他基线模型进行对比,其结果为:
4.系统应用实现
为了与Web端结合,使得模型可以在用户熟悉的浏览器环境下正常快速运行,同时可视化模型结果,我们设计实现了web界面,该界面可以将得到的概率结果响应给客户端浏览器,浏览器进行渲染可视化,使得医生患者仅需简单操作Web端即可实时得到检测结果。
其界面如下:
可以选择上传图像进行检测,也可以打开摄像头进行实时检测。
我们在这里上传一张图片进行测试。
测试结果如下:
继续测试其他图片:
还能打开摄像头进行检测,此次略。
下载代码链接:https://download.****.net/download/weixin_40651515/89902941
里面包含上述实现的所有代码及基线对比模型等,但是不包含全部的训练数据集,需要数据集可以私信发送。