摘 要

医疗领域对皮肤癌早期诊断的需求越来越大,因此皮肤癌检测具有重要的研究意义和应用价值。提出的皮肤癌检测系统主要包括皮肤图像预处理、特征提取、模型构建和检测分类等四个功能模块。系统首先采用图像去噪,图像分割等图像预处理技术来得到所需的输入图像,接着使用皮肤镜交互图像集,采用 ABCD 准则进行特征提取,采用神经网络工具箱进行学习模型的构建,最后将测试数据集输入到建立的模型中进行检测分类。仿真实验表明,系统具有识别率高,应用性强的优点。
关键词 图像分类;皮肤癌检测;ABCD 准则;神经网络

0引言

近些年来皮肤癌的患病人数不断攀升,在皮肤癌中黑色素瘤的占比较高,而且黑色素瘤的死亡率十分高。如果能够在黑色素瘤早期阶段将其诊断出来,患者的存活率将大大提高。但是由于痣和黑色素瘤具有极其相似的外观和症状,医生仅凭观察很难对黑色素瘤进行诊断。针对这个问题,本文旨在设计一种辅助诊断方法,该方法可以检测和识别皮肤镜图像中的黑色素瘤、痣和基底细胞癌,并在皮肤癌的识别阶段获得更高的精度。

1国内外研究现状

国内外针对皮肤癌检测的研究方法主要分为:模式分析法、ABCD 准则、孟氏法以及 CASH 法等。这些方法的主要依据是皮损的颜色、形态和纹理特征进行模式分类。其中ABCD准则的侧重点是皮损的非对称性(Asymmetry),边缘(Border),颜色(Color)和结构的多样性(DifferentStruct
ure)。其中,颜色特征设计及皮损区域可能出现的颜色比较丰富,有浅棕色、深棕色、蓝灰色、黑色、白色和红色等。损区域的颜色种类繁多且分布不均匀,属于皮肤癌的概率就越高。形态特征主要包括网状模式、球状模式、鹅卵石模式、腔洞模式等全局特征和由上述全局特征发展而来的局部形态特征。本文基于 ABCD 准则提取样本特征数据,并通过设计神经网络对特征进行分类决策,建立皮肤癌检测的网络模型,实现对皮肤图像的皮肤癌检测。

2可行性分析

