bbox

行人检测0-09:LFFD-源码无死角解析(4)-预测代码解析

旧时模样 提交于 2019-12-02 14:47:24
以下链接是个人关于LFFD(行人检测)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 行人检测0-00:LFFD-史上最新无死角详细解读:https://blog.csdn.net/weixin_43013761/article/details/102592374 代码注解 在很全面的博客,就已经运行了pedestrian_detection/accuracy_evaluation/predict.py程序,但是没有对他进行解析,现在我们就来分析一下吧(如果注释没有看懂,到末尾看总结提示): # coding: utf-8 import sys import os import numpy import cv2 import sys sys . path . append ( '../' ) # empty data batch class for dynamical properties class DataBatch : pass def NMS ( boxes , overlap_threshold ) : ''' :param boxes: numpy nx5, n is the number of boxes, 0:4->x1, y1, x2, y2,

【Anchor-free 总结1】Anchor-Free Keypoint方法总结以及思路分析

徘徊边缘 提交于 2019-12-02 00:24:32
&Anchor-based的shortcoming 1) 使用anchor时,需要在每个特征尺度上密集平铺,而仅有很少一部分是正样本,即正负样本的比例差别很大;最终有很多计算都花费在无用样本,且一般使用时需要进行预处理,挖掘难负例; 2) 需要预定义的anchor size以及aspect ratio。检测性能会收到这些预定义的参数的影响,如果在每一个位置设定的anchor的数量太多,也会导致计算量成倍增长; 3) 使用axis-align的形式: 由于anchor是针对特征图上的点进行提取的, 并不是所有的像素点上都会提取对应的anchor ,且在每个点上提取的anchor的数量也不尽相同,如果只使用axis-align形式,最终结果可能对于那个bbox中心不在特征图上的点不大友好,最终影响整体的精度; 当然,目前也有针对该问题做出的调整,如可以通过预测中心点偏移,参照RepDet中的Adaptive Convolution方法 ; 使用box来作为一个目标的回归结果,仍然会在其中包含大量的背景信息,尤其是在边角区域,而且对于斜放的细长目标会造成更大的影响。在这个方向上,也存在一些改进方式,如 ExtremNet提出的使用八边形 来描述一个目标,( Segmentation is All You Need ) 论文中也提出将目标的范围通过椭圆精细化。 &Anchor

深度学习笔记(十二)YOLO V3 (Tensorflow)

守給你的承諾、 提交于 2019-12-01 13:49:33
参考: 每月深度1-2:YOLO V3-网络结构输入输出解析-史上最全 [代码剖析] 推荐阅读! 之前看了一遍 YOLO V3 的论文,写的挺有意思的 ,尴尬的是,我这鱼的记忆,看完就忘了 于是只能借助于代码,再看一遍细节了。 源码目录总览 tensorflow-yolov3-master ├── checkpoint //保存模型的目录 ├── convert_weight.py//对权重进行转换,为了模型的预训练 ├── core//核心代码文件夹 │ ├── backbone.py │ ├── common.py │ ├── config.py//配置文件 │ ├── dataset.py//数据处理 │ ├── __init__.py │ ├── __pycache__ │ │ ├── backbone.cpython-36.pyc │ │ ├── common.cpython-36.pyc │ │ ├── config.cpython-36.pyc │ │ ├── dataset.cpython-36.pyc │ │ ├── __init__.cpython-36.pyc │ │ ├── utils.cpython-36.pyc │ │ └── yolov3.cpython-36.pyc │ ├── utils.py │ └── yolov3.py//网络核心结构 ├──

六种常见的数据扩增方式(附代码)

