双目立体匹配算法mobilestereonet

通过视觉测量深度的方法目前分为如下几种,一种是双目立体匹配,该方法的好处是有一个明确的物理模型,存在视差的概念,深度信息是根据时差转换得到,另一种是单目运动,该方法也可以看成一种特殊的双目模型或者多目模型,只不过它是时间上的多目,还有一种方法是完全的单目深度估计,直接由网络端到端给出深度,单目网络在可解释性和可移植性上不如双目和单目运动,但是其效果没有比双目差太多。

随着近年来车载系统视觉方案不断完善,立体视觉问题不断收敛,学界出现了一批轻量级网络,效果还不差,这篇博客主要介绍一个轻量级双目立体匹配网络mobilestereonet,后文简称MSN。博主理解MSN主要贡献还是在与对网络模型的压缩,骨干和后面的特征提取大量使用深度可分离卷积,而论文中提及的一些网络结构,经过博主实验下来,这些并不重要(比如3d卷积用分组卷积替代,网络性能并没有明显降低),直接感受是,参数确实更少,计算也更少。

阅读更多双目立体匹配算法mobilestereonet

Pytorch模型蒸馏Distillation

网络模型在部署时会通过剪枝蒸馏等方式加快推理速度,模型蒸馏大概可以分为通道蒸馏、特征蒸馏和目标蒸馏。这里需要特别强调的是,蒸馏的student网络学习的是teacher的泛化能力,而不是过拟合训练数据。这篇博客会以pytorch代码为基础,介绍常用的模型蒸馏方法。

阅读更多Pytorch模型蒸馏Distillation

UnrealCV部署使用指南