引入皮肤镜(dermoscopy)检查这种无创诊断技术来帮助皮肤科医生对皮肤癌进行诊断。皮肤镜检查技术主要用到的设备就是皮肤镜。皮肤镜可以通过光学放大技术把皮损区域放大几十倍,从而帮助医生全方位地观察皮损区域的皮肤浅层和深层皮肤结构,如色素网结构、蓝白幕结构、均匀原点、球状体和斑点等结构。根据统计相比于皮肤科医生在临床的时候使用肉眼观察,使用皮肤镜技术可以帮助皮肤科医生将诊断准确性提高5%-30%/61。
人体皮肤上的病理区域(比如皮肤癌)由于在形状、颜色和大小等方面的多样性使得病理区域的复杂度比较高,因此人们对皮肤上病理区域的认识主观性强。为了得到统一的评价标准,皮肤科医生通过结合皮肤镜图像所展现的图像结构来分析皮损区域病变的过程而归纳总结出了多个黑色素瘤诊断规则7’,如:模式分析法(pattern analysisy8’,7点特征法(7-point checklisty%‘,孟氏法则(menzies methody"10’,ABCD 准则(ABCD rule)""l,CASH法(cash methody12。其中Stolz提出的ABCD 准则从四个方面对皮肤癌进行判断,分别是皮肤癌的颜色和结构是否对称,边界的清晰与否,皮肤癌包含的颜色数量(白色、红色、浅褐色、深棕色、蓝灰色和黑色)以及皮肤癌包含的各种结构(条纹结构、网状结构以及无结构区域等);孟氏法则通过判断如果皮肤癌不包含任意一个不相关特征,而至少包含一个相关特征,那么就可以将皮肤癌诊断为黑色素瘤。通常不相关特征包括结构的对称性和颜色单一性,而相关特征则包括蓝白色结构、暗褐色斑点聚集、足状结构、放射状结构、疤痕状结构、不规则点和小球、多种颜色和不规则网络等九个结构;7点特征法包含了七个判断标准,分别由三个主要标准和四个次要标准组成。

3关键性技术

通过现代人工智能技术与传统医疗方法相结合的检测技术以及深度学习方法能够端到端提取图像的高层特征,就是基于图像识别的皮肤癌检测。皮肤癌黑色素瘤可以通过传统的医疗方法即医生的望、闻、问、切T检查进行早期检测,以及可利用现代人工智能即基于图像识别分析的自动检测。高分辨率摄像镜头的广泛应用,可以提高医生使用计算机技术对皮肤癌黑色素瘤进行筛查和检测复杂病变的效率。在皮肤癌的检测中,皮肤镜检查的成像技术可消除皮肤表面反射,显著提高皮肤的可视化;皮肤镜的高分辨率摄像镜头与标准摄像镜头相比更有助于实现准确的诊断。

3.1卷积神经网络

卷积神经网络要求测试集和训练集数据输出星分别被向量化,然后输入到传统的神经网络中进行训练。一定量的标注数据必须同分布,分别单独建立训练模型。而迁移学习的训练集和测赋数据可以不同分布。

3.2图像分割预处理

由于医学图像的多样性和复杂性,传统的图像数据分类诊断方法是利用图像视觉特征对图像进行直接识别。由于背景规觉特征在皮肤病变图像中造成的干扰,直接利用皮肤病变图像进行分类的原始识很效果并不理想。因此,图像数据预处理在本研究和实验中具有重要的作用,在图像分割预处)理后,再利用深度网络模型对皮肤癌病变图像进行分类的准确率可得到进一步提高,针对黑色素瘤图像教据特点,本文提出改进的皮肤癌良恶性预测模型建立算法。(见图1)

图 1
RNN神经网络具有权值共享、局部连接等特性,在图像十倍等视觉任务中被广泛应用。在本文提出的皮肤癌检测系统中包括图像预处理特征提取、构建模型和决策分类四个功能模块。该模型对于黑色素瘤良恶性预测的效果更好,收敛速度更快,系统工作流程图如图2所示。

图 2

3.3图像分类方法的改进与实现

根短前期的研究,在下一步的工作中,我们将着重于以下两方面:对诊断设备的功能进行改进,皮肤庭病变图像数据的收集准备。卷积神轻网络通过利用添加横跨时间点的自连接隐藏层方法,为了方便推导和描述RNN神经网络模型结构,本文后面都将左边的模型结构简化成图3所示的结构。

图 3
神经网络与以往的多层感知机相比,因为神经网络内部具有时间序列的不同,本时间的结果会影响下一状态步数(Step),将神经网络按照时间序列展开可以更好地理解说明ANMA神经网络,从输入到隐藏,包括德蜜到翰出的连接权权重在每个时间步是一致的,从而具有了对时间序列进行显式建模的功能。简而言之就是来自隐藏层的反候信号,隐藏层会有连向下一时间隐囊层的连接权,其结构展开图如图4所示。

图 4
前向传播推导公式:

b点是经过激活函数计算的值,下标k是输出层,下标h是隐藏层,所有激活函数都已用带括号来表示,BP神经网络与隐藏层计算不相同,这与传统的BP神经网络一致,最后经过公式(2)的激活函数带入公式(3)中,得到普通的神经网络和输出层是一致的结论,时间上标t表示计算出来的值,代表了它是t时刻的节点。
将递归神经网络展开,a点是汇集计算的值,w则表示了不同节点连接之间的参数,明显看出RNN神经网络的具体组织结构修正连接权的权值。
由RNN展开图图4可知,上一时间隐藏层的数据会发送给下一时间的隐藏层,这种利用BP算法的神经网络可以从时间序列的最后一个时间步将累积的误差值传递回来,第二项是接收来自上一时间隐藏层的参数,第一项是接收来自输入层求和后的数据,后向传播推导公式:
(4)

(5)

(6)
递归神经网络具有以下的特点:递归神经网络可以解决序列当中长距离的依赖关系,但在实际情况中比模型要更加复杂,在向后传递的隐藏状态中只能捕获到距离不算太远的前后数据信息,因此它能被用于皮肤癌状态参数处理的任务中。

4系统工作流程

(1)图像预处理。主要对采集的皮肤图像进行去噪,分割和增强等操作,增强图像的特征,为提高学习模型的准确性奠定基础。
(2)图像特征提取。在图像预处理的基础上,提取皮肤图像中的关键特征,形成待匹配的特征向量和特征空间。
(3)构建学习模型。主要利用图像特征向量和结果标签,使用监督学习方法训练得到一个模型,该模型用于对测试数据进行预测并给出分类。
(4)决策分类。主要利用训练好的皮肤癌估计模型,对新输入的未知皮肤图像进行皮肤癌分类和精确的皮肤癌估计。

4.1 皮肤镜图像数据库的构建

标准的实验数据集是开展有监督学习问题研究的重要基础条件和可靠保证。本文采用代表性强的皮肤镜交互图像集,该数据库具有多种不同类别的皮肤镜图像,包括良性痣和恶性黑色素瘤。

4.2 皮肤图像预处理


图 5
图像预处理主要是为了在图像分割中删除无关的对象区域,为特征提取提供更有效的数据值。
图像去噪声主要是去除原始图像中的毛发噪声,主要包括波谷检测器、阈值分割、区域生长、标记连通域和掩膜恢复重建五个步骤。
其中灰度化计算公式为:
Gray=R0.299+G0.587+B*0.114
R,G,B 分别代表原彩色图像中每一个像素点的红色分量、绿色分量和蓝色分量。
图像分割主要是将图像分割成多个特征部分或区域。常见的皮肤镜图像分割算法包括基于阈值、边界、区域、聚类、活动轮廓和机器学习等分割算法。本文采用基于区域的分水岭算法,具体过程如下:首先对原图进行灰度化,然后使用高斯滤波消除噪声的干扰,再使用Canny算子检测边缘、findContours 算法查找轮廓,最后根据轮廓特征,实现图像分割。

4.3 利用 ABCD 准则进行特征提取

ABCD 准则是由来自纽约大学的一个团队于 1985 年提出,是指不对称、边缘不规则、色彩和直径的首字母缩写,经常应用于皮肤镜像检测,完成对皮肤镜像的特征提取。
(1)A-asymmetry:不对称性。包括颜色、形状和纹理的不对称性,一般由通过质心的对称轴来衡量皮肤癌的对称性。具体的判定流程如图 6 所示。
(2)B-border irregularity:边界不对称性。大部分皮肤癌缘粗糙,呈不规则的分布,而良性皮肤病的边界比较光滑,其判定规则为:现将皮肤图像中心分为 8 个扇形区域,检测每个区域中边缘像素点的色彩是否陡峭或变化明显,每有一个陡峭或变化明显的边缘都记 1 分。
(3)C-color:颜色。皮肤癌的表面颜色多样,色彩深浅突变明显。具体判定规则为:先区分皮肤图像中的不同色彩(有白色的标准是:病变颜色需要比其周围正常的颜色浅),然后对皮肤颜色进行计数评分。每一种颜色记为 1 分。
(4)D-diameter:直径。良性的皮肤病直径一般小于 6mm,而皮肤癌会不断扩散,直径一般大于 6mm。具体判定规则为:先应用病变图像的五种皮肤镜学结构:色素网、均质区、点、球和条纹状结构;再对皮肤镜学结构进行计数评分,每一个结构记为 1 分。
TDS(Total Dermatoscopy Score)指数是诊断黑色素瘤的重要工具,其计算基于不对称性、边界、颜色和直径,也被称为
ABCD 公式,计算方法如下:
TDS=1.3A+0.1B+0.5C+0.5D
如果 TDS 指数小于 4.75,则是良性的皮肤损伤。如果TDS 指数大于 4.75 和 5.45 以下,则是可能是皮肤癌,需进一步进行医学检查。如果 TDS 指数大于 5.45,则为恶性皮肤(癌)损伤。

4.4 使用神经网络构建学习模型

神经网络是一种模仿动物神经网络(特别是大脑)的结构和功能行为特征的数学模型或计算模型,通过并行数据信息处理的方式,对测试数据进行估计或近似预测[6]。神经网络预测是目前对非线性的统计性数据进行建模预测的最受关注的方式。神经网络的实现一般包括以下三个部分:
(1)前向网络:输入训练样本的特征值追层正向计算得到网络的实际输出;
(2)反馈网络:对于网络实际输出值与期望不符时,需要调整网络的权值,达到分类训练的目的;
(3)分类判决:输入测试样本数据,经过训练好的网络分类器,作出相应的判决输出。结构如图6所示。

图 6

5仿真实验和结果

为了验证本文提出的算法的性能和有效性,利用Python神经网络工具箱进行程序代码的编辑和仿真实验。实验中测试集按照图像类别分为皮肤病、类似皮肤癌和皮肤癌三类,分别记为 healthy,rash 和 cancerous。选取 100 张皮肤镜图像作为测试集并测试出皮肤癌的检测结果,并计算出检测的TDS 指数和准确率。

相关代码及结果展示:

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directoryimport os
for dirname, _, filenames in os.walk('/kaggle/input'):for filename in filenames:print(os.path.join(dirname, filename))
import numpy as np
import glob
import cv2
import re
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D, Flatten,Dropout
from keras.callbacks import EarlyStopping
import keras
from tensorflow.keras.optimizers import SGD
from keras.utils import np_utils
from keras.models import load_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import itertools
from sklearn.metrics import classification_report
import matplotlib.pylab as plt
import tensorflow as tf
import tensorflow_hub as hubimport os
import numpy as np
import math
import tensorflow_datasets as tfdsimport warnings
warnings.filterwarnings('ignore')import numpy as np
import glob
import cv2
import re
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D, Flatten,Dropout
from keras.callbacks import EarlyStopping
import keras
from tensorflow.keras.optimizers import SGD
from keras.utils import np_utils
from keras.models import load_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import itertools
from sklearn.metrics import classification_report
import matplotlib.pylab as plt
import tensorflow as tf
import tensorflow_hub as hubimport os
import numpy as np
import math
import tensorflow_datasets as tfdsimport warnings
warnings.filterwarnings('ignore')### converting from gray(1 channel) to RGB(3 channel)
X_train = []
for x in x_train:new = cv2.cvtColor(x,cv2.COLOR_GRAY2RGB)X_train.append(new)
X_val = []
for x in x_val:new = cv2.cvtColor(x,cv2.COLOR_GRAY2RGB)X_val.append(new)np.array(X_val).shapemodel = Sequential()
model.add(Conv2D(filters=4  ,kernel_size=(5,5), strides=(3,3), activation='relu', input_shape=(128,128,3)))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Conv2D(kernel_size=(5,5), strides=(2,2), filters=4  , activation='relu'))#, input_shape=(21,21, 1)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(units=4, activation='tanh'))
model.add(Dense(2, activation='softmax'))
y_train.shape
x_train.shape
plt.imshow(X_train[0])
model.compile(optimizer='adam', loss=keras.losses.categorical_crossentropy, metrics=['accuracy'])
callback = EarlyStopping(monitor="val_loss",patience=2)
model_fit = model.fit(x=x_train, y=y_train, epochs=50, validation_data=(x_val, y_val),verbose=1,callbacks=[callback])model = Sequential()
model.add(Conv2D(filters=4  ,kernel_size=(5,5), strides=(3,3), activation='relu', input_shape=(128,128,3)))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Conv2D(kernel_size=(5,5), strides=(2,2), filters=4  , activation='relu'))#, input_shape=(21,21, 1)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(units=4, activation='tanh'))
model.add(Dense(2, activation='softmax'))
y_train.shape
x_train.shape
plt.imshow(X_train[0])
model.compile(optimizer='adam', loss=keras.losses.categorical_crossentropy, metrics=['accuracy'])
callback = EarlyStopping(monitor="val_loss",patience=2)
model_fit = model.fit(x=x_train, y=y_train, epochs=50, validation_data=(x_val, y_val),verbose=1,
callbacks=[callback])


