视觉框架
基础知识整理
图像
拿到一张图片,视觉程序需要了解的信息有:
- 宽、高:
假如一张照片的分辨率为:1920*1080(单位为dpi,全称为 dot per inch),1920 就是照片的宽度,1080 就是图片的高度。 - 深度:
这个感觉应该是表示每个像素点可以表示的不同颜色的总数,比如RGB的深度:2^8 * 3 = 768 - 通道数:
这个好理解,就是配色源色总数,例如RGB通道数为3 - 色彩模式:
如RGB,RGBA,CMYK,位图模式,索引颜色模式,双色调模式,多通道模式 - more
图像中的知识点太多,做基本图像处理,了解以上知识个人感觉可以了。等到以后如果做深入研究,或许有机会做更多的学习
视屏
原始视屏就是有序图片序列,其中每张图片即为1帧(frame),压缩后的视频,会采取各种算法减少数据容量,如IPB。
- 码率:
单位时间内传送数据的位数,即取样率 - 帧率:
每秒传输的帧数(fps: frames per second) - 分辨率:
每帧的像素点数? - 清晰度
实际上不同的清晰度对应不同的分辨率 - IPB:
在网络视频流中,并不是把每一帧图片全部发送到客户端来展示,而是传输每一帧的差别数据(IPB),客户端然后对其进行解析,最终补充每一帧完整图片
摄像机
在实际应用当中,基本上都是通过不同种类的摄像机来获取数据,然后发送给服务端(AI Server)进行处理,分类有:
- 监控摄像机(网络摄像机、模拟摄像机)
- 行业摄像机(超快动态摄像机、红外摄像机、热成像摄像机)
- 智能摄像机
- 工业摄像机
GPU和CPU
对于深度学习,或者处理类似图片的矩阵形式的数据,我想是离不开GPU的。
-
架构对比
1、上图中,绿色为计算单元,可以看出,CPU的ALU比GPU的少多了
2、橙红色为存储单元,可以看出,GPU中没有CPU意义上的cache,实际上GPU中的缓存不是为了提高数据交换速度,而是为多线程突服务的
3、橙黄色为控制单元,实际上CPU中有比较复杂的控制单元,这,可以降低延迟 -
整体对比
1、cache、local memory(数):CPU > GPU
2、threads(数):GPU > CPU
3、registers(数):GPU > CPU
4、SIMD Unit(数):GPU > CPU
CPU在设计上,低延迟,可是低吞吐量,CPU的ALU(算数运算单元)虽然少,可是很强大,可以在很少的时钟周期内完成算数计算,或许数量少,就可以任性的减少时钟周期,所以其频率非常高,能够达到1.532 ~ 3 (千兆,10的9次方)。
大缓存容量、复杂的逻辑控制单元也可以减低延迟。
GPU在设计上,高延迟,可是高吞吐量。GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。
- cuda(compute unified device architecture)
是显卡厂商NVIDIA推出的运算平台,采用并行计算架构,是GPU能够解决复杂的计算问题。包含了CUDA指令集架构以及GPU内部的并行计算引擎。 - 编程语言和数学基础
1、Python、C++
2、线性代数、概率统计、machine learning
参考书和公开课
开源框架
- caffe
- TensorFlow
- torch and maxnet
- FFmpeg:强大的视屏处理工具
框架对比图
深入视觉学习
- 里程碑式的文献
1、深度学习做目标检测,RCNN、Fast RCNN、Fater RCNN、SPPNET、SSD和YOLO等模型;
2、深度学习做目标跟踪,DLT、SO-DLT等等;
3、对抗网络GAN、CGAN、DCGAN、LAPGAN等等。 - 文献网站
arxiv :每天去更新一下别人最新的工作
视觉顶会
- ICCV:国际计算机视觉大会
- CVPR:国际计算机视觉与模式识别大会
- ECCV:欧洲计算机视觉大会
顶刊
- PAMI:IEEE 模式分析与机器智能杂志
- IJCV:国际计算机视觉杂志