喜夏-厌秋 提交于 2019-12-01 04:27:15
在某些场景下的目标检测中,样本数量较小,导致检测的效果比较差,这时就需要进行数据扩增。本文介绍常用的6类数据扩增方式,包括裁剪、平移、改变亮度、加入噪声、旋转角度以及镜像。 每一部分的参考资料也附在代码的介绍位置,大家可以参考。 裁剪(需要改变bbox): 裁剪后的图片需要包含所有的框,否则会对图像的原始标注造成破坏。 def _crop_img_bboxes(self,img,bboxes): ''' 裁剪后图片要包含所有的框 输入: img:图像array bboxes:该图像包含的所有boundingboxes,一个list,每个元素为[x_min,y_min,x_max,y_max] 要确保是数值 输出: crop_img:裁剪后的图像array crop_bboxes:裁剪后的boundingbox的坐标,list ''' #------------------ 裁剪图像 ------------------ w = img.shape[1] h = img.shape[0] x_min = w x_max = 0 y_min = h y_max = 0 for bbox in bboxes: x_min = min(x_min, bbox[0]) y_min = min(y_min, bbox[1]) x_max = max(x_max, bbox[2]) y_max

论文学习:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline

被刻印的时光 ゝ 提交于 2019-11-30 15:55:03
论文:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline 作者:Zhutian Chen, Yun Wang, Qianwen Wang, Yong Wang, and Huamin Qu 发表: IEEE Transactions on Visualization and Computer Graphics, VIS 2019 作者 Zhutian Chen HKUST,VisLab 兴趣: 信息可视化 增强现实 机器学习 动机 Infographic具有美观且传递信息有效的优点,为了方便进行Infographic设计,已经有了一些自动化的设计工具,但尽管借助这些工具,人们仍然需要自己完成大部分的设计工作; Power Point 和AI中有一些模板可以辅助设计,但是模板风格太单一,缺乏多样性;设计师在网上寻找灵感时找到的大都是图片,如果使用用图片中的风格需要自己进行再设计,过程麻烦且枯燥,这就有了从图片自动生成模板的需求。 时间轴作为Infographic中使用非常广泛的一种,也有上述问题。 相关工作 1. 自动化的可视化设计基于criteria和constraints (1)专家总结的criteria

深度学习中目标检测Object Detection的基础概念及常用方法

安稳与你 提交于 2019-11-30 05:53:55
目录 What is detection? 关键术语 方法 two stage one stage 共同存在问题 多尺度 平移不变性 样本不均衡 各个步骤可能出现的问题 输入: 网络: 输出: What is detection? detection的任务就是classification+localization cs231n 课程截图 从左到右:语义分割semantic segmentation,图片分类classification,目标检测detection,实例分割instance segmentation 关键术语 ROI Region Of Interest 感兴趣区域,通常可以理解成图片中可能是物体的区域。 输入图片可以预先做一些标记找到候选框 proposal bounding box 在localization任务里的概念, 即给出物体在图片中的定位区域 一般表示为 (top, left, bottom, right) or (left, top, right, bottom). (left, top)为bbox左上角的坐标,(right, bottom)为右下角的坐标 IoU Intersection of Union 定义两个bbox的重叠程度 = (A交B) / (A并B) ,用于评价算法结果和人工标注(ground-truth)的差别 方法 two

Faster-RCNN tensorflow 程序细节

我的未来我决定 提交于 2019-11-30 00:24:21
tf-faster-rcnn github: https://github.com/endernewton/tf-faster-rcnn backbone,例如vgg,conv层不改变feature大小,pooling层输出(w/2, h/2),有4个pooling所以featuremap变为原图1/16大小。 检测RPN模块 : 例如任意图片reshape到800*600,输入网络过vgg,conv5_3->rpn_conv/3*3->rpn_relu 得到feature map (1,512,50,38),接下来两个1*1的卷积分别用于每个点9个anchor前背景分类(1,18,50,38),anchor偏移量的预测(1,36,50,38),50 x 38 x 9 = 17100 从原图中扣出来的anchor数。(rpn_bbox_pred(偏移)+rpn_cls_prob_reshape(前背景))->proposal_layer 修正后的proposal,滤掉超出原图的proposal后NMS以及概率排序等操作后获得最终的boundingbox。输出大小为:(N,4),这里的N与NMS以及概率排序阈值有关,得到的就是boundingbox的四个坐标。 生成anchors,利用tx, ty, tw, th对所有的anchors做bbox regression回归

【python练习】在kaggle上的首个公开notebook(由mask生成bbox)

 ̄綄美尐妖づ 提交于 2019-11-29 19:30:36
前言: { 知道要更新但没想好写什么,我就干脆在kaggle上写了一篇公开的notebook[1](我记得原来好像叫kernel),内容很简单,就是根据segmentation标签生成bbox。 } 正文: { 主要内容在[1]。我做这个是因为我搞错了。我本想试试之前我博客[2]提到的HRNet,而恰好mmdetection里也实现了HRNet,且这里还有许多其他高精度的模型也需要bbox。可是我没注意到,mmdetection里的HRNet是针对目标检测任务的,或者说是针对实例分割(Instance Segmentation)的,而我当前的任务是检测缺陷[4],或者说是语义分割(Semantic Segmentation)。 } 结语: { kaggle确实是一个不错的学习平台,至少有许多准备好的数据和其他人的结果。通过这些结果,我能看清自己有几斤几两。 参考资料: { [1] https://www.kaggle.com/applefish/get-bboxes-from-segmentation-labels [2] https://blog.csdn.net/fish_like_apple/article/details/100623183 [3] https://github.com/open-mmlab/mmdetection [4] https://www

Faster RCNN(tensorflow)代码详解

不羁的心 提交于 2019-11-28 22:22:38
本文结合CVPR 2018论文 "Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships" ,详细解析Faster RCNN(tensorflow版本)代码,以及该论文中的一些操作步骤。 Faster RCNN整个的流程就是使用VGG等网络提取全图的feature map以及使用RPN网络预测一些object proposal(物体bbox的形式),使用ROI Pooling操作,提取出每个物体的特征图,然后输入到两层全连接神经网络进行物体类别以及bbox坐标的预测,抽象版的流程图可以看下面两幅图。 为了更清楚的体现代码中的结构,按照代码中的流程绘制了下面这张图:(图太大截图不好看,可使用链接下载。) 下面分析代码是根据一次典型的实验的执行顺序来分析的,这样比较方便理解。首先贴出跑一次Faster RCNN的典型参数配置: 'DEDUP_BOXES': 0.0625, 'EPS': 1e-14, 'EXP_DIR': 'faster_rcnn_end2end', 'GPU_ID': 0, 'IS_MULTISCALE': False, 'MATLAB': 'matlab', 'MODELS_DIR': 'XXX/SIN/models

目标检测算法之YOLOv2损失函数详解

自作多情 提交于 2019-11-28 10:07:46
前言 前面的YOLOv2推文详细讲解了YOLOv2的算法原理,但官方论文没有像YOLOv1那样提供YOLOv2的损失函数,难怪Ng说YOLO是目标检测中最难懂的算法。今天我们尝试结合DarkNet的源码来分析YOLOv2的损失函数。 关键点回顾 直接位置预测 YOLOv2借鉴RPN网络使用Anchor boxes来预测边界框相对于先验框的offsets。边界框的实际中心位置 ( x , y ) (x,y) ( x , y ) 需要利用预测的坐标偏移值 ( t x , t y ) (t_x,t_y) ( t x ​ , t y ​ ) ,先验框的尺度 ( w a , h a ) (w_a,h_a) ( w a ​ , h a ​ ) 以及中心坐标 ( x a , y a ) (x_a,y_a) ( x a ​ , y a ​ ) 来计算,这里的 x a x_a x a ​ 和 y a y_a y a ​ 也即是特征图每个位置的中心点: 上面的公式也是Faster-RCNN中预测边界框的方式。但上面的预测方式是没有约束的,预测的边界框容易向任何方向偏移,例如当 t x = 1 t_x=1 t x ​ = 1 时边界框将向右偏移Anchor的一个宽度大小,导致每个位置预测的边界框可以落在图片的任意位置,这就导致模型训练的不稳定性,在训练的时候要花很长时间才可以得到正确的offsets。以