首页 > 其他分享 >计算机视觉知识点汇总

计算机视觉知识点汇总

时间:2022-12-19 22:33:31浏览次数:67  
标签:知识点 卷积 模型 汇总 网络 学习 量化 视觉 优化

​​ARM 优化​​

  • ​​CPU 硬件基础​​
  • ​​数字图像处理​​
  • ​​深度学习基础知识​​
  • ​​矩阵乘优化​​
  • ​​经典卷积网络​​
  • ​​神经网络量化与压缩​​
  • ​​模型剪枝​​
  • ​​轻量网络设计方法​​
  • ​​目标检测网络​​
  • ​​评价指标​​
  • ​​语义分割​​
  • ​​3D 视觉​​
  • ​​计算机视觉基础知识​​
  • ​​Pytorch 框架​​
  • ​​Caffe 框架​​
  • ​​编程语言​​
  • ​​模型部署​​
  • ​​AI 芯片​​
  • ​​内存优化​​
  • ​​关于科研和研发​​
  • ​3D 视觉技术​
  • ​​知识点输出​​

ARM 优化

  1. ​ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透​
  2. ​一份朴实无华的移动端盒子滤波算法优化笔记​
  3. ​Neon Intrinsics Reference​

​Neon​​​ 是 ​​ARM​​​ 平台的向量化计算指令集,通过一条指令完成多个数据的运算达到加速的目的,或者说 ​​Neon​​​ 是 ARM 平台的 ​​SIMD​​(Single Instruction Multiple Data,单指令多数据流)指令集实现。常用于AI、多媒体等计算密集型任务。

CPU 硬件基础

  1. ​嵌入式系统 内存模块设计​

数字图像处理

  1. ​SIFT 特征详解​
  2. ​使用ffmpeg库进行YUV420到RGB的转化​
  3. ​​图像的深度和通道概念区分​​

深度学习基础知识

  1. ​CNN中参数解释及计算​
  2. ​深度学习推理时融合BN,轻松获得约5%的提速​
  3. ​动图形象理解深度学习卷积​

矩阵乘优化

  1. ​OpenBLAS gemm从零入门​
  2. ​通用矩阵乘(GEMM)优化算法​
  3. ​矩阵相乘在 GPU 上的终极优化:深度解析 Maxas 汇编器工作原理​
  4. ​​卷积神经网络中的Winograd快速卷积算法​​

​Winograd​​ 是一种快速卷积算法,适用于小卷积核,可以减少浮点乘法的次数。

经典卷积网络

1,VGGNet 拥有 5 段 卷积,每一段有 2~3 个卷积层,同时每段尾部会连接一个最大池化层用来缩小图片尺寸,每段内的卷积核数量相同,越靠后的段的卷积核数量越多:64-128-256-512-512。ResNet 网络拥有 4 段卷积, 每段卷积代表一个 残差学习 ​​Blocks​​​,根据网络层数的不同, Blocks 的单元数量不同,例如 ResNet18 的 Blocks 单元数量分别为2、2、2 和 2。越靠后的段的卷积核数量越多:64-128-256-512,残差学习 ​​Blocks​​​ 内的卷积核通道数是相同的。
2,ResNet v2 创新点在于通过理论分析和实验证明恒等映射对于残差块的重要性,根据激活函数与相加操作的位置关系,我们称之前的组合方式(ResNet)为“后激活(post-activation)”,现在新的组合方式(ResNet v2)称之为“预激活(pre-activation)”。使用预激活有两个方面的优点:1)​​​f​​​ 变为恒等映射,使得网络更易于优化;2)使用 ​​BN​​ 作为预激活可以加强对模型的正则化。

  1. ​深度可分离卷积(Xception 与 MobileNet 的点滴)​
  2. ​[DL-架构-ResNet系] 002 ResNet-v2​
  3. ​ResNet及其变种的结构梳理、有效性分析与代码解读​

神经网络量化与压缩

1,量化是指用于执行计算并以低于浮点精度的位宽存储张量的技术,或者说量化就是将神经网络的浮点算法转换为定点。 量化模型对张量使用整数而不是浮点值执行部分或全部运算。
2,量化简单来说就是将浮点存储(运算)转换为整型存储(运算)的一种模型压缩技术。
3,虽然精心设计的 ​​​MobileNet​​​ 能在保持较小的体积时仍然具有与 ​​GoogleNet​​​ 相当的准确度,不同大小的 ​​MobileNet​​​ 本身就表明——也许一个好的模型设计可以改进准确度,但同类模型中仍然是更大的网络,更好的效果!
4,权重值域调整是另一个机器学习过程,学习的目标是一对能在量化后更准确地运行网络的超参数 ​​​min/max​​。

  1. ​神经网络量化简介​
  2. ​线性量化​
  3. ​Int8量化-介绍(一)​
  4. ​Int8量化-ncnn社区Int8重构之路(三)​
  5. ​​ncnn源码学习(六):模型量化原理笔记​​
  6. ​神经网络推理加速之模型量化​
  7. ​NNIE 量化感知训练​

模型剪枝

​论文总结 - 模型剪枝 Model Pruning​

轻量网络设计方法

  1. ​轻量卷积神经网络的设计​

网络结构碎片化更多是指网络中的多路径连接,类似于 ​​short-cut​​​,​​bottle neck​​​ 等不同层特征融合,还有如 ​​FPN​​ 等结构。拖慢并行的一个很主要因素是,运算快的模块总是要等待运算慢的模块执行完毕

  1. ​​ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design​​
  2. ​ShufflenetV2_高效网络的4条实用准则​
  3. ​轻量级神经网络:ShuffleNetV2解读​

目标检测网络

  1. ​一文读懂Faster RCNN​
  2. ​从编程实现角度学习Faster R-CNN(附极简实现)​
  3. ​​Mask RCNN学习笔记​​
  4. ​​Mask RCNN 源代码解析 (1) - 整体思路​​
  5. ​物体检测之Focal Loss及RetinaNet​
  6. ​CVPR18 Detection文章选介(下)​
  7. ​2020首届海洋目标智能感知国际挑战赛 冠军方案分享​
  8. ​目标检测中的样本不平衡处理方法——OHEM, Focal Loss, GHM, PISA​

评价指标

  1. ​ROC和AUC介绍以及如何计算AUC​
  2. ​COCO目标检测测评指标​

语义分割

  1. ​2019年最新基于深度学习的语义分割技术讲解​
  2. ​U-Net 论文笔记​

计算机视觉基础知识

Pytorch 框架

  1. ​pytorch自定义层如何实现?超简单!​
  2. ​【PyTorch】torch.nn.Module 源码分析​
  3. ​​详解Pytorch中的网络构造,模型save和load,.pth权重文件解析​​
  4. ​半小时学会 PyTorch Hook​
  5. ​详解Pytorch中的网络构造​
  6. ​​深度学习与Pytorch入门实战(九)卷积神经网络&Batch Norm​​
  7. ​Pytorch 里 nn.AdaptiveAvgPool2d(output_size) 原理是什么?​

Caffe 框架

  1. ​​Message type “caffe.PoolingParameter” has no field named “ceil_mode”​​
  2. ​Caffe Pooling层对ceil mode选择的支持​
  3. ​caffe源码解析-开篇​

编程语言

  1. ​http://www.cplusplus.com/reference/stl/​

模型部署

  1. ​​海思AI芯片(Hi3519A/3559A)方案学习(二十五)初识 mapper_quant 和mapper_param​​
  2. ​部署PyTorch模型到终端​
  3. ​​多场景适配,TNN如何优化模型部署的存储与计算​​
  4. ​​模型转换、模型压缩、模型加速工具汇总​​
  5. ​深度学习模型转换与部署那些事(含ONNX格式详细分析)​
  6. ​ONNX初探​

AI 芯片

  1. ​看懂芯片原来这么简单(二):AI为什么聪明?什么是华为自研架构NPU?​
  2. ​【专利解密】如何提高AI资源利用率? 华为卷积运算芯片​
  3. ​从GTX到RTX NVIDIA GPU架构的变迁史​
  4. ​​CPU、GPU、NPU等芯片架构、特点研究​​
  5. ​什么是异构并行计算?CPU与GPU的区别是什么?​

内存优化

  1. ​优化 TensorFlow Lite 推理运行环境内存占用​

关于科研和研发

  1. ​中国人民大学赵鑫:AI 科研入坑指南​

3D 视觉技术

  1. ​3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息​
  2. ​关于双目立体视觉的三大基本算法及发展现状的总结​
  3. ​3D视觉CV界的终极体现形式,计算机如何「看」这个三维世界​

知识点输出

1,为了尽可能地提高 ​​MAC阵列​​ 的利用率以及卷积运算效率,阵列控制模块会根据第一卷积参数矩阵的行数和第一卷积数据阵列的行数来确定第一乘法累加窗口的列数。

2,​​SNPE​​ 开发流程:

计算机视觉知识点汇总_人工智能

3,目标检测模型效果提升方法:

  • 以 ​​Cascade RCNN​​​ 作为 ​​baseline​​​,以 ​​Res2Net101​​​ 作为 ​​Backbone​​;
  • ​Albumentation​​ 库做数据集增强-用在模型训练中;
  • 多尺度训练(​​MST​​​ Multi-scale training/testing)的升级版-​​SNIP​​​方法(Scale Normalization for Image Pyramids),用在 ​​baseline​​ 模型训练和测试中:解决模板大小尺度不一的问题;
  • ​DCN​​​ 可变性卷积网络-用在 ​​baseline​​​ 模型的 ​​backone​​ 中;
  • ​soft-NMS​​:解决目标互相重叠的问题;
  • ​HTC​​​ 模型预训练, ​​Adam​​​ 优化算法可以较好的适应陌生数据集,学习率热身(​​warm-up​​)来稳定训练过程。

4,​​SNIP​​ 论文解读:

​SNIP​​​ 非常 ​​solid​​​ 地证明了就算是数据相对充足的情况下,​​CNN​​​ 仍然很难使用所有 ​​scale​​​ 的物体。个人猜测是由于 CNN 中没有对于 scale invariant 的结构,CNN 能检测不同 scale 的“假象”,更多是通过CNN 来通过 ​​capacity​​​ 来强行 ​​memorize​​​ 不同 ​​scale​​​ 的物体来达到的,这其实浪费了大量的 ​​capacity​​​,而 ​​SNIP​​ 这样只学习同样的 scale 可以保障有限的 capacity 用于学习语义信息。论文的关键贡献:发现现在的 CNN 网络无法很好的解决 scale invariance 的问题,提出了一个治标不治本的方法。

5,高效模型设计(模型压缩)方法:

一般而言,高效模型的设计有 6 大基本思路:1)轻量级架构、2)模型裁剪、3)模型搜索、4)低精度量化、5)知识蒸馏、6)高效实现。

6,网络深度与宽度的理解及意义

更多理解参考知乎​​网络宽度对深度学习模型性能有什么影响?​

在一定的程度上,网络越深越宽,性能越好。宽度,即通道(​​channel​​​)的数量,网络深度,及 ​​layer​​​ 的层数,如 ​​resnet18​​​ 有 ​​18​​ 层网络。注意我们这里说的和宽度学习一类的模型没有关系,而是特指深度卷积神经网络的(通道)宽度。

  • ​网络深度的意义​​:CNN 的网络层能够对输入图像数据进行逐层抽象,比如第一层学习到了图像边缘特征,第二层学习到了简单形状特征,第三层学习到了目标形状的特征,网络深度增加也提高了模型的抽象能力。
  • ​网络宽度的意义​​​:网络的宽度(通道数)代表了滤波器(​​3​​ 维)的数量,滤波器越多,对目标特征的提取能力越强,即让每一层网络学习到更加丰富的特征,比如不同方向、不同频率的纹理特征等。

7,所有 ​​Inception​​​ 模型都具有一个重要的性质——都是遵循 拆分-变换-合并(​​split-transform-merge​​) 的设计策略。

8,对于某种指令,延迟 ​​latency​​​ 主要关注单条该指令的最小执行时间,吞吐量 ​​throughout​​ 主要关注单位时间内系统(一个CPU核)最多执行多少条该指令。因为 AI 计算的数据量比较大,所以更关注吞吐量。

9,CPU 高性能通用优化方法包括:

  • 编译选项优化
  • 内存性能和耗电优化:内存复用原则,小块快跑是内存设计的重要原则。
  • 循环展开:循环的每次迭代都有一定的性能损失(分支指令)。但是现代 ARM 处理器具有分支预测的能力,它可以在执行条件之前预测是否将进入分支,从而降低性能损耗,这种情况下全部循环展开的的优势就减弱了。
  • 并行优化和流水线重排:并行优化分为多线程核与核之间数据处理,以及单核心内部并行处理。从本质上讲,流水线重排也是一种并行优化。

