好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 深度學習小工程練習之tensorflow垃圾分類詳解

深度學習小工程練習之tensorflow垃圾分類詳解

熱門標簽:淮安呼叫中心外呼系統如何 佛山通用400電話申請 看懂地圖標注方法 蘇州人工外呼系統軟件 廣東旅游地圖標注 打印谷歌地圖標注 電話機器人貸款詐騙 電話外呼系統招商代理 京華圖書館地圖標注

介紹

這是一個基于深度學習的垃圾分類小工程,用深度殘差網絡構建

軟件架構

  1. 使用深度殘差網絡resnet50作為基石,在后續添加需要的層以適應不同的分類任務
  2. 模型的訓練需要用生成器將數據集循環寫入內存,同時圖像增強以泛化模型
  3. 使用不包含網絡輸出部分的resnet50權重文件進行遷移學習,只訓練我們在5個stage后增加的層

安裝教程

  1. 需要的第三方庫主要有tensorflow1.x,keras,opencv,Pillow,scikit-learn,numpy
  2. 安裝方式很簡單,打開terminal,例如:pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. 數據集與權重文件比較大,所以沒有上傳
  4. 如果環境配置方面有問題或者需要數據集與模型權重文件,可以在評論區說明您的問題,我將遠程幫助您

使用說明

  1. 文件夾theory記錄了我在本次深度學習中收獲的筆記,與模型訓練的控制臺打印信息
  2. 遷移學習需要的初始權重與模型定義文件resnet50.py放在model
  3. 下訓練運行trainNet.py,訓練結束會創建models文件夾,并將結果權重garclass.h5寫入該文件夾
  4. datagen文件夾下的genit.py用于進行圖像預處理以及數據生成器接口
  5. 使用訓練好的模型進行垃圾分類,運行Demo.py

結果演示

cans易拉罐

代碼解釋

在實際的模型中,我們只使用了resnet50的5個stage,后面的輸出部分需要我們自己定制,網絡的結構圖如下:

stage5后我們的定制網絡如下:

"""定制resnet后面的層"""
def custom(input_size,num_classes,pretrain):
    # 引入初始化resnet50模型
    base_model = ResNet50(weights=pretrain,
                          include_top=False,
                          pooling=None,
                          input_shape=(input_size,input_size, 3),
                          classes=num_classes)
    #由于有預權重,前部分凍結,后面進行遷移學習
    for layer in base_model.layers:
        layer.trainable = False
    #添加后面的層
    x = base_model.output
    x = layers.GlobalAveragePooling2D(name='avg_pool')(x)
    x = layers.Dropout(0.5,name='dropout1')(x)
    #regularizers正則化層,正則化器允許在優化過程中對層的參數或層的激活情況進行懲罰
    #對損失函數進行最小化的同時,也需要讓對參數添加限制,這個限制也就是正則化懲罰項,使用l2范數
    x = layers.Dense(512,activation='relu',kernel_regularizer= regularizers.l2(0.0001),name='fc2')(x)
    x = layers.BatchNormalization(name='bn_fc_01')(x)
    x = layers.Dropout(0.5,name='dropout2')(x)
    #40個分類
    x = layers.Dense(num_classes,activation='softmax')(x)
    model = Model(inputs=base_model.input,outputs=x)
    #模型編譯
    model.compile(optimizer="adam",loss = 'categorical_crossentropy',metrics=['accuracy'])
    return model

網絡的訓練是遷移學習過程,使用已有的初始resnet50權重(5個stage已經訓練過,卷積層已經能夠提取特征),我們只訓練后面的全連接層部分,4個epoch后再對較后面的層進行訓練微調一下,獲得更高準確率,訓練過程如下:

