SSD源码分析 —— 整体框架 0. 前言最近忙着搞超声波,SSD的源码分析拖得有点久了。不过鉴于SSD的模型结构比较简单,而且较为复杂的gtbox匹配、损失计算等机制在Faster RCNN业已理解,所以前后也没用多长时间。 首先,还是算法的总体流程图,可以看出比Faster RCNN那是简单太多了。 第一步还是从dataset中加载图像,然后经过图像预处理,再通过以ResNet50为蓝本的feature extracto 2021-03-15 工作技能 神经网络 目标检测 SSD 深度学习 神经网络 卷积神经网络 CNN 目标检测 SSD
Faster RCNN源码分析(一)—— 图像预处理 前言一般数据集中的图像尺寸、通道都是不一致的,因此不管是进行训练还是预测之前,都需要进行尺寸一致化等预处理操作。处理的最终结果是每一个batch中的tensor尺寸一致,但是跨batch不一定一致。 Faster RCNN源码中,将图像预处理操作封装在一个类GeneralizedRCNNTransform中,下面针对这个类进行介绍。 初始化12345678910# 接受4个初始化参数,用于初始化4 2021-03-02 工作技能 神经网络 目标检测 Faster RCNN 深度学习 神经网络 卷积神经网络 CNN 目标检测 Faster RCNN 图形预处理
Faster RCNN源码分析(零)—— 整体框架 0. 前言两段式目标检测的代表作,相当复杂。 基于pytorch的源码,捋一遍Faster-RCNN到底干了啥。 这里先说一下框架,后面有时间再开几篇依次展开说各个子流程的代码实现细节。 1. 从dataset加载图像首先要从把标注好的图像文件以及标注xml文件读取进来。 参考这里自定义的dataset类,可以知道,dataloader每次迭代返回的是,dataset类__getitem__方 2021-03-01 工作技能 神经网络 目标检测 Faster RCNN 深度学习 神经网络 卷积神经网络 CNN 目标检测 Faster RCNN RPN ROI Align ROI Pooling
TensorRT C++ API使用方法 前言把深度学习模型用pytorch等框架搭建、训练后,要把模型保存下来,部署到生产环境中服务于实际业务。 生产环境中运行的深度学习模型有两个特点,一当然是要快,二是只做单帧数据的前向计算(推理)。为了适应这两个特点,引入了TensorRT这个工具。 简单地,可以将它看作一个类似pytorch的深度学习框架。但是这个框架不提供模型训练相关的脚手架,只提供模型构建、前向计算和模型格式转换的工具。并且得 2021-02-10 工作技能 神经网络 TensorRT ONNX inference
pytorch笔记 max() sum()等操作中指定dim的含义1a = [ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ] 对于这个[2, 2, 2]的三维矩阵,三维意味着[]有三层,三个2表示每一层[]内有两个元素 对dim=0求max意味着 将a_{000}与a_{100}比较得出最大值作为a_{00} 将a_{010}与a_{110}比较得出最大值作为a_{10}… 2020-12-22 工作技能 神经网络 pytorch使用 pytorch plt AaptivePool flatten
困难样本与FocalLoss 前言one-stage的目标检测算法,一般都存在正负样本数量不均衡的问题。 回忆一下,正样本指的是,对于一个anchor(记作A),为其寻找最佳GTbox,也就是与其IOU最大的GTbox(记作B)。然后,计算A和B的IOU,如果超过某个阈值,则认为A和B之间的匹配关系为一个正样本(也就是说正负描述的都是一个match),并将B的label赋予A。否则,视作负样本,A的label为背景。而且由于负 2020-12-13 工作技能 神经网络 损失函数 Focal Loss 困难样本
定位误差常用的损失函数 前言在目标检测任务中,为了更好的量化定位损失,各路大神想了很多办法。从最开始的针对xywh的均方误差,到IOU损失,再到后续的GIOU损失、DIOU损失、CIOU损失,越来越复杂。其中均方误差比较简单,不再介绍。重点讲一下IOU系列。 IOU损失这里牵涉到两个概念,“IOU”和“IOU损失”,对于前者,已经很熟悉了,不再赘述。而对于后者,则是简单地令 IOU loss = - \ln(\fr 2020-11-12 工作技能 神经网络 损失函数 IOU GIOU DIOU CIOU
关于交叉熵的易混淆概念 0. 前言交叉熵,二值交叉熵,softmax,sigmoid等概念经常一起出现,这里结合pytorch的具体实现来捋清楚这几个概念。 1. 概念1.1 交叉熵交叉熵用于描述两个概率分布的差异,也就是说处理的都是0-1之间的数值。 H(p,q) = -\sum p(x)\log q(x)在实际应用中,一般用于计算分类损失。并且,为了避免对0取对数,会将GT的one-hot向量作为$p$,预测结果作 2020-10-12 工作技能 神经网络 pytorch 交叉熵 二值交叉熵 损失函数
ResNet 背景简介来自2015年的微软实验室,He Kaiming/Ren Shaoqing/Zhang Xiangyu等,啥啥啥都第一名…不用dropout了,引入BN,提出residual以应对退化问题,支持上千层的网络结构。 网络结构整体结构网络由一种叫做residual的building block串行组建而成,整体结构见下表: 常规的Residual单元如下图所示,常规的Residual有两种 2020-10-08 工作技能 神经网络 经典网络 深度学习 神经网络 卷积神经网络 CNN 经典网络 Residual结构 ResNet
MobileNet v2 背景简介2018年Google团队在v1的基础上提出的改进版。核心思想仍然是DW卷积,但是这次借鉴了ResNet的残差结构,提高了性能。 前置知识Inverted Residual所谓倒残差结构,其实就是在ResNet残差结构的基础上做了一些修改。首先看以下简图: 对于残差结构而言,三个卷积层每一层卷积核的个数一般依次为[64, 64, 256]这样,先对具有256个通道的输入进行降维,然后3 2020-09-20 工作技能 神经网络 经典网络 深度学习 神经网络 卷积神经网络 CNN 经典网络 MobileNet Residual结构 Inverted Residual结构