中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

橙子建站官網(wǎng)是哪個seo代碼優(yōu)化工具

橙子建站官網(wǎng)是哪個,seo代碼優(yōu)化工具,聊城做網(wǎng)站多少錢,wordpress 社區(qū)插件文章目錄 1 前言2 前言3 數(shù)據(jù)集3.1 良性樣本3.2 病變樣本 4 開發(fā)環(huán)境5 代碼實現(xiàn)5.1 實現(xiàn)流程5.2 部分代碼實現(xiàn)5.2.1 導(dǎo)入庫5.2.2 圖像加載5.2.3 標(biāo)記5.2.4 分組5.2.5 構(gòu)建模型訓(xùn)練 6 分析指標(biāo)6.1 精度,召回率和F1度量6.2 混淆矩陣 7 結(jié)果和結(jié)論8 最后 1 前言 &…

文章目錄

  • 1 前言
  • 2 前言
  • 3 數(shù)據(jù)集
    • 3.1 良性樣本
    • 3.2 病變樣本
  • 4 開發(fā)環(huán)境
  • 5 代碼實現(xiàn)
    • 5.1 實現(xiàn)流程
    • 5.2 部分代碼實現(xiàn)
      • 5.2.1 導(dǎo)入庫
      • 5.2.2 圖像加載
      • 5.2.3 標(biāo)記
      • 5.2.4 分組
      • 5.2.5 構(gòu)建模型訓(xùn)練
  • 6 分析指標(biāo)
    • 6.1 精度,召回率和F1度量
    • 6.2 混淆矩陣
  • 7 結(jié)果和結(jié)論
  • 8 最后

1 前言

🔥 優(yōu)質(zhì)競賽項目系列,今天要分享的是

🚩 深度學(xué)習(xí)乳腺癌分類

該項目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦!

🥇學(xué)長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數(shù):3分
  • 工作量:3分
  • 創(chuàng)新點:4分

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

2 前言

乳腺癌是全球第二常見的女性癌癥。2012年,它占所有新癌癥病例的12%,占所有女性癌癥病例的25%。

當(dāng)乳腺細(xì)胞生長失控時,乳腺癌就開始了。這些細(xì)胞通常形成一個腫瘤,通常可以在x光片上直接看到或感覺到有一個腫塊。如果癌細(xì)胞能生長到周圍組織或擴(kuò)散到身體的其他地方,那么這個腫瘤就是惡性的。

以下是報告:

  • 大約八分之一的美國女性(約12%)將在其一生中患上浸潤性乳腺癌。
  • 2019年,美國預(yù)計將有268,600例新的侵襲性乳腺癌病例,以及62,930例新的非侵襲性乳腺癌。
  • 大約85%的乳腺癌發(fā)生在沒有乳腺癌家族史的女性身上。這些發(fā)生是由于基因突變,而不是遺傳突變
  • 如果一名女性的一級親屬(母親、姐妹、女兒)被診斷出患有乳腺癌,那么她患乳腺癌的風(fēng)險幾乎會增加一倍。在患乳腺癌的女性中,只有不到15%的人的家人被診斷出患有乳腺癌。

3 數(shù)據(jù)集

該數(shù)據(jù)集為學(xué)長實驗室數(shù)據(jù)集。

搜先這是圖像二分類問題。我把數(shù)據(jù)拆分如圖所示

?
dataset train
benign
b1.jpg
b2.jpg
//
malignant
m1.jpg
m2.jpg
// validation
benign
b1.jpg
b2.jpg
//
malignant
m1.jpg
m2.jpg
//…

訓(xùn)練文件夾在每個類別中有1000個圖像,而驗證文件夾在每個類別中有250個圖像。

3.1 良性樣本

在這里插入圖片描述
在這里插入圖片描述

3.2 病變樣本

在這里插入圖片描述
在這里插入圖片描述

4 開發(fā)環(huán)境

  • scikit-learn
  • keras
  • numpy
  • pandas
  • matplotlib
  • tensorflow

5 代碼實現(xiàn)

5.1 實現(xiàn)流程

完整的圖像分類流程可以形式化如下:

我們的輸入是一個由N個圖像組成的訓(xùn)練數(shù)據(jù)集,每個圖像都有相應(yīng)的標(biāo)簽。

然后,我們使用這個訓(xùn)練集來訓(xùn)練分類器,來學(xué)習(xí)每個類。

最后,我們通過讓分類器預(yù)測一組從未見過的新圖像的標(biāo)簽來評估分類器的質(zhì)量。然后我們將這些圖像的真實標(biāo)簽與分類器預(yù)測的標(biāo)簽進(jìn)行比較。

5.2 部分代碼實現(xiàn)

5.2.1 導(dǎo)入庫