class Net():
    def __init__(self,img_size,gar_num,data_dir,batch_size,pretrain):
        self.img_size=img_size
        self.gar_num=gar_num
        self.data_dir=data_dir
        self.batch_size=batch_size
        self.pretrain=pretrain
    def build_train(self):
        """遷移學習"""
        model = resnet.custom(self.img_size, self.gar_num, self.pretrain)
        model.summary()
        train_sequence, validation_sequence = genit.gendata(self.data_dir, self.batch_size, self.gar_num, self.img_size)
        epochs=4
        model.fit_generator(train_sequence,steps_per_epoch=len(train_sequence),epochs=epochs,verbose=1,validation_data=validation_sequence,
                                     max_queue_size=10,shuffle=True)
        #微調,在實際工程中,激活函數也被算進層里,所以總共181層,微調是為了重新訓練部分卷積層,同時訓練最后的全連接層
        layers=149
        learning_rate=1e-4
        for layer in model.layers[:layers]:
            layer.trainable = False
        for layer in model.layers[layers:]:
            layer.trainable = True
        Adam =adam(lr=learning_rate, decay=0.0005)
        model.compile(optimizer=Adam, loss='categorical_crossentropy', metrics=['accuracy'])
        model.fit_generator(train_sequence,steps_per_epoch=len(train_sequence),epochs=epochs * 2,verbose=1,
            callbacks=[
                callbacks.ModelCheckpoint('./models/garclass.h5',monitor='val_loss', save_best_only=True, mode='min'),
                callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1,patience=10, mode='min'),
                callbacks.EarlyStopping(monitor='val_loss', patience=10),],
            validation_data=validation_sequence,max_queue_size=10,shuffle=True)
        print('finish train,look for garclass.h5')

訓練結果如下:

 """

    loss: 0.7949 - acc: 0.9494 - val_loss: 0.9900 - val_acc: 0.8797

    訓練用了9小時左右

 """

如果使用更好的顯卡,可以更快完成訓練

最后

希望大家可以體驗到深度學習帶來的收獲,能和大家學習很開心,更多關于深度學習的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 深度學習詳解之初試機器學習
  • 機器深度學習二分類電影的情感問題
  • 深度學習tensorflow基礎mnist
  • 吳恩達機器學習練習:神經網絡(反向傳播)

標簽:呼和浩特 湖州 衡水 江蘇 股票 駐馬店 中山 畢節

巨人網絡通訊聲明:本文標題《深度學習小工程練習之tensorflow垃圾分類詳解》,本文關鍵詞  深度,學習,小,工程,練,習之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深度學習小工程練習之tensorflow垃圾分類詳解》相關的同類信息!
  • 本頁收集關于深度學習小工程練習之tensorflow垃圾分類詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 《性船1980》无删减| 麻豆XXX乱女少妇精品潘甜甜| 色黄乱淫伦短篇小说全集正文 | 97视频免费人人观看人人| 精品二区| 美女脱光全身衣服| 美女网站黄页| 被粗大jib捣出了白浆H| 亚洲综合激情另类专区| 把女人弄爽特黄a大片视频| www.黄在线| 双腿吊起揉捏掐拧鞭打花蒂| 欧美最猛黑人XXXⅩ性色情| 韩国精品福利一区二区三区的区别| 性瘾难戒(NP,粗口,黄暴)简体| 娇妻被老外性调教1+8最新章节| ChineseGayFuckXXXXHD可播放| 久热这里都是精品| free张柏芝xxxxhd| 国产成人精品男人的天堂下载| 男人插女人网站| 男c女??黄秘??B站游戏| 少妇被cao高潮呻吟声不断| 久久久夜色精品亚洲AV李宗瑞| 孕妇性孕交XXXXXWWW| 91手机看片国产永久免费| 穿成年代文里的前妻| 国产精品久久久久久精品毛片牛奶| 日本五级床片免费硬硬互| 亚洲一级片免费看| 思思99re66在线精品免费观看| 麻豆精品秘?国产传媒夏夏 | 多肉文| 特级非洲黑人一级毛片| 无码精品人妻一区二区三区红楼| 精品国产AⅤ一区二区三区三区V视界| 韩国美女福利专区一区二区| 美女视频网站免费看| 杨幂ai换脸??视频在线观看 | 欧美大胆人体艺术| alexagracehd在线|