深度學習加速
綜述文檔: https://chenzomi12.github.io/02Hardware01Foundation/02ArchSlim.html
winograd: https://zhuanlan.zhihu.com/p/260109670
ncnn
1.修改模型結構,優化模型內存訪問次數,加速。
VGG 和 InceptionNet : 將5x5卷積替換成兩個3x3卷積,既提升了網絡深度,又減少了參數量.
MobileNet :深度可分離卷積,最后用1x1卷積組合,直接大量縮減模型參數量。
DenseNet 和 GhostNet :Reuse Feature Map,復用之前層的featureMap。
2.分布式訓練
torch.nn.parallel.DistributedDataParallel: 在多個GPU復制一份模型副本,單獨計算batch,計算完后,平均梯度值再廣播到所有GPU,更新。
3.矩陣乘法(卷積轉為矩陣乘法)
- 多線程
- 算法改進(Fast Fourier Transform、Strassen、Winograd)
知識蒸餾
1.自蒸餾:Be Your Own Teacher: Improve thePerformance of Convolutional Neural Networks viaSelf Distillation;
經典論文:
attention: https://arxiv.org/pdf/1706.03762
mobilenet系列
pix2pix
ALIKED
論文解讀
ALIKED
1.結構?
4個block,通過1x1卷積+上采樣組合所有block的特征,然后通過一個SMH (Score Map Head )得到Score Map,再通過DKD模塊(NMS)得到特征點位置(64x64x128),同時得到對應點的描述子。
2.卷積無法保證提取到的點是仿射不變的?aliked中怎么解決該問題的?
答:因為卷積帶有特定模式,比如檢測橫線的卷積,在特征圖做仿射變換后變成非橫線,卷積就檢測不到了。
ATTENTION IS ALL YOU NEED
1.QKV結構,QKV是通過輸入做Linear得到,Linear的權重為可學習參數;
2.通過QK點乘,得到對應的V的重要程度權重,再用權重與V乘,得到每個v加權后的注意力值;
3.QK點乘實際是計算的余弦相似度。
工具:
神經網絡可視化工具(每一層輸出的可視化,用以指導每層網絡的設計是否合理):https://blog.51cto.com/u_16099181/8552104
Winograd
卷積運算轉為矩陣乘法后,存在很多重復值,等效稀疏矩陣,比普通矩陣實際少很多計算量。