?

import json
import math
import os
import cv2
from PIL import Image
import numpy as np
from keras import layers
from keras.applications import DenseNet201
from keras.callbacks import Callback, ModelCheckpoint, ReduceLROnPlateau, TensorBoard
from keras.preprocessing.image import ImageDataGenerator
from keras.utils.np_utils import to_categorical
from keras.models import Sequential
from keras.optimizers import Adam
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import cohen_kappa_score, accuracy_score
import scipy
from tqdm import tqdm
import tensorflow as tf
from keras import backend as K
import gc
from functools import partial
from sklearn import metrics
from collections import Counter
import json
import itertools

5.2.2 圖像加載

接下來,我將圖像加載到相應(yīng)的文件夾中。

?

def Dataset_loader(DIR, RESIZE, sigmaX=10):IMG = []read = lambda imname: np.asarray(Image.open(imname).convert("RGB"))for IMAGE_NAME in tqdm(os.listdir(DIR)):PATH = os.path.join(DIR,IMAGE_NAME)_, ftype = os.path.splitext(PATH)if ftype == ".png":img = read(PATH)img = cv2.resize(img, (RESIZE,RESIZE))IMG.append(np.array(img))return IMGbenign_train = np.array(Dataset_loader('data/train/benign',224))
malign_train = np.array(Dataset_loader('data/train/malignant',224))
benign_test = np.array(Dataset_loader('data/validation/benign',224))
malign_test = np.array(Dataset_loader('data/validation/malignant',224))

5.2.3 標(biāo)記

之后,我創(chuàng)建了一個全0的numpy數(shù)組,用于標(biāo)記良性圖像,以及全1的numpy數(shù)組,用于標(biāo)記惡性圖像。我還重新整理了數(shù)據(jù)集,并將標(biāo)簽轉(zhuǎn)換為分類格式。

?

benign_train_label = np.zeros(len(benign_train))
malign_train_label = np.ones(len(malign_train))
benign_test_label = np.zeros(len(benign_test))
malign_test_label = np.ones(len(malign_test))X_train = np.concatenate((benign_train, malign_train), axis = 0)
Y_train = np.concatenate((benign_train_label, malign_train_label), axis = 0)
X_test = np.concatenate((benign_test, malign_test), axis = 0)
Y_test = np.concatenate((benign_test_label, malign_test_label), axis = 0)s = np.arange(X_train.shape[0])
np.random.shuffle(s)
X_train = X_train[s]
Y_train = Y_train[s]s = np.arange(X_test.shape[0])
np.random.shuffle(s)
X_test = X_test[s]
Y_test = Y_test[s]Y_train = to_categorical(Y_train, num_classes= 2)
Y_test = to_categorical(Y_test, num_classes= 2)

5.2.4 分組

然后我將數(shù)據(jù)集分成兩組,分別具有80%和20%圖像的訓(xùn)練集和測試集。讓我們看一些樣本良性和惡性圖像

?

x_train, x_val, y_train, y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=11
)w=60
h=40
fig=plt.figure(figsize=(15, 15))
columns = 4
rows = 3for i in range(1, columns*rows +1):ax = fig.add_subplot(rows, columns, i)if np.argmax(Y_train[i]) == 0:ax.title.set_text('Benign')else:ax.title.set_text('Malignant')plt.imshow(x_train[i], interpolation='nearest')
plt.show()

在這里插入圖片描述

5.2.5 構(gòu)建模型訓(xùn)練

我使用的batch值為16。batch是深度學(xué)習(xí)中最重要的超參數(shù)之一。我更喜歡使用更大的batch來訓(xùn)練我的模型,因為它允許從gpu的并行性中提高計算速度。但是,眾所周知,batch太大會導(dǎo)致泛化效果不好。在一個極端下,使用一個等于整個數(shù)據(jù)集的batch將保證收斂到目標(biāo)函數(shù)的全局最優(yōu)。但是這是以收斂到最優(yōu)值較慢為代價的。另一方面,使用更小的batch已被證明能夠更快的收斂到好的結(jié)果。這可以直觀地解釋為,較小的batch允許模型在必須查看所有數(shù)據(jù)之前就開始學(xué)習(xí)。使用較小的batch的缺點是不能保證模型收斂到全局最優(yōu)。因此,通常建議從小batch開始,通過訓(xùn)練慢慢增加batch大小來加快收斂速度。

我還做了一些數(shù)據(jù)擴(kuò)充。數(shù)據(jù)擴(kuò)充的實踐是增加訓(xùn)練集規(guī)模的一種有效方式。訓(xùn)練實例的擴(kuò)充使網(wǎng)絡(luò)在訓(xùn)練過程中可以看到更加多樣化,仍然具有代表性的數(shù)據(jù)點。