结语

过去存在皮肤病变图像的复杂性以及过去皮肤病变图分类识别效果不理想的现象,在经过本实验的图像分割预处理和使用深度网络模型后进一步提高了皮肤癌图像分类的准确率。,本文实现了一种使用 ABCD 规则检测图像是否为皮 肤癌的系统,具有简单、易用、快速且准确的优点。由于目前 公开的皮肤镜图像数据尚少,本系统不具有普遍性,下一步将扩充图像数据库来提高准确率和普遍性。

参 考 文 献

[1]冯立滨,刘立勋,董佳伟,罗文笛.皮肤癌检测系统的设计与实现[J].科技创新与应用,2021,11(27):51-52+55.
[2]李璐奇. 基于卷积神经网络的皮肤癌早期检测系统的研究与实现[D].北京邮电大学,2020.DOI:10.26969/d.cnki.gbydu.2020.000755.
[3]赵硕. 皮肤镜下皮肤癌的检测与识别方法的研究[D].重庆邮电大学,2020.DOI:10.27675/d.cnki
.gcydx.2020.000677.
[4]QaisarAbbas. 基于皮肤镜图像的皮肤病变检测方法研究[D].华中科技大学,2011.
[5] Pehamberger H, Steiner A, Wolff K. In vivo epiluminescence microscopy of pigmented skin lesions. I. Patternanalysis of pigmented skin lesions[J]. Journal of the American Academy of Dermatology, 1987, 17(4): 571-583.
[6] Stolz W. ABCD rule of dermatoscopy: a new practical method for early recognition of malignant melanoma[J]. Eur. J.Dermatol., 1994, 4: 521-527.
[7] Menzies S W. A method for the diagnosis of primary cutaneous melanoma using surface microscopy[J]. Dermatologic clinics, 2001, 19(2): 299-305.
[8] Henning J S, Dusza S W, Wang S Q, et al. The CASH (color,architecture, symmetry, and homogeneity) algorithm for dermoscopy[J]. Journal of the American Academy of Dermatology, 2007, 56(1): 45-52.
[9] Argenziano G, Soyer H P, De Giorgi V, et al. Interactive atlasof dermoscopy (Book and CD-ROM)[J]. 2000.
[10] 蔡立,徐鑫.MATLAB 神经网络工具箱在非线 性系统建模中的应用[J].机电工程技 术,2008(02):82-84+113
欢迎大家加我微信交流讨论(请备注csdn上添加)