在深度学习中,数据仿真一直是重要的topic,Unreal(虚幻引擎)是Epic主导的渲染引擎,常被用于游戏、场景设计、渲染计算,也可以被用于深度学习中的数据仿真,其中有一些比较有名的基于Unreal开发的数据仿真平台,比如CARLA(http://carla.org/)、AirSim等优秀的仿真平台被用于自动驾驶、机器人自动控制等。这篇博客也是介绍一个这样的项目UnrealCV,简单介绍下unrealcv的部署和使用。实际上UnrealCV没有CARLA和AirSim强大(主要是没有运动模型和碰撞检测),所以简单介绍仅供参考。

阅读更多UnrealCV部署使用指南

Pytorch使用2d卷积来实现3d卷积

我们在深度学习模型转换和推理过程中常常会遇到算子不被工具链支持的情况,这时我们可以通过其它算子来等价实现我们想要的算子,比如3d卷积不被工具链支持,我们可以将其拆分成2d卷积,拆分之后我们需要进行权重字典的拆分。这篇博客贴一下pytorch的实现。

阅读更多Pytorch使用2d卷积来实现3d卷积

神经网络训练量化(QAT)基本概念

QAT(Quantization Aware Training)量化感知训练是神经网络优化模型容量的重要方法,关系到模型精度和性能。pytorch对模型量化支持有三种方式:模型训练完毕后的动态量化、模型训练完毕后的静态量化、模型训练中开启量化QAT。这篇博客主要基于pytorh介绍QAT的基本概念。

阅读更多神经网络训练量化(QAT)基本概念

CNN直接处理YUV图像

在ISP pipe中,最后输出的一般都是YUV图像,YUV420的数据量是RGB数据量的两倍,我们在送入CNN处理的时候处理RGB图像居多,如果CNN也可以直接输入YUV图像,那么前级需要的带宽就会减为输入RGB图的一半。

YUVMultiNet提供了一种实用的结构来处理YUV图像。这篇博客只会介绍处理YUV的这种结构,如果对MultiNet感兴趣可以移步原文:https://arxiv.org/pdf/1904.05673.pdf

阅读更多CNN直接处理YUV图像

论文速览:Optical Flow Estimation from a Single Motion-blurred Image

AAAI 2021接收论文,使用单帧模糊图像估计光流。论文地址:https://arxiv.org/pdf/2103.02996v1.pdf

论文主要有三个贡献:一是首次实现通过单帧运动模糊图像估计光流和运动,二是从视频序列中生成运动模糊图像和groundtruth来训练网络,三是将结果用于运动模糊去除和运动目标分割。

阅读更多论文速览:Optical Flow Estimation from a Single Motion-blurred Image

从RNN到Seq2Seq

循环神经网络RNN结构被广泛应用与NPL领域,在机器翻译、语音识别、文字识别等方向大放异彩。后来RNN产生了多种变种,其中Seq2Seq结构和Attention机制被证明在语义理解方面有很大的增益。博主也很久没有碰过这块内容了,简单的摘抄和拼凑,权当复习笔记了 0.0

阅读更多从RNN到Seq2Seq

YOLO_V3从训练到部署

darknet是一个C语言实现的深度学习框架,几乎不依赖任何库,安装编译都很方便,训练好的模型可以直接在opencv上部署,堪称业界良心。这篇博客主要包含目标检测数据标注和预处理、yolo_v3代码编译、模型训练、在opencv上部署,都是简要的笔记。

阅读更多YOLO_V3从训练到部署

目标检测算法梳理YOLO、SSD、CornerNet

大概两三年前,博主有发过一篇综述:深度学习综述(二)深度学习用于目标检测 ,那时候主要是Fast-RCNN系列到yolo和ssd系列,之后很久不务正业没有跟进了。最近又开始跟进下,摘抄些笔记,没啥有深度的东西。

梳理下目标检测算法,大致经历了如下发展: 传统机器学习方法(slide window+feature extraction) -> Region Proposal + CNN -> Anchor Based CNN -> Anchor Free CNN。本文简单介绍Anchor Base方法中最著名的YOLO和SSD,Anchor Free方法中的CornerNet。

阅读更多目标检测算法梳理YOLO、SSD、CornerNet

图神经网络GNN的简单理解

2019年的时针开始转动,在CNN、RNN、LSTM、GAN、GNN、CAP的潮起潮落中,带来了这篇博客。放上一篇参考引用。 其实个人认为理解GNN的核心问题就是理解图怎么做傅里叶变换。CNN的核心操作时卷积,GNN也是。CNN计算二维矩阵的卷积,GNN计算图的卷积。那么我们定义好图的傅里叶变换和图的卷积就可以了,其媒介就是图的拉普拉斯矩阵。

好了,这篇博客将简要介绍图神经网络的原理,但是不会设计太多数学细节(因为博主数学很烂啦)。通过理解图神经网络的卷积操作,来理解其流程,再会配合代码来做简单解释。

阅读更多图神经网络GNN的简单理解

MTCNN进行人脸特征点检测和特征点提取

级联CNN提出与2015年,在目标检测领域有着很成功的应用。好久好久好久没看过目标检测了,今天被问到这个,临时翻论文到源码,发现还是很容易理解的。只是好久好久好久没玩Caffe,发现Caffe现在丰富了太多。这篇博客介绍的MTCNN人脸检测,就是基于Caffe平台的,与级联CNN有关,清楚所有技术细节之后,决定写一篇博客记录一下。

阅读更多MTCNN进行人脸特征点检测和特征点提取

图像跟踪(十)C-COT算法:连续空间域的卷积操作

C-COT算法是DCF(KCF)算法的又一重要演进算法,该算法在VOT-16上取得了不错的成绩。C-COT使用深度神经网络VGG-net提取特征,通过立方插值,将不同分辨率的特征图插值到连续空间域,再应用Hessian矩阵可以求得亚像素精度的目标位置(就和SURF、SIFT里面获取亚像素精度特征点的思想类似)。确定插值方程之后,还解决了在连续空间域进行训练的问题。C-COT的代码结合了deepSRDCF、SRDCFdeno的样本进化,和C-COT进行插值等算法。这里面博主也有许多地方没有理解,毕竟Martin的数学功底大家都明白,这里就当时写一下自己的理解了。文章代码

阅读更多图像跟踪(十)C-COT算法:连续空间域的卷积操作

图像跟踪(九)FCNT语义跟踪

        刚有一个idea,用语义分割来做图像跟踪,搜了一下发现已经有人做过了,细细的看了下Paper,和自己相当还不一样。FCN是深度学习语义分割的鼻祖,而这片Paper的名字叫做FCNT,看了之后发现我误会了,此FCN非彼FCN,由于是比较早的算法了,性能和MEEM处于同一层次,不过考虑到这是深度学习方法用于跟踪的重要实践,还是做个笔记好了。

        博主认为图像跟踪过程的本质就是语义的跟踪(我是这么理解的),所以,使用语义分割来完成图像跟踪是自然而然想到的。事实上深度学习用于图像跟踪,也就是利用了其深层特征中的语义信息。这篇博客就主要介绍这篇文献:Visual Tracking with Fully Convolutional Networks。

阅读更多图像跟踪(九)FCNT语义跟踪