跳转至

1708875304

计算机视觉

CS 专业选修

课程学习内容

本课程主要涉及图像处理等基本思想和方法,包括:

  • 视觉方面的基础理论
  • 对图像和视频进行处理
    • 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 教程—基础篇》,刘瑞祯、于仕琪

不过并不是特别需要,使用的相关文档可以直接参考 OpenCV Documents

分数构成

  • 平时编程作业(50%)
    • Canny Edge Detection
    • Image Stitching
    • Eigenface
    • Learning CNN
      • LeNet-5, U-Net
    • Learning CNN++
    • 其他说明
      • 若迟交,最高得分上限 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 计算题全错。