基于卷积神经网络的皮肤癌检测系统相关推荐

  1. 基于卷积神经网络的目标检测算法

    基于卷积神经网络的目标检测算法 1 滑窗法 滑窗法的思路及其简单,首先需要已经训练好的一个分类器,然后把图片按照一定间隔和不同的大小分成一个个窗口,在这些窗口上执行分类器.如果得到较高的分数分类,就认 ...

  2. 基于卷积神经网络的谣言检测(刘政(未志华)-计算机应用2017)

    基于卷积神经网络的谣言检测,刘政.卫志华.张韧弦,<计算机应用>-2017 主要内容(与周志远2018类似) 使用Majing数据集 将谣言事件向量化,改进传统的卷积层过滤操作,使用CNN ...

  3. python人脸识别系统界面设计_基于卷积神经网络的人脸识别系统的设计(Python)

    基于卷积神经网络的人脸识别系统的设计(Python)(论文10000字,外文翻译,参考代码,流程图,人脸图像库) 摘要:随着社会的进步与发展,个人信息的保护变得十分重要.传统的密码保护方式已经不再满足 ...

  4. 基于卷积神经网络的主观题阅卷系统的设计与实现

    人工智能与信息技术的飞速发展,使得越来越多的产业走向人工智能的时代.人工智能的发展改变原有的工作方式,使得工作效率变得快捷有效,诸多工作岗位从原先人力操作转变成现有的机械操作.人工智能自动完成.教育考 ...

  5. 【毕业设计】基于卷积神经网络的中草药识别系统

    系统演示视频: [毕业设计]基于卷积神经网络算法的中草药识别系统演示 本项目采用卷积神经网络算法训练了中草药识别模型.使用到的技术包括:卷积神经网络(CNN)算法,Django框架搭建网站,CNN模型 ...

  6. 基于卷积神经网络的目标检测模型的研究_黄咨_2014_上海交大

    一.传统检测模型和卷积神经网络对比 传统检测模型:采用人工特征提取方法获取目标的特征描述.然后输入到一个分类器中学习分类规则. 人工特征提取方法的缺点: (1)对设计者提出比较高的学术要求, (2)提 ...

  7. 基于递归神经网络的跌倒检测系统

     项目下载: https://download.csdn.net/download/babyai996/87544088https://download.csdn.net/download/babya ...

  8. 毕业设计-基于卷积神经网络的指针式仪表识别系统

    目录 前言 课题背景和意义 实现技术思路 一.仪表的识别系统 二.实验及结果分析 实现效果图样例 最后 前言

  9. 基于深度卷积神经网络的目标检测研究综述

    基于深度卷积神经网络的目标检测研究综述 人工智能技术与咨询 来自<光学精密工程> ,作者范丽丽等 摘要:作为计算机视觉中的基本视觉识别问题,目标检测在过去的几十年中得到了广泛地研究.目标检 ...

