深度模型壓縮論文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

文章目錄

      • 1.摘要和背景
        • 1.1 摘要
        • 1.2 背景
      • 2.方法和貢獻
        • 2.1 方法
        • 2.1.1 訓練過程
      • 2.1.2 loss介紹
        • 2.2 貢獻
      • 3.實驗和結果
        • 3.1 實驗
        • 3.2 結果
      • 4.總結和展望
        • 4.1 總結
        • 4.2 展望

主要貢獻:基于網絡蒸餾方法,提出了一種提升裁剪后模型的精度的方法!將訓練時間大大縮短!
推薦指數:4顆星(5顆星滿)

本系列是在閱讀深度神經網絡模型小型化方面論文時的筆記!內容大部分從論文中摘取,也會有部分自己理解,有錯誤的地方還望大家批評指出!

論文鏈接:Be Your Own Teacher: Improve the Performance of Convolutional Neural
Networks via Self Distillation
代碼鏈接:github代碼

1.摘要和背景

1.1 摘要

原文摘要:
Convolutional neural networks have been widely deployed in various application scenarios. In order to extend the applications’ boundaries to some accuracy-crucial domains,researchers have been investigating approaches to boost accuracy through either deeper or wider network structures, which brings with them the exponential increment of the computational and storage cost, delaying the responding time.
卷積網絡被用于很多地方,其中很多人為了提高卷積網絡的精度,對模型的深度和寬度進行增加,但是雖然模型的精度有所增加,但是模型的大小和模型的flops急劇增加,這是得不償失的。
In this paper, we propose a general training framework named self distillation, which notably enhances the performance (accuracy) of convolutional neural networks through shrinking the size of the network rather than aggrandizing it. Different from traditional knowledge distillation - a knowledge transformation methodology among networks, which forces student neural networks to approximate the softmax layer outputs of pre-trained teacher neural networks, the proposed self distillation framework distills knowledge within network itself. The networks are firstly divided into several sections. Then the knowledge in the deeper portion of the networks is squeezed into the shallow ones. Experiments further prove the generalization of the proposed self distillation framework: enhancement of accuracy at average level is 2.65%, varying from 0.61% in ResNeXt as minimum to 4.07% in VGG19 as maximum. In addition, it can also provide flexibility of depth-wise scalable inference on resource-limited edge devices. Our codes will be released on github soon.
在本文中,提出了一種通用的訓練框架,使用該框架,模型可以在不增加深度和寬度的基礎上,提高模型的精度。提出的自蒸餾框架是一種網絡間的知識轉換方法,它要求學生神經網絡近似于預先訓練好的教師神經網絡的softmax層的輸出。該方法主要步驟為:1)將原始網絡按照網絡結構的特點分成幾個淺層的網絡;2)對分出來的淺層的網絡分別使用網絡蒸餾的方法(與傳統的蒸餾方法還不一樣,具體請看下面)。最后得出的結果發現使用提出的框架對網絡進行訓練比fine_turn效果好!

1.2 背景

  • 卷積網絡由已經在圖像分類,目標檢測和語義分割方面取得了非常好的結果;一般提升網絡精度的方法是度網絡的深度和寬度增加,但是常常得到的結果是增加的精度與增加的計算量是不對等的,所以該方法有弊端。
  • 為了能夠讓網絡在計算資源受限的平臺上運行,則需要優化的目標是在滿足資源限制的基礎上,盡可能的降低裁剪后模型的精度;常用的方法包括:1)輕量級的網絡設計;2)網絡剪枝;3)網絡量化等;但是如何提高裁剪后模型的精度是模型后優化問題。
  • 知識蒸餾是網絡模型壓縮中常用的方法,但是傳統的知識蒸餾方法需要先預先訓練一個大的強的老師網絡,然后在指導不同結構的學生網絡進行訓練,從而達到將大網絡(老師網絡)的知識壓縮到小網絡(學生網絡)。其中,大網絡的訓練和小網絡結構的尋找是非常耗時的。
  • 本文提出一個方法,不需要訓練老師網絡也不需要尋找學生網絡,老師網絡和學生網絡使用相同的結構,然后只需要一步就可以使用知識蒸餾的方法對網絡精度進行提升。
    在這里插入圖片描述

