了解一下计算机视觉的基础知识。
常用的编程语言、硬件、常用的开源软件 (越早学越好), 和机器学习之间的关系。
计算机视觉的应用:
图像
一张图片包含了: 维度、高度、宽度、深度 (存储每一个像素所用到的位数, 可以搜索一下图像的深度)、通道数、颜色格式、数据首地址、结束地址、数据量等等。
此外, 图像深度、图像压缩格式 和 图像的通道数。
视频
原始视频 = 图片序列, 视频中的每张有序图片称为 「 帧 」(frame)。压缩后的视频, 会采取各种算法减少数据的容量, 其中 IPB 就是常见的。码率、帧率、分辨率、清晰度、带宽。
例如要对图像、视频做分析的话。
先不想什么算法, 没多大意义。 先要了解视频的结构, 特点。 例如帧率很低、码率很低、你用别人的方法不一定适合。
IPB, 原始的视频可以理解为一些图片的序列, 视频里有序的图片就理解为一帧, 所以一个视频就理解为有序的图片序列。怎样做压缩存储呢? 图片都要做压缩处理, 更别说视频。
做压缩里面, IPB 是最常见的, 代表的是在压缩完成之后只会带表的三中帧。 I 帧、P 帧、B 帧。I 帧, 叫做关键帧, 它会吧一张图片完整的保存下来, 所以 I 帧 不能出错, 出错就白费了; P 帧, 指跟上一帧之间的差别, 保留的是跟上一个帧的差别; B 帧 是双向的, 代表了跟上一帧和下一帧的差别。
码率, 码率越大视频体积越大, 码率越小体积就越小。 码率值数据传输的时候, 单位时间传输的单位数, 一般会用单位 kbps 。
CPU 和 GPU 的差别是什么?
性能 (低延时性 Latency, 延时性越低性能越好) 与吞吐量 (Throughput)。
如下图 :
这张图来自 wiki 。
要入门和一些数学基础, 一些要学的东西。 Stanford CS231N 课程里面的已经详细说明了。
懂 Python、最好精通 C/C++ (哈哈哈, 精通谈不上)、当然会一些其他 MATLAB、JavaScript 更好。
数学基础, 概率学统计学不可少。微积分, 线性代数。等等, 数学必不可少。
最好也懂一些机器学习和
<>, 入门后可以看看。
Stanford 课程都被大家推荐, 不适合自己, 上知乎看看各位老师、前辈的推荐。找到适合自己的课程。
一个很有用的网站 : http://www.visionbib.com/bibliography/contents.html
如果关心深度学习, 也不需要看太多。 选择一、两本已经足够。 https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618/ref=sr_1_1?ie=UTF8&qid=1472485235&sr=8-1&keywords=deep+learning+book
例如, 深度学习做目标检测, RCNN、Fast RCNN、 Faster RCNN、SPPNET、SSD 和 YOLO 这些模型肯定是要知道的。
又例如, 深度学习做目标跟踪, DLT、SO-DLT 等等。
再例如, 对抗网络 GAN、GAN、CGAN、DCGAN、LAPGAN 等等。
https://arxiv.org/list/cs.CV/recent 每天去更新一下别人的工作。
阅读论文, 搞明白以下几点: