入手计算机视觉
之前一直在做机器学习相关的算法加速实现,感到单纯的算法不结合实际工程就太过空洞,各种参数(算法的速度和准确度,数据的吞吐率,实现的功耗等)都得不到考验,宛如一手屠龙术。于是前些日子开始做行人检测在ZYNQ板子上的实现。(这部分工作还在进行,完成后会更博)。虽然之前做图片文本检测,接触过目标检测的SSD和各种更快的R-CNN,但是这些都是以神经网络,或者说以CNN为主的算法,这些知识在过去的一年已经接触并学习了很多了。
然后这次的行人检测中接触到了sobel边缘检测算法,虽然就这个算法而言我明白是怎么回事,但是让我突然意识到我对计算机视觉一直存在着误解:找计算机视觉算法的工作,就是学会深度学习里的各种检测识别的网络和机器学习的算法。然而计算机视觉本身就是一门学科,本身就存在一套体系和算法。要想成为计算机视觉算法工程师,那么这些知识是绕不过去的。即便现在深度学习算法应用很广,但是计算机视觉的传统算法对数据的预处理是不可少的。我觉得计算机视觉与神经网络算法的融合,才是目前在图像检测识别领域在复杂环境下准确率不高的解决手段(文本检测中具有透视角度的文本,光线不充分时的目标检测等)。又想起以前用OPENCV里的仿射和投影函数,当时还对几何意义思考了很多。其实这些都是计算机视觉中的算法。
只懂写程序调用各种函数的应该是计算机视觉应用工程师,对于计算机视觉算法工程师而言,应该要明白算法的理论。xilinx也对OPENCV支持,可以对opencv的部分函数在FPGA上实现加速(目前做的硬件实现就包含这部分)。所以不论出于硬件的角度,还是算法的角度,我都需要去系统地学习。
https://blog.csdn.net/electech6/article/details/79545911 https://blog.csdn.net/ksws0292756/article/details/78881839,
上面是一些博主的对计算机视觉学习的概括,发现很多都有两本书的出现:
一本书是2010年出版的美国华盛顿大学Richard Szeliski写的《Computer Vision: Algorithms and Application》;一本是2012年出版的,加拿大多伦多大学Simon J.D. Prince写的《Computer Vision: Models, Learning, and Inference》据里面的博主所讲:两本书侧重点不同,前者侧重视觉和几何知识,后者侧重机器学习模型。当然两本书也有互相交叉的部分。虽然都有中文版,但是如果有一定的英语阅读基础,推荐看英文原版。老外写的书,图和示例还是挺丰富的,比较利于理解。
接下来就从这两本书入手,进行学习。