2.方法和貢獻

2.1 方法

在這里插入圖片描述
上圖是本文提出的自蒸餾訓練框架圖。從圖中可以看出,論文首先將原始網絡分成了4個淺層的網絡,然后在每個淺層的網絡的輸出加上一個瓶頸卷積,全連接層和softmax層,并能夠輸出預測的類別的概率。網絡的前傳播過程主要分為4個,其中前面3個為淺層網絡的前向通道,最后一個為老師網絡的前向通道。網絡中的loss也分為3類。下面將詳細介紹。

2.1.1 訓練過程

  • 根據初始網絡的深度和結構,將初始網絡分為幾個淺層網絡。其中初始網絡作為老師網絡,淺層網絡和深層網絡作為學生網絡(如果我們選擇的學生網絡的結構是和老師網絡一樣的,那么深層網絡就是學生網絡,否則淺層網絡是學生網絡。)
  • 在每一個淺層網絡的后面加上一個瓶頸層,全連接層和softmax層,構成一個學生分類器。其中使用瓶頸卷積的目的是減少每個淺層分類器之間的影響。
  • 在訓連教師網絡的基礎上,使用知識蒸餾方法對學生網絡進行訓練,最終訓練好學生網絡。
    在這里插入圖片描述

2.1.2 loss介紹

  • loss Source1:Cross entropy loss from labels to not only the deepest classifier, but also all the shallow classifiers;衡量的是深層網絡和淺層網絡的輸出與真實標簽之間的差異。
  • loss Source2:KL (Kullback-Leibler) divergence loss under teacher’s guidance;衡量的是老師網絡和學生網絡的分布差異性。
  • loss Source3:L2 loss from hints;衡量的是學生網絡和老師網絡特征之間的差異性;
    在這里插入圖片描述

2.2 貢獻

  • 提出了自蒸餾的訓練框架,使得模型在不增加大小,flops和時間的基礎上,提高模型的精度。
  • 自蒸餾提供了一個可在不同深度執行的單一神經網絡,允許在資源有限的邊緣設備上進行自適應的精度-效率權衡。即:我們可以在原始網絡的基礎上,根據資源的要求在進行網絡的裁剪(分成很多淺層網絡)。
  • 在常用的5種卷積模型和2種數據集上進行了實驗,發現使用本文所提出的的方法得到的結果都比自學習的方法要好。

3.實驗和結果

3.1 實驗

  • 5個常用的模型:ResNet,WideResNet,Pyramid ResNet,ResNeXt,VGG
  • 兩個數據集:cifar100 和ImageNet

3.2 結果

  • 不同模型在cifar100上,使用本文方法和不使用本文方法的結果對比:
    在這里插入圖片描述

1.從實驗的結果可以看出,無論是哪種模型,使用本文方法訓練后的模型精度都會比直接訓練的模型精度高。
2.針對大部分模型,當網絡截取0.75 的時候,得到模型的精度已經比基準模型要好了。
3.集成的結果比使用本文方法訓練后全部網絡效果要好。

  • 不同模型在ImageNet上,使用本文方法和不使用本文方法的結果對比:
    在這里插入圖片描述

1.從實驗的結果可以看出,實驗結果和cifar100上的結果類似。

  • 不同方法在cifar100和不同模型上的結果對比,其中baseline是不采用蒸餾方法得到的結果,其余的都采用了蒸餾的方法。
    在這里插入圖片描述

1.從表中的結果可以看出,使用蒸餾方法訓練得到的模型精度比不使用蒸餾得到的要高。
2.本文所提方法得到的精度都要比其他蒸餾方法的結果要高。

  • 本文方法與使用深度監督方法在cifar100和不同模型上的結果對比。
    在這里插入圖片描述