最新文章

  1. 的确好用!Python数据科学速查表中文版强势来袭!
  2. webSocket使用心跳包实现断线重连
  3. http://miicaa.yopwork.com/help/overall/
  4. html 桌面截图,如何使用javascript在html中截取屏幕截图?
  5. Graphviz安装配置及入门(windows安装亲测)
  6. android 理解Fragment生命周期
  7. 【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)
  8. server.transfer 无法跳转页面_H5 腾讯地图无法导航
  9. Arthas 思维导图笔记
  10. 1260 不一样的A+B
  11. python进程池和线程池_Python中的进程池与线程池(包含代码)
  12. Python的web相关及Django简介
  13. 数据结构之红黑树插入案例详解
  14. SYBASE 常用 sp_configure
  15. matlab怎么画两个自变量的图_横道图怎么画?免费使用的项目管理软件
  16. CodeSonar网络研讨会
  17. 东北工学院 计算机 姚岚,东北的大学最强十校,工科是真强,2所211大学无缘前十...
  18. 各大IT公司校园招聘程序猿笔试、面试题集锦
  19. ObjectArx 如何替换CAD本身的命令
  20. 使用CyberController来将旧手机改造成电脑外挂

热门文章

  1. 你知道CAD软件将圆弧与直线转换成多段线的方法吗?
  2. 调试经验——让Excel开口说话(使用VBA Speak方法让Excel朗读单元格内容)(Let Excel read for you)
  3. windwos操作系统有snmp服务器,windows服务器snmp v3
  4. Unity3D-设置天空盒
  5. 如何查看Isilon节点的硬件信息?
  6. 洛谷P1005 矩阵取数游戏 ACM 大数+区间dp
  7. python 线程(1)-- 常用方法与属性,锁,同步
  8. Html 实现角标效果
  9. MySQL建表1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
  10. access通过身份证号提取性别_Access计算根据身份证号码字段计算年龄和性别的表达式,最好是还能确定户籍地址,该在什么地方输入?...