然后,我創(chuàng)建了一個數(shù)據(jù)生成器,自動從文件夾中獲取數(shù)據(jù)。Keras為此提供了方便的python生成器函數(shù)。

?

BATCH_SIZE = 16train_generator = ImageDataGenerator(zoom_range=2,  # 設(shè)置范圍為隨機(jī)縮放rotation_range = 90,horizontal_flip=True,  # 隨機(jī)翻轉(zhuǎn)圖片vertical_flip=True,  # 隨機(jī)翻轉(zhuǎn)圖片)

下一步是構(gòu)建模型。這可以通過以下3個步驟來描述:

  • 我使用DenseNet201作為訓(xùn)練前的權(quán)重,它已經(jīng)在Imagenet比賽中訓(xùn)練過了。設(shè)置學(xué)習(xí)率為0.0001。

  • 在此基礎(chǔ)上,我使用了globalaveragepooling層和50%的dropout來減少過擬合。

  • 我使用batch標(biāo)準(zhǔn)化和一個以softmax為激活函數(shù)的含有2個神經(jīng)元的全連接層,用于2個輸出類的良惡性。

  • 我使用Adam作為優(yōu)化器,使用二元交叉熵作為損失函數(shù)。

    def build_model(backbone, lr=1e-4):model = Sequential()model.add(backbone)model.add(layers.GlobalAveragePooling2D())model.add(layers.Dropout(0.5))model.add(layers.BatchNormalization())model.add(layers.Dense(2, activation='softmax'))model.compile(loss='binary_crossentropy',optimizer=Adam(lr=lr),metrics=['accuracy'])return modelresnet = DenseNet201(weights='imagenet',include_top=False,input_shape=(224,224,3)
    )model = build_model(resnet ,lr = 1e-4)
    model.summary()
    

讓我們看看每個層中的輸出形狀和參數(shù)。

在這里插入圖片描述
在訓(xùn)練模型之前,定義一個或多個回調(diào)函數(shù)很有用。非常方便的是:ModelCheckpoint和ReduceLROnPlateau。

  • ModelCheckpoint:當(dāng)訓(xùn)練通常需要多次迭代并且需要大量的時間來達(dá)到一個好的結(jié)果時,在這種情況下,ModelCheckpoint保存訓(xùn)練過程中的最佳模型。

  • ReduceLROnPlateau:當(dāng)度量停止改進(jìn)時,降低學(xué)習(xí)率。一旦學(xué)習(xí)停滯不前,模型通常會從將學(xué)習(xí)率降低2-10倍。這個回調(diào)函數(shù)會進(jìn)行監(jiān)視,如果在’patience’(耐心)次數(shù)下,模型沒有任何優(yōu)化的話,學(xué)習(xí)率就會降低。

在這里插入圖片描述

該模型我訓(xùn)練了60個epoch。

?

learn_control = ReduceLROnPlateau(monitor='val_acc', patience=5,verbose=1,factor=0.2, min_lr=1e-7)filepath="weights.best.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')history = model.fit_generator(train_generator.flow(x_train, y_train, batch_size=BATCH_SIZE),steps_per_epoch=x_train.shape[0] / BATCH_SIZE,epochs=20,validation_data=(x_val, y_val),callbacks=[learn_control, checkpoint]
)

6 分析指標(biāo)

評價模型性能最常用的指標(biāo)是精度。然而,當(dāng)您的數(shù)據(jù)集中只有2%屬于一個類(惡性),98%屬于其他類(良性)時,錯誤分類的分?jǐn)?shù)就沒有意義了。你可以有98%的準(zhǔn)確率,但仍然沒有發(fā)現(xiàn)惡性病例,即預(yù)測的時候全部打上良性的標(biāo)簽,這是一個不好的分類器。

?

history_df = pd.DataFrame(history.history)
history_df[['loss', 'val_loss']].plot()history_df = pd.DataFrame(history.history)
history_df[['acc', 'val_acc']].plot()

在這里插入圖片描述

6.1 精度,召回率和F1度量

為了更好地理解錯誤分類,我們經(jīng)常使用以下度量來更好地理解真正例(TP)、真負(fù)例(TN)、假正例(FP)和假負(fù)例(FN)。

精度反映了被分類器判定的正例中真正的正例樣本的比重。

召回率反映了所有真正為正例的樣本中被分類器判定出來為正例的比例。

F1度量是準(zhǔn)確率和召回率的調(diào)和平均值。

在這里插入圖片描述

6.2 混淆矩陣

