卷积核的参数量和计算量
1. 参数量计算
1.1 普通卷积
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | OxHxW |
卷积核尺寸 | kxkxC(O个kxkxC的卷积) |
权重 | kxkxCxO |
偏置 | O |
BN层 | 2xO |
总的参数量 | kxkxCxO+3xO |
1.2 depth wise 卷积
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | OxHxW |
卷积核尺寸 | kxkx1(C个kxkx1的卷积) |
权重 | kxkxC |
偏置 | C |
BN层 | 2xC |
总的参数量 | kxkxC+3xC |
1.3 point wise卷积
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | OxHxW |
卷积核尺寸 | 1x1xC(O个1x1xC的卷积) |
权重 | 1x1xCxO |
偏置 | O |
BN层 | 2xO |
总的参数量 | 1x1xCxO+3xO |
1.4 深度可分离卷积(depth wise separable卷积)
由两部分组成,第一部分由C个大小为kxkx1的depth wise卷积组成,第二部分由O个1x1xC的point wise卷积组成,因此总的参数量为kxkxC+3xC+CxO+3xO.
2. 卷积计算量
2.1 普通卷积
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | OxHxW |
卷积核尺寸 | kxkxC(O个kxkxC的卷积) |
偏置 | O |
进行一次卷积操作计算量 | kxkxC(乘法)+(kxk-1)xC + C-1(加法)= 2kxkxC-1 |
在特征图上进行完一个卷积核的卷积操作 | (2xkxkxC-1)xHxW |
共输出O个特征图的计算量 | (2xkxkxC-1)xHxWxO |
O个卷积核bias的加法操作 | O |
总计算量 | (2xkxkxC-1)x H xWxO + O |
2.2 深度可分离卷积
深度可分离卷积分为两部分:第一部分是C个kxkx1的depth wise卷积,第二部分是O个1x1xC的point wise卷积。
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | CxHxW |
卷积核尺寸 | kxkx1(C个kxkx1的卷积) |
偏置 | C |
进行一次卷积操作计算量 | kxkx1(乘法)+(kxk-1)x1 (加法)= 2kxk-1 |
在特征图上进行完一个卷积核的卷积操作 | (2xkxk-1)xHxW |
共输出C个特征图的计算量 | (2xkxk-1)xHxWxC |
C个卷积核bias的加法操作 | C |
总计算量 | (2xkxk-1)x H xWxC + C |
输入特征图尺寸 | CxHxW |
---|
输出特征图尺寸 | OxHxW |
卷积核尺寸 | 1x1xC(O个1x1xC的卷积) |
偏置 | O |
进行一次卷积操作计算量 | 1x1xC(乘法)+C-1(加法)= 2C-1 |
在特征图上进行完一个卷积核的卷积操作 | (2C-1)xHxW |
共输出O个特征图的计算量 | (2C-1)xHxWxO |
O个卷积核bias的加法操作 | O |
总计算量 | (2C-1)x H xWxO + O |
综上所述,深度可分离卷积的总计算量为:
(2xkxk-1)x H xWxC + C + (2C-1)x H xWxO + O = HxWx[(2xkxk-1)xC+(2xC-1)xO] +C + O