CV 模型的标准化
序数 or 偏移
深度学习第一个坑就是从 0 编号还是从 1 编号.
虽然大多数框架都选择了从 0 开始, 但我还是得说这是反人类的.
从零开始计数一般用在偏移中, 比如内存, 每个字节是几偏移.
但是深度学习就不一样了, 比如标签, 我们通常说是第几个.
这是序数啊, 从来不会有第 0 个这么奇葩的说法.
依次交换0维3维1维2维, 我是无力吐槽了, 你和谁的偏移量0312, 是给人看的吗你这...
推导不能, 反正全给他 +1 就得了.
RGB or BGR
这个问题无关痛痒,
我不知道重排首个卷积核的话怎么写, 理论上也是可以的.
NCHW or NHWC
我是真的不知道 NHWC 的优点在哪, 难道硬件底层更加合适吗?
NCHW 下取第一张图片就是 img[1]
, NHWC 则要写 img[:,:,:,1]
, 何苦啊这是...
左下系 or 左上系
左上系的支持者理由是图片即矩阵, 第一行第一个像素就是 img[:,1,1]
用左下系就要写 img[:,1,-1]
, 多了个负号
哦对了, 某些从零开始计数的垃圾玩意儿压根没法用 -1
表示倒着数.
(所以为什么不规定为矩阵从下开始数...
但是不管怎么说数学老师当初教我就是左下建系, 所以这样更符合习惯.
解决方案
遇到左下系就转换为左上系
施加变换 $y -> 1-y$ 即可, 记得目标检测里 {y_
\min{}} 和 {y_
\max{}} 对调一下.
右手系 or 左手系
如果 2D 用了左上系, 3D 用左手系似乎是天经地义的.
当我们还是习惯朝对我们的平面是 0, 越往里面越远不是, y 轴越大离摄像头就越远, 景深就越深
不管怎么说这也是习惯问题罢了, 不是很重要.
解决方案
遇到左手系就转换为右手系
乘上变换矩阵 $\begin{bmatrix}1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\\\end{bmatrix}$ .