首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于初始Resnet v2 (乳腺癌)的转移学习低精度

基于初始Resnet v2 (乳腺癌)的转移学习低精度
EN

Stack Overflow用户
提问于 2021-07-19 13:52:49
回答 1查看 744关注 0票数 0

我想对BreakHis数据集(https://www.kaggle.com/ambarish/breakhis)中的乳腺癌组织病理学图像进行二值分类,使用转移学习和初始Resnet v2。目标是通过在模型中添加两个神经元来冻结所有的层,并训练完全连接的层。特别是,一开始我想考虑与华丽因子40X相关的图像(良性: 625,恶性: 1370)。以下是我所做工作的总结:

  • 我读了这些图像,并将它们调整到150x150。
  • 我将数据集划分为培训、验证和测试集。
  • 我加载预先训练过的网络初始化Resnet v2
  • 我冻结所有的层,我添加两个神经元进行二元分类(1 =“良性”,0=“恶性”)
  • 我使用Adam方法作为激活函数来编译模型。
  • 我进行训练
  • 我做预测
  • 我计算精度

这是代码:

代码语言:javascript
运行
AI代码解释
复制
data = dataset[dataset["Magnificant"]=="40X"]
def preprocessing(dataset, img_size):
    # images
    X = []
    # labels 
    y = []
    
    i = 0
    for image in list(dataset["Path"]):
        # Ridimensiono e leggo le immagini
        X.append(cv2.resize(cv2.imread(image, cv2.IMREAD_COLOR), 
                            (img_size, img_size), interpolation=cv2.INTER_CUBIC))
        basename = os.path.basename(image)
        
        # Get labels
        if dataset.loc[i][2] == "benign":
            y.append(1)
        else:
            y.append(0)
        i = i+1
    return X, y

X, y = preprocessing(data, 150)
X = np.array(X)
y = np.array(y)
# Splitting
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify = y_40, shuffle=True, random_state=1)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, stratify = y_train, shuffle=True, random_state=1) 

conv_base = InceptionResNetV2(weights='imagenet', include_top=False, input_shape=[150, 150, 3])   

# Freezing
for layer in conv_base.layers:
    layer.trainable = False

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid'))

opt = tf.keras.optimizers.Adam(learning_rate=0.0002)

loss = tf.keras.losses.BinaryCrossentropy(from_logits=False)

model.compile(loss=loss, optimizer=opt, metrics = ["accuracy", tf.metrics.AUC()])

batch_size = 32

train_datagen = ImageDataGenerator(rescale=1./255)
val_datagen = ImageDataGenerator(rescale=1./255) 
train_generator = train_datagen.flow(X_train, y_train, batch_size=batch_size) 
val_generator = val_datagen.flow(X_val, y_val, batch_size=batch_size)

callback = tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3)

