YoloV4模型解析及TensorRT加速 一. Yolo演化史Faster RCNN诞生以后,目标检测准确度得到保证,但是two-stage的方式存在天然的效率缺陷,SSD和Yolo填补了这一空白,Yolo一共经历了4个版本。模型 数据增强/训练 Backbone 网络特征层 性能对比 备注 Yolo v1 Lenet -maxPooling 每个点支持2个box ...
Mask Scoring RCNN训练自己的数据 一. 代码准备 基于pytorch。 mask scoring rcnn 代码参考:【github】 mask rcnn benchmark 【github】二. 环境安装1. 基于conda创建pytorch环境:conda create -npytorch python=3.7.4conda install ipythonconda inst...
Anchor Free检测算法之FCOS 一.提出背景2019 是 Anchor Free 大行其道的一年,从CornerNet 到 ExtremeNet,从FSAF到FCOS,层出不穷。论文:FCOS: Fully Convolutional One-Stage Object Detection【paper】【github】二.算法框架FCOS框架比较简单,架构图参考:基础backbone是一个3层的卷积网络(对...
CVPR2019-实例分割Mask Scoring R-CNN 今年的Oral,在coco数据集表现超过了Mask RCNN,来自地平线的华科实习生。论文:Mask Scoring R-CNN【paper】【github】1. 提出背景 Mask RCNN 提出以来,一直是作为经典霸屏,但这里面一直存在一个严重的问题,那就是其score机制: 由于沿用了Faster RCNN 的 class和box,对应class是类别sco...
CVPR2019-目标检测分割技术进展 CVPR 2019 没有出现像Faster RCNN,YOLO这种开创性的工作,基于现有方案和框架的改进为主,技术进步着实有些缓慢,或许也代表方案逐步趋于成熟。 本文重点介绍如下几个改进方法:GA-RPN GIOU FSAF Mask Score RCNN1. GA-RPN GA-RPN由港中文、商汤和亚马逊联合提出,COCO Challeng...
Tensorflow object detection API训练自己的数据 一. 安装 Tensorflow object detection api是tensorflow官方出品的检测工具包,集成了像ssd、faster rcnn等检测算法,mobilenet、inception、resnet等backbone和fpn、ppn等方法,各模块之间能够通过组合的方式来work。 Github下载地址:https://github.com/tensorfl...
OCR文字识别(2) 一. 文字识别 文字识别是指在确定检测框之后,识别出对应的文字,文字识别的方法有很多,包括:1)基于分割后单个字符的分类;2)基于序列的CNN方法,包括 基于STN矫正,CTC loss,Attention机制等策略;3)基于one step的检测-识别方法,比如fots、Radical Analysis Network;二. Attention Model ...
OCR文字识别(1) 一. 研究背景 文字识别是CV领域应用最广,最接地气的方向之一,从证件识别到智慧医疗,从拍照识别到无人驾驶,从车牌识别到物流分拣,几乎涵盖了AI的所有场景。 通常文字识别分成两步,文本位置检测 + 识别。 > 论文参考: 【场景文本位置感知与识别】 > 常用数据集:数据集名称 内容说明 下载 中...
基础网络架构探究之DiracNets CNN研究者总是面临一个共同的话题:如何提升神经网络的表达能力?分两个方向去探讨:1)拉长增加网络层数是最直观的一种方法,但这种方法所面临的是 梯度消失问题,网络越深,梯度的回传越困难。基于此,MSRA提出了ResNet,通过skipconnection的方式,通过残差思想很好的解决了这个问题。可以参考论文:Deep Residual Learning forImage Recognition这一...
Facebook开源检测工具包 Detectron (by Caffe2) 一. Detectron 特征 大名鼎鼎的 FAIR 开发的软件包,可以从【github】了解一下。 个人感觉比较有用的是 基于 ResNet 基础框架的 Faster RCNN和Mask RCNN。 Detectron 基于 Caffe2(貌似被诟病的不轻),就目前阶段来看,caffe2 还有待于完善(pytorch也是一个意思),其工程化程度远不如 T...
TensorRT深度学习推理框架介绍 一. 产生背景 深度学习的发展带动了一批深度学习框架,caffe、tensorflow、pytorch等,对于计算量庞大的CNN,效率一直是大家所关注的,接触过深度网络压缩的同学应该知道网络压缩最关键的两个思路,剪枝和量化。 TensorRT就是量化,将FP32位权值数据优化为 FP16 或者 INT8,而推理精度不发生明显的降低。 关于TensorRT首先要...
人群密度估计-Crowd Density 一. 应用背景 在安防大背景下,对敏感区域人流量的管控是一个重要的课题,防止人群骚乱、踩踏现象的发生,对非预期的人员汇聚进行预警等等,最常用的方法是检测到每个目标,然后借助 Perspective 矩阵完成到实际位置的映射,当然,在目标很难检测的情况下(密度极大、遮挡严重),基于回归的方法就派上了用场。 本节主要讲基于深度学习的回归方法来实现人群密度检测。二. 人群密度之 Cr
语义分割网络之PSPnet 一.提出背景 基于FCN全卷积网络的分割面临诸多问题,这篇文章从多尺度入手,提出了金字塔模型来提取多尺度的信息,达到了 State-of-the-art 的结果 论文:PSPnet:Pyramid Scene Parsing Network 【点击下载】 Caffe代码:【Github】二.算法框架 算法细节比较多,这里我主要强调以下几个关键点:
深度网络模型压缩 - CNN Compression 一. 技术背景 一般情况下,CNN网络的深度和效果成正比,网络参数越多,准确度越高,基于这个假设,ResNet50(152)极大提升了CNN的效果,但inference的计算量也变得很大。这种网络很难跑在前端移动设备上,除非网络变得简洁高效。 基于这个假设,有很多处理方法,设计层数更少的网络、更少的卷积和、每个参数占更少的字节,等等。 前面讲过的 PVANet、
视频人员行为识别(Action Recognition) 一. 提出背景 目标:给定一段视频,通过分析,得到里面人员的动作行为。 问题:可以定义为一个分类问题,通过对预定的样本进行分类训练,解决一个输入视频的多分类问题。 这里提出的问题是简单的图片(视频)分类问题,该问题的前提条件是:场景目标为单人,并且占据图片比较大的比例,如下图所示: 还有一类问题是基于行人检测,去估计行人的姿态和动作,
Mark 一些有意思的深度学习方向 1. VQA Visual Question Answering,给出一张图片,就该图片提出任何问题?自动get到你所期望的答案。这属于Visual Reasoning 的范畴,学者们不满足于传统的图像识别、分割、Caption等工作,尝试去挖掘更高级的机器推理能力。来看解决思路,CNN、LSTM(RNN)、Attention Model、BOW,都是图像、文本、NLP领域的通用手法,
NoScope:极速视频目标检测 一.提出背景 在基于CNN的方法提升到一个很高的准确度之后,效率又成为人们所关注的话题,目前兼备准确度和效率的方法包括 SSD、YOLO v2,其检测效率通常能到达 30-100FPS,而这里面的代价就是上万块的显卡,这个代价是相当高的。当下视频获取设备(CCTV摄像头)成本通常是几百块,而采用上述分类算法,其成本可能是几千,这就是视频获取和视频分析之间的巨大鸿沟。 基于此
DenseNet:更接近于真实神经网络的跨层连接 一. 提出背景 论文:Densely Connected Convolutional Networks 【点击下载】 Caffe代码:【Github】 受 Highway、ResNet 等算法思路的启发,提出一种跨层的连接网络,思路非常简单,直接上图: 二. 算法思路 作者这个提法比较大胆,每个层的 input 包括之前所有层的信息,通
对抗网络之目标检测应用:A-Fast-RCNN 对抗网络之目标检测应用:A-Fast-RCNN 论文:A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection 【点击下载】 Caffe代码:【Github】一. 深度学习正确的打开方式 深度学习的根基在于样本,大量的样本决定了深度网络的精确度和收敛性,针对样本的挖掘是深度学
轻量级网络 - PVANet & SuffleNet 一. PVANet 论文:PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection 【点击下载】 Caffe代码:【Github】 设计了一种轻量级的网络,取名叫 PVANet,特点是 Channel少、Layer多,在 VOC2007 和 VOC2012 精确
特征金字塔网络 FPN 一. 提出背景 论文:Feature Pyramid Networks for Object Detection 【点击下载】 在传统的图像处理方法中,金字塔是比较常用的一种手段,像 SIFT 基于金字塔做了多层的特征采集,对于深度网络来讲,其原生的卷积网络特征决定了天然的金字塔结构。深度网络在目标检测领域的应用 比如早期的 Fast RCNN,Faster RCNN 都
Faster R-CNN改进篇(二): RFCN ● RON @改进1:RFCN 论文:R-FCN: Object Detection via Region-based Fully Convolutional Networks 【点击下载】 MXNet代码:【Github】一. 背景介绍 RCNN 在目标检测上取得了很大的成功,比如 SPPnet、Fast R-CNN、Faster R-CNN 等,这些方法的典型特征
基于视频的目标检测 一. 提出背景 目标检测在图像处理领域有着非常大的占比,过去两年,深度学习在Detection的持续发力,为这个领域带来了变革式的发展:一方面,从 RCNN 到 Fast RCNN,再到 Faster RCNN,不断刷新 mAP;另一方面,SSD、YOLO 则是将性能提高到一个非常高的帧率。 对于视频来讲,相邻帧目标之间存在 明显的上下文关系,这种关系在技术上的表现就是 T
深度学习的研究方向和发展趋势 一. 人工智能应用领域1. 计算机视觉 生物特征识别:人脸识别、步态识别、行人ReID、瞳孔识别; 图像处理:分类标注、以图搜图、场景分割、车辆车牌、OCR、AR; 视频分析:安防监控、智慧城市;2. 自然语言处理 语音识别(Siri、Cortana、讯飞)、文本数据挖掘、文本翻译;3. 数据挖掘 消费习惯、天气数据、推荐系统、知识库(专家系统);4. 游戏 角
Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN 一. 源起于Faster 深度学习于目标检测的里程碑成果,来自于这篇论文: Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal networks.” Advances in Neural Information Processing Syst
目标检测 - Tensorflow Object Detection API 一. 找到最好的工具 “工欲善其事,必先利其器”,如果你想找一个深度学习框架来解决深度学习问题,TensorFlow 就是你的不二之选,究其原因,也不必过多解释,看过其优雅的代码架构和工程化实现之后,相信这个问题不会有人再提,这绝非 Caffe an so on 所能比拟的。 回到题头 - 目标检测,相信你一定看过这篇 Paper: Speed/accuracy trade
迁移学习:经典算法解析 一. 了解迁移学习 迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。 > The ability of a system to recognize and apply knowledge and skills learned in previous tasks to novel tasks。
深度学习进阶之路 - 从迁移学习到强化学习 一. 深度学习及其适用范围 大数据造就了深度学习,通过大量的数据训练,我们能够轻易的发现数据的规律,从而实现基于监督学习的数据预测。 没错,这里要强调的是基于监督学习的,也是迄今为止我在讲完深度学习基础所给出的知识范围。 基于卷积神经网络的深度学习(包括CNN、RNN),主要解决的领域是 图像、文本、语音,问题聚焦在 分类
目标跟踪之ECO:Efficient Convolution Operators for Tracking 一. 相关滤波算法总结 作者首先分析了影响 相关滤波算法 效率的几个原因:1)Model Size (模型大小) 包括两个方面: - 模型层数,对应多分辨率 Sample,比如多层 CNN - 特征维度,对应庞大的 HOG or CNN特征图 这里的效率影响是显而易见的,层数或特征越多,表现力越丰富,计算量也
目标跟踪之相关滤波:CF及后续改进篇 一. 何为相关滤波? Correlation Filter 最早应用于信号处理,用来描述两个信号之间的相关性,或者说相似性(有点像早期的概率密度),先来看定义: 对于两个数据 f 和 g,则两个信号的相关性(correlation)为: 其中 f∗ 表示 f 的 复共轭,这是和卷积的区别。
目标跟踪之GOTURN:Learning to Track at 100 FPS with Deep Regression Networks 一. 简介 选择这篇文章的原因在于能实现 100帧的效果,对于跟踪来讲,大多数应用场景需要实时跟踪,应该说仅仅实时跟踪还不够,还需要计算资源来做 视频解码、检测、比对 等多个工作。 这篇文章 2016年来自 Stanford 大学的 David Held,通过 CNN直接回归的方式得到目标位置。 论文下载:Learning to Track
深度学习之目标跟踪 一. 跟踪进展(Advances in Visual Tracking) 作者在前面的机器学习文章中也讲到了 Tracking,感兴趣的童鞋可以 Review一下:机器学习实践系列之5 - 目标跟踪 前面只是基于传统方法的跟踪,这一篇我们 Focus 在深度学习上。 关注跟踪算法的进展,只需要 Follow VOT Challenge 就可以了,Vi
Mask-RCNN技术解析 一. Mask-RCNN 介绍 上篇文章介绍了 FCN,这篇文章引入个新的概念 Mask-RCNN,看着比较好理解哈,就是在 RCNN 的基础上添加 Mask。 Mask-RCNN 来自于年轻有为的 Kaiming 大神,通过在 Faster-RCNN 的基础上添加一个分支网络,在实现目标检测的同时,把目标像素分割出来。 论文下载:Mask R-CN
图像分割与FCN 一. 图像语义分割 传统的图像分割方法主要包括以下几种:1)基于边缘检测2)基于阈值分割 比如直方图,颜色,灰度等3)水平集方法 这里我们要说的是语义分割,什么是语义分割呢?先来看张图: 将目标按照其分类进行像素级的区分,比如区分上图的 摩托车 和 骑手,这就是语义分割,语义分割赋予了场景理
ResNeXt网络进化 一. ResNeXt 的 Block 改进 MSRA 的 KaiMing 转战Facebook的又一力作,大牛的神来之笔:论文下载:Aggregated Residual Transformations for Deep Neural Networks代码地址:【Github】 ResNet、Inception 已经成为目前网络的前进方向,堆叠的Bl
ResNet残差网络 前面我们对常用的经典网络进行了介绍,可以查看前面文章:浅入浅出TensorFlow 6 - 实现经典网络 随着网络越来越深,大家发现,仅仅靠 BN、ReLU、DropOut 等 Trick无法解决收敛问题,相反,网络的加深带来参数的增加。 基于之前的实践经验,我们知道:网络并不是越深越好,一方面过多的参数容易导致过拟合(当然样本足够多可以一定程度上解决这个问题);另
基于深度学习的Person Re-ID(度量学习) 度量学习 是指 距离度量学习,Distance Metric Learning,简称为 DML,做过人脸识别的童鞋想必对这个概念不陌生,度量学习是Eric Xing在NIPS 2002提出。 这并不是个新词,说的直白一点,metric learning 是通过特征变换得到特征子空间,通过使用度量学习,让类似的目标距离更近(PULL),不同的目标距离更远(push),也就是说,度量学
基于深度学习的Person Re-ID(特征提取) 一. CNN特征提取 通过上一篇文章的学习,我们已经知道,我们训练的目的在于寻找一种特征映射方法,使得映射后的特征 “类内距离最小,类间距离最大”,这种特征映射 可以看作是 空间投影,选择一组基,得到基于这组基的特征变换,与 PCA 有点像。 这一篇我们讲的就是基于 CNN的特征提取,特征提取过程也就是训练过程,训练结果就是 CNN 的参数。 以 T
基于深度学习的Person Re-ID(综述) 一. 问题的提出 Person Re-ID 全称是 Person Re-Identification,又称为 行人重检测 or 行人再识别,直观上可以通过两种思路进行比对,一种是 通过 静态图像(still-image)进行特征比对,另一种是通过视频的时序特征(temporal)进行 Video Re-Id。 不管是采用 图像特征比对的方法 还是 结合时序特征比
浅入浅出TensorFlow 9 - 代码框架解析 一. TensorFlow 源码 截止到目前为止,TensorFlow 在 Github 的 Contributors 已经接近900人,Fork 30000次。 学习这么庞大的开源项目,首先必须要搞清楚其代码组织形式,我们先来看目录结构: Project 目录分为4个:1)tensorflow 核心代码目录,图中
浅入浅出TensorFlow 8 - 行人分割 一. 环境准备 本文介绍如何通过 Mask-RCNN 来实现行人检测,假设你已经对 SSD、YOLO、Faster RCNN 等框架有所了解。1. 准备 TensorFlow 环境 Tensorflow (>= 1.0.0) Numpy2. Gtihub 代码 代码下载:【Github】3. 下载CoCo数据 下载地址
浅入浅出TensorFlow 7 - 行人检测之Faster-RCNN 一. 环境准备 本文通过 TensorFlow 实现基于 Faster-RCNN 的行人检测,网络模型基于 VGG16 or ResNet。1. 准备 TensorFlow 环境 Tensorflow (>= 1.0.0) 安装对应 python 库: sudo apt-get install cython python-opencv s
浅入浅出TensorFlow 6 - 实现经典网络 一. 经典网络介绍 首先介绍目前比较主流的几种经典网络,AlexNet[2012]、VGG16[2014]、GoogleNet[2014]、ResNet[2015]。 这几种网络都是在 ILSVRC 比赛中脱颖而出的,越往后网络越复杂, ResNet 为152层结构,测试错误率为 3.57%。 二. AlexNet
浅入浅出TensorFlow 5 - 可视化工具TensorBoard 一. TensorBoard 介绍 TensorFlow 可视化可以借助 Python 的 matplotlib 进行,也可以使用 TensorFlow 自带的 TensorBoard,推荐大家使用 TensorBoard 进行可视化,这样可以不依赖于TensorFLow 的 Python 接口。 TensorFLow 主要对网络和参数进行可视化,通过读取运行过程中
浅入浅出TensorFlow 4 - 训练CIFAR数据 一. CIFAR数据集 CIFAR数据集是一个经典的数据集,提供两个版本的分类样本,CIFAR-10和CIFAR-100。 CIFAR-10 提供10类标注数据,每类6000张(32*32),其中5000张用于训练,1000张用于测试。 获取数据集的方法: git clone https://github.com/tensorflow/model
浅入浅出TensorFlow 3 - MNIST手写体识别 MNIST 手写体识别通常是神经网络入门的一个例子,每个deep框架 都无例外。一. MNIST数据 MNISt 为 0-9的手写阿拉伯数字,提供了6万的 训练集数据(mnist.train) 和 1万的 测试集数据(mnist.test)。 下载地址:http://yann.lecun.com/exdb/mnist/index.html
浅入浅出TensorFlow 2 - 零基础安装 对一个框架的熟悉过程是从安装开始,今天就带大家熟悉这里面的 第一道坎 - 安装。 TensorFlow 安装方式总结为:一. Pip安装步骤: 1)安装 Pip Pip是目前使用最多的Python包管理工具。通常Linux和Mac是自带Python环境的(2.X版本,附带pip),如果系统没有安装Python环境,或者你需要使用Python
浅入浅出TensorFlow 1 - 初识TensorFlow 一. TensorFlow 的发展历程 OpenCV 可能是多数人都很熟悉的计算机视觉库,参考下图机器学习库的发展轴线。 近几年,随着深度学习技术的快速发展,诞生了 Torch、Theano、Caffe、MxNet 等一批深度学习库,而 TensorFlow 正是这些框架中的佼佼者,得益于其 优秀的架构设计理念及工程实现,以及丰富的学习资料,目前 TensorFlo
Three.js进阶篇之9 - 纹理映射和UV映射 本文将详细描述如何使用Three.js给3D对象添加贴图(Texture Map,也译作纹理映射,“贴图”的翻译要更直观,而“纹理映射”更准确。)。为了能够查看在线演示效果,你需要有一个兼容WebGL的现代浏览器(最好是Chrome/FireFox/Safari/Edge/IE11+)。本文的在线演示结果和代码请点击这里:Three.js贴图实例。什么是贴图(Texture Mappi
Three.js进阶篇之8 - Physijs物理引擎 Three.js可以通过使用Physijs库向场景中加入物理效果。这个库是基于著名的物理引擎ammo.js。Physiji1.导入库文件[html] view plain copy Physijs.scripts.worker = 'js/Physijs/physijs_worker.js'; Physijs
Three.js进阶篇之7 - 3D宇宙特效 body {margin: 0;}body, html {overflow: hidden;}body, html, .canvasbox {width: 100%;height: 100%;}/* 坐标系 */.zuobiaoxi {position: absolute;display: table;right: 3px;top: 3px;font-size: 12px;z-index:
Three.js进阶篇之6 - 碰撞检测 最近在试着用Three.js做一个简单的赛车游戏,里面有一个需要解决的问题是如何判断两个物体发生了碰撞,比如赛车是否碰上了障碍物或者获得了奖励物品。示例我找了一些资料,发现了两个示例程序:第一个示例、 第二个示例 。 以上两个程序都是用 THREE.Raycaster 类来解决问题的。 Raycaster类Raycaster 应该翻译为“光线投射”,顾名
Three.js进阶篇之5 - 粒子系统 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。 0.简介 嗨,又见面了。这么说我们已经开始学习Three.js了,如果你还没有看过之前三篇教程,建议你先读完。如果你已经读完前面的教程了,你可能会想做一些
Three.js进阶篇之4 - 着色器 “渲染”(Rendering)是即使非计算机专业的都不会觉得陌生的词,虽然在很多人说这个词的时候,并不清楚“渲染”究竟意味着什么。相反,“着色器”(Shader)很可能是大家比较陌生的词,从名字看上去似乎是用来上色的,但它具体能做什么呢?在解释着色器之前,我们先来聊聊渲染。渲染用通俗的话来说,渲染就是将模型数据在屏幕上显示出来的过程。这听起来好像很简单呢!但正如
Three.js进阶篇之3 - 外部模型导入 Three.js有一系列导入外部文件的辅助函数,是在three.js之外的,使用前需要额外下载,在https://github.com/mrdoob/three.js/tree/master/examples/js/loaders可以找到。*.obj是最常用的模型格式,导入*.obj文件需要OBJLoader.js;导入带*.mtl材质的*.obj文件需要MTLLoader.js以及OBJ
Three.js进阶篇之2 - 动画 动画原理在这里,我们将动态画面简称为动画(animation)。正如动画片的原理一样,动画的本质是利用了人眼的视觉暂留特性,快速地变换画面,从而产生物体在运动的假象。而对于Three.js程序而言,动画的实现也是通过在每秒中多次重绘画面实现的。为了衡量画面切换速度,引入了每秒帧数FPS(Frames Per Second)的概念,是指每秒画面重绘的次数。FPS越大,则动画效果越
Three.js进阶篇之1 - 网格 在学习了几何形状和材质之后,我们就能使用他们来创建物体了。最常用的一种物体就是网格(Mesh),网格是由顶点、边、面等组成的物体;其他物体包括线段(Line)、骨骼(Bone)、粒子系统(ParticleSystem)等。创建物体需要指定几何形状和材质,其中,几何形状决定了物体的顶点位置等信息,材质决定了物体的颜色、纹理等信息。本章将介绍创建较为常用的物体:网格,然后介绍如何修改物体的属性
Threes.js入门篇之9 - 全景图 全景图是一个当下非常流行的展示方式,在 VR | AR领域有广泛应用。 在三维内的 全景图 通常是根据 鼠标事件调整摄像机位置(在包围球内旋转),其基本思路一致,包围球可以通过 球面、立方体来实现,在几何上面贴上全景图纹理,一个典型的全景纹理图可能是下面这几种: 或者也有可能是多副图的形式,组成一个Cube(根据实际的方式会有所不同)。 概念
Threes.js入门篇之8 - 材质与纹理 材质是指几何对应的 颜色信息,想让一个对象最终呈现出你所希望的样子,其中最重要的一个因素就是材质。 来看一下例子 “canvas_material.html” // Spheres var geometry = new THREE.SphereGeometry( 100, 14, 7 ); var textureLoader = new THREE.TextureLoa
Threes.js入门篇之7 - 场景光照 Three.js 支持四种光源模式,分别是 环境光、点光源、平行光 和 聚光灯。一. 环境光 Ambient Light:所有对象的整体光照模型,控制整个场景的明暗。 var ambientLight = new THREE.AmbientLight(ambiColor); // 环境光颜色 scene.add(ambientLight)
Threes.js入门篇之6 - 场景漫游 THREE.js 支持两种形式的漫游,第一人称漫游(First Person) 和 飞行(Fly),可以分别参考 example 下的 “misc_fps.html” 和 “misc_controls_fly.html”。一. 第一人称漫游 例子中的效果是这样的,通过 【ASDW】控制平移,通过【←↑↓→】控制朝向(try 一下)。 漫游主要是通过 ca
Threes.js入门篇之5 - 场景操纵器Trackball Three.js 提供了很多操纵器,example下也给了一些操纵器(也叫控制器)的例子,引用 js 可以参考 examples/js/controls/TrackballControls.js 。 Trackball 是众多控制器中应用最多的样例之一,将场景对象封装到一个包围球,将鼠标操作映射为对该包围球的拖拽。 下图是 example下提供的例子:(对应代码 m
Threes.js入门篇之4 - World View Projection 在三维世界,一个模型要想最终呈现到一个照片上,需要经过三次矩阵变换,这三个矩阵分别是: 模型矩阵(World) - 视图矩阵(View)- 投影矩阵(Projection)一. 模型矩阵 将 局部坐标系 下的模型坐标(相对于自身原点的坐标) 转化到 世界坐标系 下,通常称为World Matrix。 可以理解为把多个不同坐标系下的
Threes.js入门篇之3 - 场景与相机 • Three.js 的场景 THREE.Scene 执行场景树管理,场景的创建只需要一句话: var scene = new THREE.Scene(); 场景常用操作包含:1.scene.add(obj); // 在场景中添加物体2.scene.remove(obj); //
Threes.js入门篇之2 - Hello World 与OpenGL一样,Three.js 符合右手坐标系,X轴向右,Y轴向上,Z轴朝外: Three.js 的绘制流程可以描述为:1. 生成 渲染器 - THREE.WebGLRenderer,并绑定Canvas绘图画布2. 建立 场景管理器 - THREE.Scene,管理场景对象(场景树) 生成场景对象THREE.mesh,添加到场景管理器3. 创
Three.js入门篇之1 - WebGL on HTML 一. 何为WebGL? WebGL 是基于Web的 三维渲染接口,与OpenGL的不同之处在于,添加了对 JavaScript 的支持,能够为 HTML5 提供硬件加速的三维图形渲染(通过Canvas来和DOM打交道)。 WebGL 是基于 OpenGL ES 2.0 的 Javascript API。通过 HTML5 的 Canvas 来和 DOM 打交道。
GB28181技术基础之8 - 中心管理CMS 一. 中心管理服务器 中心管理 CMS 是业务系统的核心,主要功能包括:用户管理、设备管理、日志管理、业务管理、认证、授权服务。用户管理:用户信息管理,用户账户增、删、改、禁/启用,设备分配等;设备管理:将系统的所有硬件设备纳入中心管理平台来进行管理和参数设置;业务管理:用户权限的分配,前端注册认证;授权服务:用户可见的系统资源是严格按照权限配置的:一个区域的设
GB28181技术基础之3 - RTP 一. RTP协议 实时传输协议 RTP(Real-time Transport Protocol)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的,后在RFC3550中进行更新。 RTP 的包格式:VPXCCMPT
GB28181技术基础之2 - H264与PS封包 一. H.264 视频传输离不开编码,编码过程可以理解为数据压缩过程,由于原始的视频数据太过于庞大,直接传输对带宽的占用太大,因此通过一种压缩方式来进行处理,最常用的是我们常说的H.264标准,也是安防监控领域实际的行业标准。 H.264 是属于 FPEG-4 的一种标准编解码格式,要理解 编解码原理 首先要理解 I帧 | P帧 | B帧 的概念
GB28181技术基础之1 - SIP协议 SIP 协议,即 会话初始协议(Session Initiation Protocol),是一个应用层的 点对点协议,用于初始、管理和终止网络中的语音和视频会话,是 GB28181 的核心之一。 按照 IETFRFC2543 的定义: SIP是一个基于文本的应用层控制协议,独立于底层传输协议 TCP/UDP/SCTP,用于建立、修改和终止IP网上的双方或多方多媒体会
GB28181 - 安防视频监控联网标准 GB/T28181-2011 《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由公安部针对行业接口不兼容等问题制定的 国标协议,规定了安防相关设备及平台联网所需要满足的协议规范要求,目前主要由 公安部一所进行检测和认证。 相对于欧美安防企业发起的 onvif 标准,GB28181 更加严谨,对于音视频相关 包头格式、交换、存储 都做了比较严格的规定,标准和通用性更强,目
奇异值分解SVD 奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,和 特征值分解 有一定的关联,作用都在于将矩阵分解成 多个矩阵的乘积,从而方便进行数据的拆分,实现数据的投影或者降维。 从数学的角度来看,特征值分解 和 奇异值分解 都是给一个矩阵(线性变换)找一组特殊的基。 我们 先从特征值分解层面来引入问题:●
牛顿法与Hessian矩阵 牛顿法 主要有两方面的应用:1. 求方程的根;2. 求解最优化方法;一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解为 牛顿法是一种迭代求解方法(Newton童鞋定义的方法)。 假设 f(x) = 0 为待求解方程,利用传统方法求解,牛顿法求解方程的公式:f(x0+Δx) = f(x0
深度学习之对抗网络 一. 对抗网络的由来 对抗网络 是个新词,全名叫 生成式对抗网络(Generative adversarial nets),就像深度学习一样,发明时间并不长。 Ian Goodfellow(生成对抗性网络的发明者)定义了 对抗网络; Yann LeCun(三巨头之一)在Quora上直播时表示生成对抗性网络近期人工智能最值得期待的算法之一;
深度学习流行网络与数据集 一. 常用网络 深度学习相关的几个比较著名的网络,AlexNet、VGG、GoogleNet、ResNet。模型 AlexNet VGG GoogleNet ResNet 时间 2012 2014
深度学习算法之YOLOv2 一. 久违的新版本 YOLO 问世已久,不过风头被SSD盖过不少,原作者自然不甘心,YOLO v2 的提出给我们带来了什么呢? 先看一下其在 v1的基础上做了哪些改进,直接引用作者的实验结果了: 条目不少,除了 Anchor Boxes没有用,其他的该加的都加上了。我们一个一个来看: A)Batch NormB)Hi
机器学习实践系列之16 - OpenCV之手写体识别 OpenCV3.0 开始有了手写体数字识别的 例子,opencv提供了一张手写数字图片进行训练。 图片位置:/opencv/sources/samples/data/digits.png, 例子中使用 KNN最近邻算法进行 训练和分类,对于数字的识别率能达到 90% 以上,当然也是因为数字比较简单,不过作为入门级的OCR,想来应该是够了。参考代码:
机器学习实践系列之15 - OpenCV之MSER 最大稳定极值区域 MSER(Maximally Stable Extremal Regions)是一种类似分水岭的算法,目前主要用于图像分割和车牌区域检测。2012年由Matas等人提出。 MSER 基本原理是对一幅灰度图像(灰度值为0~255)取阈值进行二值化处理,阈值从0到255依次递增。在得到的所有二值图像中,图像中的某些连通区域变化很小,甚至没有变化,则该区域就被称为最大稳
机器学习实践系列之14 - OpenCV之傅里叶变换 关于 傅里叶变换,讲的太多了,这里我就不再啰嗦一遍了,原理的东西大家可以搜一下,推荐一篇文章: 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧 这篇文章写得很不错了,从 频域 到傅里叶级数 讲的都比较细,而且都有配图,真看不懂的话就 你掐死他吧! (PS:冤冤相报何时了,我在一旁看热闹,横批:不嫌事大) 看下效果(居然暴漏了
机器学习实践系列之13 - OpenCV之图像去雾 图像去雾 是图像质量保证的一个重要方面,这里要讲到的是这个领域的一个里程碑式的贡献: 来自 何凯铭 的基于 暗原色先验(dark channel prior)的单一输入图像去雾方法,这是一种简单但是有效的图像先验规律,不需要借助帧间关系。 论文参考:Single Image Haze Removal Using Dark Channel Prior
数学回味系列之24 - 黑白子交换 问题提出: 有三个白子和三个黑子如下图布置: ○ ○ ○ . ● ● ● 用最少的步数将上图中白子和黑子的位置进行交换: ● ● ● . ○ ○ ○ 游戏规则: (1) 一次只能移动一个棋子; (2) 棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。