1720101322
计算机视觉 ¶
课程学习内容 ¶
本课程主要涉及图像处理等基本思想和方法,包括:
- 视觉方面的基础理论
- 对图像和视频进行处理
- low-level 层面:处理形状、颜色等
- high-level 层面:识别具体的物体是(语义理解)
- 对三维世界进行解构(更多是几何方面的内容)
先修要求 ¶
无先修要求,只要会基本的 C 和 Python 语法即可。老师的课堂 / 实验会从基本的 OpenCV 使用与图像处理开始,比较容易上手,包括之后的 CNN 处的实验也是很经典的。不过本课程和 图像信息处理 有相通之处,在修习完图像信息处理之后(特别是后半段内容)再修习本课程会有一定的帮助。
任课教师 ¶
全中文授课,课件以往年的形成的杂交课件为主,但是也会夹杂着一些随着时事(OpenAI)更新的课件(Transformer)。因为潘老师原本就是 CV 方向的,所以对于课程的讲解也是很有深度的。不过从 21 年开始,潘老师的实验开始改革,相比宋老师班会难很多,同时也会邀请实验做的比较好的同学对自己的实验进行讲解,有一定的 Bonus(但没公布比例),原则上一人一次。2023 年冬没有点名的情况。
全中文授课,课件和潘老师班一样,也是在之前的课件上面做修改,今年加入了 Transformer 部分的讲解,但要求并不深入。2023 年冬学期的早八点过几次名。几次作业都比较简单,而且还在用一些比较老的诸如特征人脸识别等的案例,甚至还有部分作业来自 Learning Opencv 教材。整体上课的感觉跟图像信息处理课确实很像。
课程教材 ¶
整体课程以课程讲义为主,没有指定教材,相关的原理可以查询维基或者 OpenCV 等库的说明。不过潘老师课件中有给出一些关于 OpenCV 的书籍,如:
- Learning OpenCV:Computer Vision with the OpenCVLibrary, Gary Bradski, Adrian Kaebler ( 此书使用的 OpenCV 2.0 版本过于老旧 , 不建议阅读 )
- 《OpenCV 教程—基础篇》,刘瑞祯、于仕琪 ( 这本比上一本还老 :-)
建议直接参考 OpenCV 的 Documents。
相比其它参考书 , 笔者比较推荐 Robot Vision .Berthold K.P. Horn ( 中文名《机器视觉》) , 十分经典的一本教材 , 侧重数学理论 , 与本课程内容更加接近。
分数构成 ¶
- 平时编程作业(50%)
- Canny Edge Detection
- Image Stitching
- Eigenface
- Learning CNN
- LeNet-5, U-Net
- Learning CNN++
- 公开数据集 Pokemon Image Dataset 上的精灵宝可梦类型预测任务
- 其他说明
- 若迟交,最高得分上限 80%
- 在班级整体完成度不好的情况下,会对作业进行延期,甚至可以变成考试周大作业
- 若完成度好,通过进行展示可以得到一定 Bonus,比例未知,增加到总评上
- 期末考试(50%)
- 两班历年来都统一由潘老师出题
- 期末考试闭卷,全中文,全问答题
- 充分参考老师提供的提纲进行复习即可
- 平时编程作业(40-50%)
- 使用 OpenCV 编辑一段视频
- 使用 OpenCV 进行椭圆拟合
- Eigenface
- 相机标定与鸟瞰图生成
- LeNet on MNIST
- 期末考试(50-60%)
- 两班历年来都统一由潘老师出题
- 期末考试闭卷,全中文,全问答题
- 充分参考老师提供的提纲及 98 上的历年卷进行复习即可
学习建议 ¶
来自 2023 秋冬潘纲班助教 ZhouTimeMachine
这门课程最初并不是开给 CS 专业的(似乎是数字媒体相关的),导致一开始课程设计偏展示与应用,从制作个人视频这种更像艺术设计而不是理工的作业可见一斑。于是潘老师对课程设计进行锐意改革,在本学期(2023 秋冬)引入了 Attention 的教学内容,设计了统括特征检测、特征匹配、变换拟合、图像拼接、图像融合各项重要技术的全景图拼接实验,并指示我设计了关于 CNN 的两个实验。非常遗憾的是由于没有服务器支持,要允许同学 PC 炼丹也能完成实验,我的实验设计非常保守,并没有与计算机视觉的深度学习时代前沿接轨。
例如我曾想引入 Diffusion Model 实验,但最后限于算力还是放弃了
与之对比的是,宋老师班基本保持老的实验,最终导致潘老师班同学完成实验的难度远大于宋老师班。这是因为新设计的实验很难从 CSDN 等地方获得直接借鉴,比较考察自己探索的硬核实力。在冬学期 8 周完成 5 个难度相当高的实验,大家的 workload 也非常大,有同学评价比 OS 还难搞。横向对比之下,工程能力较弱的同学不推荐选择潘老师班,而对于有一定工程能力的同学,潘老师班的实验设计更有挑战性,也更有趣。
最后谈一谈我在改期末考卷中的感想。出现最灾难性失分的是 CNN 的题目,大部分同学根本不理解 CNN 相对全连接层的优势,能够算对 CNN 计算题的同学更是凤毛麟角。而 CNN 计算题分值极高,而且很难给过程分,一扣扣光,根本没法捞——于是就成为了重要的区分题。从同学那边了解过来,潘老师班写对的同学比例远多于宋老师班,可能是被我设计的 CNN 实验摧残得非常熟练了吧。与此对比的是,宋老师班 CNN 实验只有一个 LeNet,从 CSDN 就能直接 copy 代码。
另外,虽然很多考题的确是背诵,但是原理理解类的题目还是想靠背诵是不太行的,经常改了几十份卷子都是相同的牛头不对马嘴的答案,让人怀疑是否有人提供了误导性的答案源。建议大家也不要真把 CV 当作文科背诵了,还是要思考一下别人总结的结论是怎么得到的。
举个例子,BP 算法是梯度下降法框架中的一环,但是很多人都写梯度下降法是基于 BP 算法的,于是被扣分;还有很多人以为 CNN 有 bias,直接导致 CNN 计算题全错。