代码阅读笔记-MDnet


前段时间读完MDnet的论文,又阅读了一下代码,由于调用函数太多,为了方便记忆,随手写了个记录代码结构及功能的笔记:

MDnet--master 源代码目录  

--dataset  (存放数据集的文件夹
--matconvnet  (这个不用说了,是matlab下的CNN框架

--models (存放已训练模型的文件夹


--pretraining (实现模型训练功能模块的文件夹
         -seqList (存放otb或者vot数据集的子序列名称列表)
         -demo_pretraining (训练网络的demo:
            1、调用mdnet_prepare_model,准备CNN网络模型;
            2、调用mdnet_pretrain,完成网络的训练和保存)
         -mdnet_prepare_model (为MDnet准备初始的卷积网络模型:
            1、conv1-3直接采用VGG-M的结构和初始化权重,注意新的网络结构里filters对应原weight{1},
                  biases对应weight{2};pad由原来的格式[0,0,0,0],变换为0。

            2、添加fc4层和相应的relu和dropout层,fc5层和相应的relu和dropout层,fc6层和softmax层,

                  fc4-6随机初始化,fc6构造为K个分支

            注意:fc层的stride为数字1,conv层的stride为数组[1,1],
                       为了保证fc层的更新,还要设置w和B的倍乘速率和decay)
          -mdnet_pretrain (三个参数:seqslist、outFile、roiDir
             首先设置各种参数opts,
             然后通过调用mdnet_setup_data获得所有图像序列的图像列表以及正负样本bb,保存为roidb,
             初始化mdnet,设置fc6的1×1×K×2结构,设置最后一层为softmax_k
             训练mdnet,调用的函数为mdnet_train,过程中嵌套调用了生成minibatch的函数getBatch;
             最后,调用mdnet_finish_train,将fc6还原为1×1×1×2结构,保存网络到layers
              -getBatch(输入为:1、roidb某个子序列所有的图像路径,正样本和负样本bb;
                                             2、img_idx为了组成一个minibatch抽到的8帧图像标号;
                                             3、batch_pos-已设置为32;batch_neg已设置为96;opts代表各个参数结构体
                             中间变量含义:pos_boxes表示正样本的组合:8帧图像,每帧50个正样本,一共400个正样本
                                                      然后从0-400随机抽取32个序号idx,得到长度为32的pos_boxes,
                                                      再用pos_idx来标记其所在帧处于8帧里的第几个。
                                                      同样的方法得到一个minibatch里的96个负样本,然后正负样本拼接起来;
                                                      调用get_batch函数生成minibatch
                             输出为:128个im和对应的labels,数字2代表正,1为负)
         -mdnet_train(输入:net,roidb,getBatch函数
             首先,网络参数初始化设定
             然后,按照每个序列8帧一个batch,一个序列迭代100次来计算,打乱序列的图像次序后组一个800帧的序列,                        保存在frame_list里
             接着,是训练过程:
                       外循环是cycle100,内循环是子序列总数K
                       在内循环里,首先得到每一个batch里乱序8帧的编号,调用getBatch生成图像和label;
                       然后是backprop,将label送入loss层,调用mdnet_simplenn,实现网络的前向反向计算
                       注意:mdnet_simplenn中softmax_k是作者自己定义的层,是为fc6的多域设计的
                       接着是梯度更新
                       最后是打印训练中的信息           
         -get_batch(输入:8张图像的列表images,正负样本bb和对应帧1-8编号组成的数组boxes,varargin
                           输出:128张107×107×3的图像组)

            

--tracking

       -mdnet_run(主代码-实现tracking
                 1、调用mdnet_init执行初始化
                 2、bbox回归训练
                    1.调用gen_samples,生成10000个回归样本
                    2.调用overlap_ratio计算样本与gt的重叠率

                    3.选出重叠率大于0.6的样本,随机从中选择1000个作为正样本
                    4.调用mdnet_features_convX得到正样本经过卷积层处理后的特征图表示
                    5.将第4步的结果进行维度变换并拉伸为一行,输入到tran_bbox_regressor训练回归模型
                 3、提取第一帧图像的正负样本经过三层卷积后的特征
                 4、调用mdnet_finetune_hnm选出hard负样本,并和正样本一起微调net的fc层
                 5、为在线更新做好数据样本准备
                 6、从第二帧开始进入主循环
                    1.在当前帧调用gen-sample选出256个candidate样本,得到卷积后特征;
                    2.送入fc层,得到fc6二进制输出,正得分最高的五个取平均如果大于0,则为最佳结果,
                      否则,扩大搜索范围
                    3.bounding box回归调整最后结果
                    4.做下一帧的数据样本准备,保存正负样本的特征
                     )

       -mdnet_finetune_hnm(用hard minibatch来训练CNN:
                 输入:要微调的net部分(
fc层 ),正样本特征,负样本特征,其他参数
                 注意hard体现在负样本的选择上,从1024个负样本选出得分最高的96个
                 输出:微调后的net,以及所有选中的正负样本序号
       -mdnet_features_convX(提取输入图像样本bbox的卷积特征:
                  输入:卷积层、图像、该图像样本box、参数opts
                  调用mdnet_extract_regions得到样本图像,然后将这些样本图像送入网络vl_simplenn
                  输出:计算得到其经过卷积层处理后的特征图)
       -mdnet_extract_regions(从输入图像提取bounding box regions并调用im_crop去均值并resize到107×107:
                  输入:图像、该图像样本bbox、参数opts
                  输出:resize后的各样本图像)

       -mdnet_init(初始化tracker:

                  输入:图像序列image、已训练好的网络net

                  几乎所有参数的设置都在这里,返回卷积层net_conv,全连接层net_fc,学习和跟踪过程中各  
                  参数的结构体opts)
       -gen_samples(根据第一个输入参数决定采样方式,返回采样得到的矩阵box
                   gaussian,uniform,uniform_aspect,whole四种类型,针对采样的不同需求,如样本正/负)
--utils(一些用来支撑算法实现的函数)

       -parseImage(得到图像列表imgList)
       -genConfig(得到图像信息conf:
                  conf.dataset:数据集(是otb/vot)
                  conf.seqName:序列名称('divng'/'Divid')
                  conf.imgDir:图像所在目录
                  conf.imgList:图像列表(../../0001.jpg)
                  conf.gt:ground truth列表(double类型数组))
       -overlap_ratio(计算图像块的重叠率overlap)
       -im_crop(-----这是RCNN里的函数------
                 对输入图像按照图像样本box crop,减去均值(默认128),然后按照比例resize到统一大小107
                 因边界条件不足比例的补0
                 输入中有参数padding目前只看到其会影响bbox的尺度,即按照padding扩大区域后再处理)
       -train_bbox_regressor(-----这是rcnn里的函数----
                 输入:每一个3×3的特征图都拉伸为一行,512个拼接成一行X;采样的bbox;groundtruth
                 输出:一个结构体包含训练好的model和参数

--setup_mdnet(将同级目录都加入到可执行目录里,其实这个才是第一个需要执行的文件再见)




MATLAB源代码MATLAB源码大集合220MB上千个源码文件: 2013全国大学生数学建模B题matlab代码.rar 802.11a OFDM MATLAB仿真代码!(推荐).rar MATLAB DCT水印源程序代码.rar MATLAB GUI 实例.rar matlab GUI实例.rar MATLAB GUI实现动态画图曲线的源程序代码.rar matlab.rar matlab7.0从入门到精通-光盘程序.rar Matlab_车牌识别.zip MATLAB中colorbar的设置 源程序代码.rar matlab中文字符的识别代码.rar MATLAB中的基本语法和语句示例代码.rar MATLAB使用欧拉Euler法求解微分方程组 源程序代码.rar MATLAB光通过三稜镜色散动画.rar Matlab十大算法源代码.rar Matlab图像处理与界面编程宝典源码.rar matlab图像处理代码.rar MATLAB图像处理实现直线识别(拟合角平分线).rar MATLAB图像处理实现螺纹识别 源程序代码.rar MATLAB图像配准程序.rar MATLAB在数学建模中的应用(上下 源程序).rar MATLAB夜间车牌识别程序.rar MATLAB实现不同插值方法的GUI界面设计 源程序代码.rar MATLAB实现偏微分方程的差分计算 源程序代码.rar MATLAB实现图像去噪 滤波 锐化 边缘检测.rar matlab实现图像拼接的代码.rar MATLAB实现学生成绩查询系统 源代码程序(1).rar MATLAB实现学生成绩查询系统 源代码程序.rar MATLAB实现灰度预测模型的源代码.rar MATLAB实现线性拟合和相关系数 源程序代码.rar matlab实现视频中动态目标跟踪.rar matlab实用程序300例.rar MATLAB寻找素数的源程序代码.rar MATLAB小波分析—张德丰(代码).rar MATLAB建模 人口增长模型 源程序代码.rar MATLAB文字连通域源程序代码.rar MATLAB智能算法30个案例分析 源代码.7z MATLAB求解非线性方程组 fsolve源程序代码.rar MATLAB生成Gif图片程序源代码.rar MATLAB绘制 维维安尼Viviani曲线 源代码程序.rar MATLAB计算粒子速度分布 源程序代码.rar MATLAB设计的简单滤波器程序源代码.rar Matlab语音信号滤波程序.rar matlab通信工程仿真源码(张德丰等编著).zip Matlab金融程序汇总.rar MATLAB霍夫曼Huffman编码译码GUI界面设计 源程序代码.rar mean+shift+tracking.rar MIMO-OFDM(simulinkANDmatlab).rar Motion_Detection.rar music_spectrum.rar OpenSURF_version1c.zip targettrackingusingkalman.rar VC++图像处理与识别实用案例精选.rar zhuantai.rar zxymath_matlab_program.doc 《MATLAB 7.0编程基础基础》源程序.rar 《MATLAB 神经网络43个案例分析》源代码&数据.rar 《MATLAB程序设计教程》源代码-2660.rar 《图像分割中常用的水平集方法的matlab源代码》.zip 【MATLAB GUI设计学习手记】源代码.rar 国外的车牌识别程序.rar 图像分割算法的Matlab源程序matlab.zip 图像压缩.rar 图像处理.rar 图像处理源程序.rar 图像复原matlab程序.rar 图像形态学处理.rar 图像融合+源代码+matlab.rar 图像融合程序代码.rar 图像识别.rar 图像配准算法.rar 图论算法及其MATLAB实现(全书+源代码).zip 基于Matlab的多功能通信信号源仿真.rar 基于仿射变换的数字图象置乱技术 MATLAB源程序代码.rar 完整的QPSK-MSK-QAM-OFDM调制解调m程序.rar 实验心得总结.rar 拉格朗日插值 MATLAB源程序代码.rar 指纹识别的matlab源码.rar 指纹识别的matlab源码.zip 掌握和精通matlab之gui设计.rar 数字信号处理. 理论、算法与实现(胡广书)的MATLAB程序.rar 文字图像识别.rar 牛顿Newton插值 MATLAB源程序代码.rar 现代通信系统(MATLAB版) 源码.zip 用MATLAB对两幅图片进行图像匹配.rar 电滤波效果查看器GUI设计--浙江
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值