1.通過表中你的結果可以看出,無論哪種模型,本文所提出的的方法相比于只是用深度監督方法的結果要好。

  • 本文方法在模型速度和精度方面的權衡結果。
    在這里插入圖片描述

1.初始網絡的層數越深,則加速效果會更加明顯!
2.從實驗的結果來看,在幾乎相同的裁剪率下,legr算法得到的模型的精度比本文提出的方法要高一些!
3.是否可以將網絡拆分的更多,使得速度的增加粒度更細

4.總結和展望

4.1 總結

  • 提出的自蒸餾訓練框架能夠大大的增加訓練后模型的精度。
  • 相比于傳統的蒸餾方法,提出了一段式的蒸餾方法,將模型的訓練時間縮短。
  • 相比于其他改進的蒸餾方法,模型的精度得到提升
  • 不僅可以提升模型的精度,還可以在一定精度的要求下,對模型的結構進行裁剪。

4.2 展望

  • Automatic adjustment of newly introduced hyperparameters

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445131.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關系數據庫——基礎

數據庫系統概論 四個基本概念 數據:數據庫中存儲的基本對象,描述一個事物的符號記錄,數據和其語義不可分開說 數據庫(DB):是長期儲存在計算機內、有組織的、可共享的大量數據的集合。 數據庫管理系統&a…

Python(27)-模塊

模塊、包1.模塊導入的方式2.使用as給模塊取一個別名(大駝峰命名法)3.從模塊中導入部分工具4.從模塊中導入全部工具5.模塊搜索順序6__name__7.包8.發布模塊、安裝模塊、卸載包9.pip安裝第三方模塊本系列博文來自學習《Python基礎視頻教程》筆記整理&#…

Wow6432Node

64 位版本 Windows 中的注冊表分為 32 位注冊表項和 64 位注冊表項。許多 32 位注冊表項與其相應的 64 位注冊表項同名,反之亦然。 64 位版本 Windows 包含的默認 64 位版本注冊表編輯器 (Regedit.exe) 可顯示 64 位和 32 位的 注冊表項。WOW64 注冊表重定向器為 32 位程序提供…

如何使用docker配置深度學習開發環境

文章目錄1.底層驅動的安裝1.1 操作系統的安裝1.2 顯卡驅動的安裝1.3 cuda的安裝2.使用docker配置深度學習開發環境2.1 docker的安裝2.2 nvidia_docker的安裝2.3 安裝過程中的問題2.3.1 docker和nvidia_docker的版本不匹配的問題。2.3.2 解決每次運行docker命令的時候要加sudo.2…

反射全解

反射的概念 反射的引入: Object obj new Student(); 若程序運行時接收到外部傳入的一個對象,該對象的編譯類型是Object,但程序又需要調用該對象運行類型的方法: 1.若編譯和運行類型都知道,使用 instanceof判斷后&…

MachineLearning(4)-核函數與再生核希爾伯特空間

核函數與再生核希爾伯特空間1.支持向量積-核函數2.一個函數為核函數的條件3.核函數與希爾伯特空間3.1希爾伯特空間-Hilbert空間1.支持向量積-核函數 核(kernel)的概念由Aizenman et al.于1964年引入模式識別領域,原文介紹的是勢函數的方法。在那之后,核…

CRegKey 注冊表操作

1.簡介 CRegKey提供了對系統注冊表的操作方法,通過CRegKey類,可以方便的打開注冊表的某個分支或子鍵(CRegKey::Open),可以方便的修改一個鍵的鍵值(CRegKey::SetValue),也可以查詢某…

進程基礎

進程的基本概念 程序順序執行的特征: 1)順序性:處理機嚴格按照程序所規定的順序執行,每一步操作必須在下一步操作開始前執行 2)封閉性:程序在封閉的環境下運行,程序獨占資源,資源的狀…

用Docker容器自帶的tensorflow serving部署模型對外服務

相信很多人和我一樣,在試圖安裝tensorflow serving的時候,翻遍了網上的博客和官網文檔,安裝都是以失敗而告終,我也是一樣,這個問題折磨了我兩個星期之久,都快放棄了。幸運的是在同事的建議下,我…

