1. 程式人生 > >ABCnet——高精度二值化網路(Binary Neural Network)

ABCnet——高精度二值化網路(Binary Neural Network)

"Towards Accurate Binary Convolutional Neural Network"這篇文章提出了ABCnet,是一種表示精度較高的二值化網路結構(作為XNORnet的演進)。有關XNORnet及其優勢可以參考論文:"XNORNet: ImageNet Classification Using Binary Convolutional Neural Networks"。

論文地址:https://arxiv.org/abs/1711.11294

ABCnet GitHub:https://github.com/layog/Accurate-Binary-Convolution-Network

XNORnet GitHub:https://github.com/ayush29feb/Sketch-A-XNORNet

1、權重引數二值化的線性組合

文章採用一組二值化基(binary filter base)的線性組合來表示網路層引數:

線性組合係數與二值化基的求解問題如下:

針對每個網路層,文章採用一組固定數值的矢量表示二值化基,並且由網路層引數的均值與標準差決定:

由此便可以獲得單一求解線性組合係數的優化問題:

2、權重引數的STE求導

當引數二值化之後,由於估計取值的離散性,不能直接求解損失函式關於原引數的導數,只能用STE(Straight Through Estimator)方法近似求解:

其中為損失函式,表示網路層輸出。

3、網路層輸入的量化

當網路引數二值化之後,便可以消除卷積或矩陣乘法涉及的乘法操作(multiplier-free),若進一步將網路層輸入量化為1bit,那麼卷積或矩陣乘法便可以簡化為bit-wise XNOR與bit-count運算:

實施二值化操作時,網路層輸入仍然採用一組二值化基的線性組合予以估計:

其中scale係數(beta)、shift係數(v)是可訓練引數,類似於Batch Normalization的仿射變換系數。最終二值化網路層的構造及計算方式如下:

若網路層同時包含pooling、batch normalization及activation操作,則類似於XNORnet的做法,網路層可構造為bn -> conv2d -> pooling -> activation的形式:

並且BN(仿射變換)與網路層輸入的二值化可以合併在一起:

4、實驗結果

針對ImageNet2012分類任務,以Resnet18為例,ABCnet結構相比於原網路、以及其他二值化網路的推理精度對比如下:

相關推薦

ABCnet——精度網路Binary Neural Network

"Towards Accurate Binary Convolutional Neural Network"這篇文章提出了ABCnet,是一種表示精度較高的二值化網路結構(作為XNORnet的演進)。有關XNORnet及其優勢可以參考論文:"XNORNet: ImageNet

深度神經網路Deep Neural Network

dZ[l]=dA[l]∗g[l]′(Z[l])dW[l]=1mdZ[l]⋅A[l−1]db[l]=1mnp.sum(dZ[l],axis=1,keepdims=True)dA[l−1]=W[l]T⋅dZ[l]

c#實現圖片例子黑白效果

rec con devel 圖片 round amp bsp 操作 spl C#將圖片2值化示例代碼,原圖及二值化後的圖片如下: 原圖: 二值化後的圖像: 實現代碼:using System; using System.Drawing; namespace BMP2G

【論文閱讀筆記】---神經網路BNN

二值網路是將權值W和隱藏層啟用值二值化為1或者-1。通過二值化操作,使模型的引數佔用更小的儲存空間(記憶體消耗理論上減少為原來的1/32倍,從float32到1bit);同時利用位操作來代替網路中的乘加運算,大大降低了運算時間。由於二值網路只是將網路的引數和啟用值二值化,並沒有改變網路的結構。因此我們主要關注

#Otsu雙閾分割opencv2實現

                                                                                                   

深度學習【6】網路Binarized Neural Networks學習與理解

http://blog.csdn.net/linmingan/article/details/51008830         Binarized Neural Networks: Training Neural Networks with Weights and Ac

一些基本的opencv影象預處理函式直接用法灰度,otsu,腐蝕膨脹,canny

#include <cv.h> #include <cxcore.h> #include <highgui.h>   using namespace std;   using namespace cv;   int main(int a

python 圖片處理處理後為純黑白的圖片

先隨便招一張圖片test.jpg做案例然後對圖片進行處理# 圖片二值化 from PIL import Image img = Image.open('test.jpg') # 模式L”為灰色影象,它

不均勻光照的方法去陰影、去曝光

基於對比背景影象,調整對比度 以下是餘下全文 測試影象是白底黑字 一、演算法思想 1.計算整幅影象的背景影象 2.影象的標準化 3.對比原影象和背景影象,增強和對比度。 二、演算法詳細步驟 1.計算整幅影象的背景影象 (1)設計w*w

精度演算法】A-B答案可負

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> cha

創建叉樹 叉排序樹Binary Sort Tree

sort data scanf urn pre [] print 二叉樹 str #include<stdio.h> #include<stdlib.h> /* 遞歸前中後遍歷 */ typedef struct node { int data;

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks1

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(1)’ id: dl-ai-5-1h1 tags: dl.ai homework categories: AI Deep

DeepLearning.ai筆記:(5-1)-- 迴圈神經網路Recurrent Neural Networks

title: ‘DeepLearning.ai筆記:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)’ id: dl-ai-5-1 tags: dl.ai categories: AI Deep Learning date: 2

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks2

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(2)’ id: dl-ai-5-1h2 tags: dl.ai homework categories: AI Deep

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks3

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(3)’ id: dl-ai-5-1h3 tags: dl.ai homework categories: AI Deep

深度學習--深度信念網路Deep Belief Network

本篇非常簡要地介紹了深度信念網路的基本概念。文章先簡要介紹了深度信念網路(包括其應用例項)。接著分別講述了:(1) 其基本組成結構——受限玻爾茲曼機的的基本情況,以及,(2) 這個基本結構如何組成深度信念網路。 本文僅僅能使讀者瞭解深度信念網路這一概念,內容非常淺顯,甚至有許多不嚴密

學習筆記之——基於pytorch的殘差網路deep residual network

本博文為本人學習pytorch系列之——residual network。 前面的博文( 學習筆記之——基於深度學習的分類網路)也已經介紹過ResNet了。ResNet是2015年的ImageNet競賽的冠軍,由微軟研究院提出,通過引入residual block能夠成功地訓練高達

DeepLearning.ai筆記:(1-4)-- 深層神經網路Deep neural networks

這一週主要講了深層的神經網路搭建。 深層神經網路的符號表示 在深層的神經網路中, LL表示神經網路的層數 L=4L=4 n[l]n[l]表示第ll層的神經網路個數 W[l]:(n[l],nl−1)W[l]:(n[l],nl−1) dW[l

DeepLearning.ai作業:(1-4)-- 深層神經網路Deep neural networks

不要抄作業! 我只是把思路整理了,供個人學習。 不要抄作業! 本週的作業分了兩個部分,第一部分先構建神經網路的基本函式,第二部分才是構建出模型並預測。 Part1 構建的函式有: Initialize the parameters t

RBM受限玻爾茲曼機和深層信念網路Deep Brief Network

 目錄: 一、RBM 二、Deep Brief Network 三、Deep Autoencoder   一、RBM 1、定義【無監督學習】 RBM記住三個要訣:1)兩層結構圖,可視層和隱藏層;【沒輸出層】2)層內無連線,層間全連線;3)二值狀態值,