10,卷积性能优化方式:卷积的计算方式有很多种,通用矩阵运算(​​GEMM​​​)方式有良好的通用性,但是仅使用 GEMM 无法实现性能最优。除 GEMM 外,常用的优化方法还包括滑窗(​​Sliding Window​​​)、快速傅里叶变换(Fast Fourier Transform, ​​FFT​​​)、​​Winograd​​ 等。不同的方法适合不同的输入输出场景,最佳的办法就是对算子加入逻辑判断,将不同大小的输入分别导向不同的计算方法,以最合适的方法进行卷积计算。

  • 大多数情况下,使用滑窗方法的计算性能还是无法和 ​​GEMM​​​ 方法比较,但是一般当输入小于 计算机视觉知识点汇总_人工智能_02
  • ​Winograd​​​ 是存在已久的性能优化算法,在大多数场景中,​​Winograd​​​ 算法都显示了较大的优势,其用更多的加法运算代替部分乘法运算,因为乘法运算耗时远高于加法运算。​​Winograd​​​ 适用于乘法计算消耗的时钟周期数大于加法运算消耗的时钟周期数的场景,且常用于 计算机视觉知识点汇总_人工智能_03 卷积计算中。对于 ​​​CPU​​​,一般来说,一次乘法计算消耗的时间是一次加法计算消耗时间的 ​​6​​ 倍。
  • ​FFT​​​ 方法不适合卷积核较小的 ​​CNN​​ 模型。


标签:知识点,卷积,模型,汇总,网络,学习,量化,视觉,优化
From: https://blog.51cto.com/armcvai/5953933

相关文章

  • 关于c语言指针还有二级指针的一些知识点理解
    二级指针:指向指针的指针;例如**p,这里p就是一个二级指针,假设p就是指向了一个指针q,q又指向了一个变量a;看下图:对二级指针进行一级解引用是指向指针的地址,在这里*ppa的值......
  • 资料汇总集
    数据结构与算法:[红黑树https://www.bilibili.com/video/BV1UJ411J7CU?spm_id_from=333.788.b_636f6d6d656e74.5]数据结构与算法大纲【n阶b+树n-1关键字插入删除实现原理......
  • 【总结】有三AI所有原创GAN相关的学习资料汇总(2022年12月)
    GAN的研究和应用在这几年发展可以说是非常迅猛,无疑是这几年深度学习计算机视觉领域里落地性最酷的技术之一,包括图像与视频生成,数据仿真与增强,各种各样的图像风格化任务,人脸......
  • 【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!
    有三上个月出版了新书《生成对抗网络GAN:原理与实践》,GenerativeAdversarialNetworks(中文名生成对抗网络,简称GAN)自从被提出来后,其发展就非常迅猛,几乎已经被应用于所有CNN可......
  • 基础算法汇总之二叉搜索树实现
    一.树定义在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层......
  • 基础算法汇总之AVL树实现
    一.什么是AVL树?在说AVL树之前,先回顾一下我们之前研究过的二分查找树(二分搜索树),在极端的情况下,二分搜索树会从一棵二叉树变为链表(按顺序插入数据)这样的查询效率会大打折扣。......
  • 基础算法汇总之哈希表
    一.什么是哈希表哈希表也叫做散列表,是一种可以根据关键key值直接访问的数据结构;简单说就是把关键的key值映射到数组中一个位置来访问记录,这样可以加快反应速度。这里面计算......
  • 基础算法汇总之堆和优先队列
    一.简述这篇文章将介绍几种常见的队列,本文将重点介绍优先队列以及优先队列底层的二叉堆并且实现基础算法(go实现),最后还会介绍一样Java并发包中的四种最常用的队列,分析其源码......
  • 机器视觉取代人工视觉趋势不可逆转!
    在现代自动化生产过程中,机器视觉已经开始慢慢取代人工视觉,尤其是在工况检测、成品检验、质量控制等领域,应用广泛,随着工业4.0时代的到来,这一趋势不可逆转。机器视觉,是通过光......
  • SpringBoot知识点
    自动装配原理SpringBoot特点优点:(1)创建独立Spring应用(2)内嵌web服务器(3)自动start依赖,简化构建配置(4)自动配置Spring以及第三方功能(5)提供生产级别的监控、健康检测以及......