当前位置: 首页 > news >正文

阅读MatconvNet中Fast Rcnn源码笔记(1)

bbox_function文件下的m代码:

bbox_clip文件:boxes = bbox_clip(boxes, im_size);剪切边检框;

bbox_nms文件:pick = bbox_nms(boxes, overlap);非极大抑制。消除多余的交叉重读边检框,可以参考非极大抑制的原理,便于更好理解;

bbox_draw文件:im = bbox_draw(im,boxes,c,t);画目标框;

bbox_overlap文件:overlaps = bbox_overlap(boxes1,boxes2);记录一组框与另一组每个框的IOU(交并集)的比例大小;

bbox_scale文件:缩放边界框,注意里面的一个计算:

function boxOut = bbox_scale2(boxIn,scale,szOut)

if isempty(boxIn), boxOut = []; return; end

boxOut = scale * (boxIn-1) + 1;

boxOut = [max(1,round(boxOut(:,1))),...
  max(1,round(boxOut(:,2))),...
  min(szOut(1),round(boxOut(:,3))),...
  min(szOut(2),round(boxOut(:,4)))];

这里boxIn-1的作用是,得到边检框宽高,放缩之后再加上1,就得到了放缩之后的边界框坐标。

例如:

(x1, y1, x2, y2)=(1, 1, 2, 2,),若不减一直接放大3倍之后的坐标(3,3, 6, 6);但是先减一,再放缩,之后再加上1的坐标为(1, 1, 3, 3)放缩之后的框的大小一样,但是坐标不一样了。前者是缩放的坐标,而后者是真正缩放的目标框的大小。

bbox_transform文件:targets = bbox_transform(ex_rois, gt_rois);

bbox_transform_inv文件:pred_boxes = bbox_transform_inv(boxes, deltas);

bbox_remove_duplicates文件:bboxeso = bbox_remove_duplicates(bboxes, minSize, maxNum);删除重复边界框以及过于太小的目标框,并且限制目标框的数目。

function bboxeso = bbox_remove_duplicates(bboxes, minSize, maxNum)
% Copyright (C) 2016 Hakan Bilen.
% All rights reserved.
%
% This file is part of the VLFeat library and is made available under
% the terms of the BSD license (see the COPYING file).
bboxeso = cell(size(bboxes));
for i=1:numel(bboxes)
  bbox = bboxes{i};
  % remove small bbox
  isGood = (bbox(:,3)>=bbox(:,1)-1+minSize) & (bbox(:,4)>=bbox(:,2)-1+minSize);
  bbox = bbox(isGood,:);
  % remove duplicate ones
  [dummy, uniqueIdx] = unique(bbox, 'rows', 'first');
  uniqueIdx = sort(uniqueIdx);
  bbox = bbox(uniqueIdx,:);
  % limit number for training
  nB = min(size(bbox,1),maxNum);

  bboxeso{i} = bbox(1:nB,:);
end

相关文章:

  • 深度学习之对抗样本问题
  • 深度学习对抗样本的八个误解与事实
  • 阅读yolo_v1源码(tensorflow)笔记
  • 【Tensorflow1.0+】记录常用函数
  • 【零基础入门学习Python笔记017】GUI的最终选择:Tkinter
  • 用Yolov2模型训练VOC数据集的各文件理解
  • python 中easydict的简单使用
  • Numpy np.array 相关常用操作学习笔记
  • Matconvnet关于simplenn 转dagnn的一些小的总结
  • 海思AI芯片(Hi3519A/3559A)方案学习(一)资料以及术语介绍
  • 海思AI芯片(Hi3519A/3559A)方案学习(二)RuyiStudio安装
  • 海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
  • 海思AI芯片(Hi3519A/3559A)方案学习(四)如何在3519A板子上运行sample code
  • 海思AI芯片(Hi3519A/3559A)方案学习(五)SDK平台文档梳理
  • Atlas 200 DK 系列 -- 快速搭建开发环境
  • 0基础学习移动端适配
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CAP 一致性协议及应用解析
  • ERLANG 网工修炼笔记 ---- UDP
  • java8-模拟hadoop
  • laravel5.5 视图共享数据
  • Linux CTF 逆向入门
  • Linux下的乱码问题
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Puppeteer:浏览器控制器
  • Python 反序列化安全问题(二)
  • scrapy学习之路4(itemloder的使用)
  • Solarized Scheme
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • supervisor 永不挂掉的进程 安装以及使用
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 规范化安全开发 KOA 手脚架
  • 入门到放弃node系列之Hello Word篇
  • 三栏布局总结
  • 试着探索高并发下的系统架构面貌
  • 一些css基础学习笔记
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​ArcGIS Pro 如何批量删除字段
  • ​插件化DPI在商用WIFI中的价值
  • ​渐进式Web应用PWA的未来
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)(1.13) SiK无线电高级配置(五)
  • (8)STL算法之替换
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)hibernate配置管理
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (离散数学)逻辑连接词
  • (六)vue-router+UI组件库
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十一)手动添加用户和文件的特殊权限
  • (一)UDP基本编程步骤
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...