yolo darknet的启示(为什么大家说的残差架构不一样?)
孩子打游戏,知道并喜欢上了Knight
我喜欢看经典电影,近期看了一部叫做Dark Knight(黑暗骑士)
学习神经网络,有人出品了yolo系列,里边出现了一个叫做darknet-53的神经网络架构,非常经典!
我在想,这个发明darknet和yolo的人,是不是也喜欢电影黑暗骑士-蝙蝠侠?有可能噢!
人工智能时代,yolo系列拯救了工业自动化机器视觉!不仅可以识别,还可以检测测量,还速度快!
没事,就看看yolo-v3!突然发现,网上都在讲:yolo用的darknet架构,在使用cbl模块,即con+bn+leakyrelu,特别强调的是:残差相加在leakyrelu之后,即leakyrelu->f(x)+x!
这个家伙!残差一直都是:f(x)+x->relu!怎么可能?
我一直就是这样用的,有些不动脑筋的死板!用cundnn实现的6bn+2残差块,训练cifar10很不错,不过到了极限,一旦增加bn层和残差块,训练就失败!一筹莫展!今天似乎机会来了!为什么我不试一试:leakyrelu->f(x)+x!
我想先去看看发明人的源码yolo-v3,惊奇的是:
看到没有,激活函数leakyrelu在shortcut(残差块)之后!
说明什么,我之前认真参考了yolo,而且遵循了残差反复强调的:f(x)+x->relu
那么真是这样吗?为什么我不去试一试网上说的::leakyrelu->f(x)+x
我知道,我一旦怀疑!我即将突破!
果然!
下一节,讲怎么实验:leakyrelu->f(x)+x
下下节,讲bn层和残差块的继续增加:7bn+3residual(shortcut)
下下下节,用cudnn封装CBL(con+bn+leakyrelu)
我真是越来越喜欢darknet!
对我这个机器视觉狂热分子来说,darknet正在挽救我的机器视觉!