ntrain =len(X_train)
nval = len(X_val)
len(y_train)
epochs = 70
history = model.fit_generator(train_generator,
                              steps_per_epoch=ntrain // batch_size,
                              epochs=epochs,
                              validation_data=val_generator,
                              validation_steps=nval // batch_size, callbacks=[callback])

这是上一个时代的训练成果:

代码语言:javascript
运行
AI代码解释
复制
Epoch 70/70
32/32 [==============================] - 3s 84ms/step - loss: 0.0499 - accuracy: 0.9903 - auc_5: 0.9996 - val_loss: 0.5661 - val_accuracy: 0.8250 - val_auc_5: 0.8521

我预测:

代码语言:javascript
运行
AI代码解释
复制
test_datagen = ImageDataGenerator(rescale=1./255) 
x = X_test
y_pred = model.predict(test_datagen.flow(x))

y_p = []
for i in range(len(y_pred)):
    if y_pred[i] > 0.5:
        y_p.append(1)
    else:
        y_p.append(0)

我计算精度:

代码语言:javascript
运行
AI代码解释
复制
from sklearn.metrics import accuracy_score
accuracy =  accuracy_score(y_test, y_p)
print(accuracy)

这是我得到的精度值: 0.5459098497495827。

为什么我的准确度这么低,我做了几次测试,但我总是得到相似的结果?(帮助我)

EN

回答 1

Stack Overflow用户

发布于 2021-07-19 21:35:56

在进行转移学习时,特别是在冻结权值的情况下,进行与网络最初训练时相同的预处理是非常重要的。

对于InceptionResNetV2网络,预处理类型是tensorflow / keras库中的"tf",它对应于图像网权重的除以127,再减去1。相反,你将被255除以。

幸运的是,您不必费力地遍历代码,以确定使用了什么函数,因为它们在API中公开。简单地做

代码语言:javascript
运行
AI代码解释
复制
train_datagen = ImageDataGenerator(preprocessing_function=tf.keras.applications.inception_resnet_v2.preprocess_input)

等等,用于验证和测试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68447409

复制
相关文章
基于转移学习的图像识别
算法该如何分辨这只狗可能属于哪个品种?当然小伙伴们可以训练自己的卷积神经网络来对这张图片进行分类,但是通常情况下我们既没有GPU的计算能力,也没有时间去训练自己的神经网络。但是,全世界的各个研究团队(例如牛津,谷歌,微软)都拥有足够的计算能力,时间和金钱,而且以前可能已经解决过一些类似的问题。我们该如何利用他们已经完成的工作呢?现在来让我们了解一个重要的概念——转移学习。
小白学视觉
2020/11/03
1.6K0
基于转移学习的图像识别
CVPR 2021 | LCQ:基于低比特量化精度提升的可学习压扩量化方法
量化深度神经网络是一种有效的减少内存消耗和提高推理速度的方法,因此适用于资源受限的设备。然而,极低位模型仍然很难达到与全精度模型相当的精度。为了解决这个问题,本文提出了可学习扩展量化 (LCQ) 作为一种新的非均匀量化方法用于 2-bit、3-bit 和 4-bit 模型量化。LCQ 联合优化模型权重和可学习的压扩函数,这些函数可以灵活而非均匀地控制权值和激活的量化级别。本文还提出了一种新的权重归一化技术,允许更稳定的量化训练。实验结果表明,在图像分类和目标检测任务中,LCQ 优于传统最先进的方法,缩小了量化模型和全精度模型之间的差距。值得注意的是,ImageNet 上的2-bit ResNet-50 模型达到了最高的 75.1% 的精度,并将差距缩小到 1.7% ,使 LCQ 能够进一步挖掘非均匀量化的潜力。
AI异构
2021/04/13
2.5K0
CVPR 2021 | LCQ:基于低比特量化精度提升的可学习压扩量化方法
RADIOLOGY:深度学习风险评分与标准钼靶密度评分预测乳腺癌风险的比较
导读: 影像组学的概念最早在2012年由荷兰学者提出,其强调的深层次含义是指高通量地从影像(CT、MRI、PET等)中提取大量影像信息,实现病灶分割、特征提取与模型建立,通过对大量的影像数据信息进行更深层次的挖掘、预测和分析,辅助临床医师做出最准确的诊断。影像组学可直观地理解为将视觉影像信息转化为深层次的特征来进行量化研究。 影像组学作为一种新兴的研究方法,通过从不同模态的影像中提取高通量的影像特征,一定程度上实现了肿瘤异质性的评估和肿瘤的预后评估,早期主要用于评估放疗效果,并逐步在影像领域应用,到目前已经发展成为融合影像、基因、临床等信息的辅助诊断、分析和预测的工具。与活检对比而言,它有明显的优势,不仅可以减少活检带来的痛苦,也在一定程度上提高了工作效率,减轻患者经济上的负担,为将来患者病情复查提供更健康和安全的途径。当然影像组学早已不局限于肿瘤领域,其他疾病也将其应用其中。近年来,影像组学的相关研究呈井喷式发展。
悦影科技
2020/11/20
4430
RADIOLOGY:深度学习风险评分与标准钼靶密度评分预测乳腺癌风险的比较
ACM算法竞赛——高精度乘低精度(模板)
// C = A * b, A >= 0, b >= 0 vector<int> mul(vector<int> &A, int b) { vector<int> C; int t = 0; for (int i = 0; i < A.size() || t; i ++ ) { if (i < A.size()) t += A[i] * b; C.push_back(t % 10); t /= 10; } w
战士小小白
2022/05/14
4860
ACM算法竞赛——高精度乘低精度(模板)
ACM算法竞赛——高精度除以低精度(模板)
// A / b = C ... r, A >= 0, b > 0 vector<int> div(vector<int> &A, int b, int &r) { vector<int> C; r = 0; for (int i = A.size() - 1; i >= 0; i -- ) { r = r * 10 + A[i]; C.push_back(r / b); r %= b; } reverse(C.
战士小小白
2022/05/14
4770
ACM算法竞赛——高精度除以低精度(模板)
乳腺癌转移过程中的异常发育途径
当你的才华还撑不起你的野心时,请潜下心来,脚踏实地,跟着我们慢慢进步。不知不觉在单细胞转录组领域做知识分析也快两年了,通过文献速递这个栏目很幸运聚集了一些小伙伴携手共进,一起成长。
生信技能树jimmy
2020/03/30
7070
IEEE TMI | 深度神经网络提升放射科医生在乳腺癌筛查的表现
今天给大家介绍来自纽约大学Nan Wu等人发表在IEEE TMI上等一篇文章“Deep Neural Networks Improve Radiologists’ Performance in Breast Cancer Screening”,文章提出了一个深度卷积神经网络,用于乳腺癌筛查检测的分类。在筛查人群中预测是否存在乳腺癌的精度达到了0.895.这个模型由一个乳房级别对自定义的基于ResNet的网络和一个高容量patch级别的辅助网络共同组成。此外还在相关任务,筛选BI-RADS分类上进行预训练,并且对每个角度进行集成的输入来提升性能。最终通过reader study,证明本文的模型对于同样的数据,可以达到与经验丰富的放射科医生一样精确。并且展示一个由模型预测和放射科医生预测平均而来的混合模型比分别由模型和放射科医生预测的精度更高。
智能生信
2021/02/04
1.1K0
基于自适应策略转移的深度强化学习
Efficient Deep Reinforcement Learning via Adaptive Policy Transfer
小白学视觉
2022/02/12
4000
基于自适应策略转移的深度强化学习
基于深度学习的低光照图像增强
之前在做光照对于高层视觉任务的影响的相关工作,看了不少基于深度学习的低光照增强(low-light enhancement)的文章[3,4,5,7,8,9,10],于是决定简单梳理一下。
小白学视觉
2022/02/12
1.9K0
基于深度学习的低光照图像增强
图解|低精度定时器原理
Linux 内核通常会使用 定时器 来做一些延时的操作,比如常用的 sleep() 系统调用就是使用定时器来实现的。
用户7686797
2023/09/02
2410
图解|低精度定时器原理
ResNet 高精度预训练模型在 MMDetection 中的最佳实践
ResNet 高精度预训练 + Faster R-CNN,性能最高能提升 3.4 mAP!
OpenMMLab 官方账号
2022/05/25
3.2K1
ResNet 高精度预训练模型在 MMDetection 中的最佳实践
kNN算法根据不同病理特征来预测乳腺癌转移与否
本文介绍机器学习中的分类算法kNN(k-NearestNeighbor),即k邻近算法。核心思想类似“近朱者赤近墨者黑”,每个样本都可以用它最接近的k个邻居来代表。
生信技能树
2019/12/05
2K0
精度 VS 效率:模型越小,精度就一定越低吗?
以下是我最近在伦敦 O’Reilly AI Conference 和 DroidCon 上的两次谈话的改编。
AI研习社
2019/11/08
2K0
精度 VS 效率:模型越小,精度就一定越低吗?
resnet34 pytorch_pytorch参数初始化
pytorch是包含一些常见的神经网络模型的,ResNet34、ResNet18、VGG等等,都在models模块中,调用接口如下:
全栈程序员站长
2022/11/10
2740
仅用公开数据集发4+分纯生信数据挖掘
今天和大家分享的是2020年1月发表在Cells(IF:4.366)上的一篇文章,“Computational Detection of Breast Cancer Invasiveness with DNA Methylation Biomarkers ”,作者在3个数据集中筛选了差异甲基化CpG位点,用4种不同的降维方法处理数据后构建分类器,并结合临床特征进行富集分析评估分类器的预测能力,为临床侵袭性乳腺癌的诊断提供帮助。
科研菌
2020/11/23
4910
仅用公开数据集发4+分纯生信数据挖掘
基于深度学习的图像语义分割技术精度度量标准
为了衡量分割系统的作用及贡献,其性能需要经过严格评估。并且,评估须使用标准、公认的方法以保证公平性。
小草AI
2019/06/20
2.1K0
基于深度学习的图像语义分割技术精度度量标准
【CNN调参】图像分类算法优化技巧(实用性很高)
这篇论文的全名是:Bag of Tricks for Image Classification with Convolutional Neural Networks 。论文地址见附录。这篇论文是亚马逊团队对CNN网络调优的经验总结,实验基本是在分类网络实验上做的。目前,论文的复现结果都可以在GluonCV找到,地址为:https://github.com/dmlc/gluon-cv。可以将这篇论文理解为一堆经验丰富的工程师的调参技巧汇总,无论你是在做比赛,做学术,还是已经工作的AI开发者,相信都能从中受益。
BBuf
2020/04/01
1.2K0
基于ResNet和Transformer的场景文本识别
对于自然场景的文字识别我们会遇到了许多不规则裁剪的图像,其中包含文本表示。虽然已经引入了许多复杂的想法来从图像中提取确切的文本。例如光学字符识别 (OCR)、基于 RNN 的 seq2seq 注意方法都是被认为是从结构图像中提取序列信息的传统方法,但许多研究人员发现,很难处理不规则图像和训练时间使他们更加昂贵。基于 RNN 的 seq2seq 注意力方法需要输入的序列表示,这些输入因输入而异,因此很难训练数百万张图像。大多数时间模型无法预测文本或字符,因为我们正在处理自然场景图像。
deephub
2021/07/23
9450
基于ResNet和Transformer的场景文本识别
机器学习识别乳腺癌
人工神经网络是一种类似于大脑神经突触连接的结构进行信息处理的数学模型,由大量的输入层节点、隐藏层节点和输出层节点连接构成。有关神经网络算法最核心的三个问题就是:选择激活函数、隐藏层数目和节点的确定以及权重的设置。
用户1359560
2018/08/27
6370
谷歌AI医疗新成果:将转移性乳腺癌检测准确率推向了几乎完美的99%
在国家癌症中心发布的《2017年中国肿瘤的现状和趋势》报告中显示,乳腺癌的发病率已经位列女性恶性肿瘤之首。
镁客网
2018/10/18
5990

相似问题

初始Resnet v2传输学习测试精度差

22

低精度-传递学习+瓶颈角-tensorflow (resnet50)

10

深度学习CNN:低精度

17

Resnet在TensorFlow联邦中的低精度评估

23

基于割炬的Resnet18在CIFAR100上的低精度实现

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文