混淆矩陣是分析誤分類的一個重要指標(biāo)。矩陣的每一行表示預(yù)測類中的實例,而每一列表示實際類中的實例。對角線表示已正確分類的類。這很有幫助,因為我們不僅知道哪些類被錯誤分類,還知道它們?yōu)槭裁幢诲e誤分類。

?

from sklearn.metrics import classification_report
classification_report( np.argmax(Y_test, axis=1), np.argmax(Y_pred_tta, axis=1))from sklearn.metrics import confusion_matrixdef plot_confusion_matrix(cm, classes,normalize=False,title='Confusion matrix',cmap=plt.cm.Blues):if normalize:cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]print("Normalized confusion matrix")else:print('Confusion matrix, without normalization')print(cm)plt.imshow(cm, interpolation='nearest', cmap=cmap)plt.title(title)plt.colorbar()tick_marks = np.arange(len(classes))plt.xticks(tick_marks, classes, rotation=55)plt.yticks(tick_marks, classes)fmt = '.2f' if normalize else 'd'thresh = cm.max() / 2.for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):plt.text(j, i, format(cm[i, j], fmt),horizontalalignment="center",color="white" if cm[i, j] > thresh else "black")plt.ylabel('True label')plt.xlabel('Predicted label')plt.tight_layout()cm = confusion_matrix(np.argmax(Y_test, axis=1), np.argmax(Y_pred, axis=1))cm_plot_label =['benign', 'malignant']
plot_confusion_matrix(cm, cm_plot_label, title ='Confusion Metrix for Skin Cancer')

在這里插入圖片描述

7 結(jié)果和結(jié)論

在這里插入圖片描述
在這個博客中,學(xué)長我演示了如何使用卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)從一組顯微圖像中對良性和惡性乳腺癌進(jìn)行分類,希望對大家有所幫助。

8 最后

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

http://www.risenshineclean.com/news/4626.html

相關(guān)文章:

  • 電子線路板東莞網(wǎng)站建設(shè)免費的seo優(yōu)化
  • java做企業(yè)網(wǎng)站小小課堂seo自學(xué)網(wǎng)
  • 做ppt一般在什么網(wǎng)站要怎么網(wǎng)絡(luò)做推廣
  • 怎么用b2b網(wǎng)站做排名快速優(yōu)化工具
  • 哪種瀏覽器可以打開所有網(wǎng)站不限制內(nèi)容的搜索引擎
  • 網(wǎng)做網(wǎng)站google關(guān)鍵詞查詢工具
  • 幫公司做網(wǎng)站商丘網(wǎng)站seo
  • 公司網(wǎng)站開發(fā)招標(biāo)書天津優(yōu)化公司哪家好
  • 空間商網(wǎng)站站長之家域名查詢官網(wǎng)
  • 做海外網(wǎng)站推廣直播營銷
  • 自己個人的網(wǎng)站怎么設(shè)計營銷策劃的六個步驟
  • 網(wǎng)站使用幫助內(nèi)容銷售策略和營銷策略
  • 網(wǎng)站公司建設(shè)網(wǎng)絡(luò)營銷方法
  • 可以做產(chǎn)品推廣的網(wǎng)站寧波seo關(guān)鍵詞
  • 網(wǎng)站怎么做預(yù)約小程序電商網(wǎng)站seo
  • 個人博客網(wǎng)站建設(shè)選題說明seo關(guān)鍵詞優(yōu)化案例
  • 荊州建設(shè)局網(wǎng)站軟件外包公司是什么意思
  • 什么網(wǎng)站可以找到防水工程做網(wǎng)絡(luò)推廣的主要工作內(nèi)容
  • 維護(hù)一個網(wǎng)站需要多少錢怎么制作網(wǎng)頁廣告
  • 網(wǎng)站空間和數(shù)據(jù)庫空間seo基礎(chǔ)入門視頻教程
  • 做黃金理財?shù)木W(wǎng)站短視頻seo排名
  • 求個網(wǎng)站好人有好報百度貼吧怎么做百度網(wǎng)頁推廣
  • bae做網(wǎng)站市場推廣怎么做
  • redis做緩存的網(wǎng)站并發(fā)數(shù)深圳網(wǎng)絡(luò)營銷全網(wǎng)推廣
  • dw做了網(wǎng)站還可以做淘寶詳情嗎西安seo站內(nèi)優(yōu)化
  • 企業(yè)建立網(wǎng)站需要百度廣告投放公司
  • 幫你做海報網(wǎng)站寧波網(wǎng)絡(luò)建站模板
  • 網(wǎng)站建設(shè)是設(shè)計師嗎軟件推廣方案經(jīng)典范文
  • 專門做汽車配件的外貿(mào)網(wǎng)站網(wǎng)站目錄
  • 做網(wǎng)站怎么買服務(wù)器嗎關(guān)鍵詞推廣價格