C資源

云風最近寫了一篇博客《C語言的前世今生》。作為長期使用C語言開發網絡游戲服務器的程序員,云風是有理由寫這樣一篇文字,不過還是感覺談的不夠深入,C語言在業界使用的現狀沒有怎么描寫,有些意猶未盡。在這里想比較系統的談談個人對…

學點數學(2)-特征函數

特征函數1.數列特征方程2.矩陣特征方程3.微分方程特征方程4.積分方程特征方程特征方程是為研究相應的數學對象而引入的一些等式,這些等式描述了特定對象的特性。依據研究的對象不同,特征方程包括數列特征方程、矩陣特征方程、微分方程特征方程、積分方程…

GCC如何產生core dump

先決條件1.安裝apport(automatically generate crash reports for debugging)2.修改/etc/security/limits.conf文件,使允許core dump,或者用ulimit -c unlimited設置core dump文件的大小為unlimited3.C/C的編譯開關-g(…

經典的進程同步問題

經典的進程同步問題 普通版:一類進程作為生產者,生產產品,生產的產品放入一個緩沖區,消費者從緩沖區中取出產品,需要保證生產者不可以向滿的緩沖區中添加產品,消費者不可以從空的緩沖區中取出產品。同一時刻…

面試題匯總---深度學習(圖像識別,NLP內容)

文章目錄1.基本概念1.1 為什么神經網絡中深度網絡的表現比廣度網絡表現好?1.2 推導BP算法1.3 什么是梯度消失和梯度爆炸?1.4 常用的激活函數有哪些?1.5 常用的參數更新方法有哪些?1.6 解決過擬合的方法?數據層面模型層…

Linux-2.6.25 TCPIP函數調用大致流程

Linux-2.6.25 TCPIP函數調用大致流程學習目的,隨手筆記。函數和文字說明會不斷補充更新。Changelog2008.10.08 最近找工作忙。暫時緩緩插口層系統調用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

Python(28)-文件,os模塊

文件1. 文件2. 文件的基本操作3. 讀取文件open()3.1 文件指針: 標記從哪一個位置開始讀取數據.3.2 文件的打開方式mode3.3 文件按行讀取3.3.1 readline()3.3.2 readlines()4.文件輸出f.write(),print()5.文件復制5.1 小文件復制(搬家)5.2 大文件復制&…

IOCP的程序

C代碼 #include <winsock2.h> #include <mswsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "vld.h" #pragma message("automatic link to ws2_32.lib and…

PaperNotes(3)-圖像分割-RCNN-FCN-Boxsup

圖像分割算法對比小結1.{基本概念}2.{R-CNN}2.1R-CNN 網絡結構選擇性搜索算法為什么選擇SVM作分類器邊框回歸2.2{R-CNN 訓練}2.3{R-CNN實驗結果}2.4{R-CNN語義分割}2.5{補充材料}2.5.1{R-CNN建議區域放縮}2.5.2{IOU閾值設置不一樣的原因}2.5.3{Bounding-box回歸修正}2.6{R-CNN存…

Python模塊(3)--PIL 簡易使用教程

PIL模塊-用與記1.圖片導入Image.open()2.圖像顯示.show()4.查看圖片屬性.format,.size,.mode3.圖像格式轉換.convert()4.圖像模式“L”&#xff0c;“RGB”,"CYMK"5. 圖片旋轉.rotate()旋轉方式1&#xff1a;旋轉不擴展旋轉方式2&#xff1a;旋轉擴展旋轉方式3&#…

日志級別 debug info warn eirror fatal

日志級別 debug info warn eirror fatal 軟件中總免不了要使用諸如 Log4net, Log4j, Tracer 等東東來寫日志&#xff0c;不管用什么&#xff0c;這些東東大多是大同小異的&#xff0c;一般都提供了這樣5個日志級別&#xff1a; Debug Info Warn Error Fatal一個等級比一個高&…