darknet yolo-53 模型内部探秘

我不想成为标题党,但是刚开始研究深度学习,感觉还是很神秘!

如题,我在把yolov3模型预测过程中的不同层的图片输出后发现一个规律。如下图1.2.3.我预测了三个图分别是dog.jpg 、person.jpg 和一个人群的图片,在最后一层都在这几张图片显示出了明显的与众不同!他们分别是106-172和106-173,还有106-87和106-88 。

222

使用的代码也很简单,在图像预测的函数中加入以下代码,int i=100 可以输出100层以后的中间图片,如果改成int i=0 则输出所有过程中的图片。一次输出50多M,37629张图片,还是挺多的。我认为发现了一个小规律,供大家研究启发。为什么这个模型总在最后一层这四张图片上有所体现?值得我们深入模型内部权重研究其形成过程。

for (int i = 100; i < net.n; ++i) {        
            layer l = net.layers[i];
            printf(" --net------->%d  net.n= %d l.w= %d l.h= %d l.c= %d \n", i, net.n, l.w, l.h, l.c);        
            layer lfront = net.layers[i-1];
            if (l.c*lfront.c>0)
            {
                for (int j = 0; j < l.c; j++)
                {
                    image out = make_empty_image(l.w, l.h, 1);
                    out.data = calloc(l.h*l.w, sizeof(float));
                    int tmpindex = l.w*l.h*j;
                    for (int k = 0; k < l.w*l.h;k++) {
                        out.data[k] = lfront.output[tmpindex + k];
                    }                                        
                    char str[20];
                    sprintf(str, "%d%s%d",i,"_",j);
                    printf("image--%d  im.w= %d im.h= %d savename= %s  \n", j, l.w, l.h, str);                
                    save_image(out, str);
                    free_image(out);

                }
            }        
        }

第一层图片如图4所示

还是挺有趣的,此发现供大家研究使用。欢迎大家QQ交流:329611847

添加一些个人观点:

当前的基于CNN的深度学习最大的进步是将离散的像素点进行叠加分析,进行了空间的叠加组合,进而实现了区块形状的感知,这是了不起的进步。应当注意到整个图像识别仍然是监督分类方法,如果一直这么走下去,真真的成为了人工智能。目前阶段这些技术已经足够了。但是这个人工训练缺乏机器逻辑能力的提升,就陷入了yolo9000的的陷阱,教啥会啥,完全依靠训练。

如果想要进一步发展,必然不能完全依靠监督训练,而是设计一种半监督学习方法,首选教会机器识别一些特征,然后设计逻辑动态学习机制,帮助机器建立相关概念,这样才能得到最大的泛化,归纳认知效果。这些动态学习机制是要人为设计主要的数学模型,具体我个人目前也没有足够的认知把握。

不过可以给你分享几点个人的一些思考。那就是动态在线随机森林分类方法。这个建议你看看相关的文献。简要的是说随机森林方法可以使用较少样本完成分类,而且还可以渐进式学习,即样本式10000个,全学习与每次学习100个学习100次的最终效果基本一致。这种机制允许对一个概念进行分阶段学习,而且越学习准确度越高,符合不断学习认知的规律。

还有一个就是,动态模板记忆法,这一点与LSTM网络概念有点类似,即如何学习关键特征并且有推出机制,认知是一个过程,例如每个事物都有不同阶段,如早上、中午、晚上,这些动态模板需要具有时序记忆的机制。

总体上,是这么一些思路,在深度学习上,思维要创新。不能局限到当前所取得成就中。

猜你喜欢

转载自blog.csdn.net/sun19890716/article/details/84336638