Py学习  »  Python

好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务

CVer • 2 年前 • 289 次点击  

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

编辑:Amusi  |  来源:知乎

https://www.zhihu.com/question/471999381

本文仅作为学术分享,如果侵权,会删文处理


昨晚Amusi深夜刷知乎,看到热榜上挂着这个话题"如何评价清华大学电子系大一暑假小学期总共 9 个学时的 Python 课程大作业难度?"。



心想:Python作业上知乎热榜,肯定不对劲?这次估计有难得离谱(想起了去年清华自动化系的C++作业),于是点开一看,好家伙!这不是计算机视觉的任务么,大作业内容如下:


有些人看到这里,只粗看题目,可能感觉:就这"通过人脸,识别性别",不难啊!但需要你仔细品品:


  1. 作业面向对象:清华电子系大一

  2. 数据集不简单:黑种人等多种族、存在光照、姿态等干扰

  3. 不允许直接使用开源项目的已训练好的模型或现有代码


上段内容,Amusi挑出了自认为的重点,a和b没啥好说的。而 c(原作业第3点要求)是最大的拦路虎,也就是上热点的缘由之一。


懂CV的同学应该明白c意味了什么,而且看网上有网友说,原作业版本是"不允许使用第三方库",那这个对于任何懂编程的同学,应该就明白难度有多高了。


可能有些人会说:大不了不用顶会或者经典的论文/开源项目,搭建几层CNN或者用机器学习方法(SVM等)不就解决了... 这种回答明显就是站着说话不腰疼,压根就没结合作业要求,项目难度。甚至有人会说:作业又没有要求准确率咯...



这里分享一下几位大佬的回答,看看有什么见解:


如何评价清华大学电子系大一暑假小学期总共 9 个学时的 Python 课程大作业难度?



作者:沼泽人
https://www.zhihu.com/question/471999381/answer/1995933727


针对那些说自己毕业后在公司/实验室也做过类似难度事情的答主们


你们毕业后和大一是一个水平吗?那你们本科的进步程度也太小了吧,一个经过正常学习流程的人走下来毕业之后回过头看大一应该觉得有了飞跃吧?


拿别人大一的作业来秀自己的优越感有意思吗?只能表现出你们对大多数普通学生毫无共情心


另外补充一点,对大多数人而言,我不相信非DL的传统方法能得到可接受的分数。

如果可以,我在这提一个非常简单的baseline:KNN取k=1,相信对大多数初学者来讲应该是能在一个小时里学懂+写代码+debug的。之后如果可以用sklearn的话可以试试SVM。


希望助教给非DL的做法留条活路吧。



这是去年自动化系那个大作业出台之后我在空间发的说说

以我浅薄的理解,起码贵系大多的老师,是以学生能完成远超课程教学难度的作业与考试为学校的优点的,这是一个个用来当正面鸡汤宣传的案例 我完全不怀疑最后的结局如下:个别大佬经过私下交流合作,将任务基本完成(我做这个功能他做那个功能,互相分享学习资料),然后以宿舍为单位向同学分享经验。答辩时老师欣慰地感慨大家学到了真本事,大佬们收获了高GPA。然后第二年及以后的学弟能得到祖传代码,在其基础上迭代开发,可能还会有哪个大佬完成非常厉害的附加功能上知乎(自己实现一个数据库?)

这种老师是当所有来上他python课的大一下新生都已经会python了,且还顺便掌握机器学习。


是的,这作业交给一个有过深度学习经验的科班学生而言并不难。我没做过性别分类器,所以我只能凭经验猜流程是先过一个检测网络把人脸找出来,再训一个二分类器来分人脸。从文字上推断,如果难度再低一点,也许每张图只有一个人,那就检测网络也不用了,就训一个二分类器就行。第3点比较扯淡,因为正常人不可能自己搭网络吧,肯定会用经典网络。如果老师咬文嚼字不让用resnet34的话,我大不了加一层变成resnet35。不允许直接使用,我对着github抄一遍自己改改变量名总行了吧,大不了我不用循环来搭网络,手动把一层层都用硬编码写好,总能规避第3点的。我觉得那种大佬来看1天都不用就能做完(其实根据小道消息初版要求更恶心,不让用pytorch,我就不提了)。


但是上课的学生中,肯定存在第一天才会用python写hello world的,肯定存在大量不懂机器学习不会pytorch的,这帮学生怎么办?


这老师要学生来做性别分类器,那他课上足够清楚地讲了性别分类器怎么做吗?人家世界一流大学斯坦福的cs231n要花半个学期的课时来讲的内容,这老师他就默认成随便看看就会的前置技能?


最后收作业时,老师只看得到那些效果优异、实验严谨、ablation study丰富甚至还卷了一个图形界面的优秀作业,然后深感满意:“我教的就是好,学生们收获巨大”,虽然其实他不用教这些大佬可能也做得出来。


那些拿到作业手足无措、试着自学发现这么短时间根本来不及学会、同时又看到身边大佬轻轻松松搞定的普通人们,就只能一个人默默地在没人看得到的地方哭了,这份心情这种老师大概永远也不会体会到吧。


讲课内容,作业内容,考试内容,彼此正交。


这就是世一大。



作者:孙恒
https://www.zhihu.com/question/471999381/answer/1996685082


谢邀,说实话问题我已经蹲了一下午了,终于等到了——更长远来说,继之前自动化系大作业上乎、计算机系小学期考试上乎(后者热度远低于前者)后,我就一直在等电子系上乎。现在它来了,只是本以为是《媒体与认知》或《数据与算法》,没想到是《计算机程序设计基础(2)》(笑)


我看到这个作业后也发了条朋友圈,除了多数人表示离谱外,有少数 AI dalao 表示这个作业并不难,调几个 Python 库即可云云(刚进 AI 相关实验室时无非也是如此)。但我觉得这么评价它是不合适的,这个大作业之所以让很多同学感到难以接受,个人认为关键在于以下几点:


  1. 对同学们基础能力预估过高。电子系本非以对软件编程高度依赖的院系,同学们大一时大多只接触过 C/C++ 的基础版(C++ 不讲 STL 不讲 C++11,大作业不少同学单文件完成),没有培养大家自学、自主找资料的能力,现在突然速成 Python 并完成大作业,对很多同学来说是非常困难的,也不像计算机系同学一样多少能找个室友抱大腿

  2. 忽略了 AI 领域前置知识确缺失问题。虽然“调 pytorch 随便写几层 CNN,不追求准确率” 这件事对 AI 圈的人来说好像确实只是个简单的 demo 水平,可是别忘了,大一小朋友们并没有接触过 AI 这个领域,他们不知道什么是 pytorch 什么是 CNN,相比之下贵系的人智导好歹真的有一学期的课告诉大家人工智能的发展史一章的课告诉大家神经网络相关的理论知识。我们经常说的 fly bitch 课程通常指上课讲了点儿理论后,不给具体的实验指导即让大家动手实践,而倘若一门课在毫无理论的情况下直接让人直接实践,这已经不是 fly bitch 了,这听上去更像是教学事故

  3. 忽略了算法知识缺失问题。有同学指出题面上也没有非要炼丹,用 SVM、最近邻之类的也可以,这一点我认可,但这并不代表这个作业就合理了,因为无论是 SVM 还是最近邻这些都属于需要了解过才能知道的算法,我们不能指望多数人具备“自己拍拍脑袋就创造出了简单算法”的能力,“人非生而知之者”

  4. 需求理解难度高。现在的任务和大家的预期相差太远,Python 除了用于人工智能外主要用于各种脚本、工具,它可以用于自动化很多本需要繁琐人工操作的事情,如果我来布置 Python 作业,我可能会侧重于爬虫、表格处理或者其他带有批处理性质的任务,这种任务的特点是多数同学们能够理解我们到底在干什么,如果没有 Python 我需要怎样的手工过程完成任务,有了 Python 我可以省略多少人力让它们自动化。可惜老师选择了多数同学毫无经验的人工智能领域的问题,同学们既不熟悉 Python,也不熟悉任务,更不熟悉任务所需要的其他工具,很有可能即便最后磕磕绊绊写了份代码,也不知道这份代码到底在干啥

  5. 老师对大作业的布置没有足够重视,缺少调研和实践。据说老师的原版是要求不允许使用第三方库的,这也是第三条“不允许直接使用开源项目提供的已训练好的模型或已写好的现有代码”的来源(实际上这个要求三是有些别扭的,尤其是后半句即是 “不允许抄袭代码”,这本就是不必明说的基本学术规范,尤其是它竟然和前一条并列了)。老师原本要求不允许使用第三方库,结合第二条,即是指望同学们找几篇 paper 直接造轮子开始复现。我已经可以想象老师预设的路线了:为了复现一篇 paper,去看 paper 的 reference 里的 paper,不断递归查找总能找出基于最原始的 Python 甚至是伪码的 paper(比如提出 pytorch 的 paper),然后不允许用这篇 paper 的开源成果,同学们自己造造轮子就好——这不由让人想起去年《数据与算法》课程中要求用 C++ 造 CNN 轮子的做法,或许某些老师就乐在其中?早从我经历了贵系小学期后,就经常说:教务应该规定,布置实验/实践型作业前必须由老师或助教先行完成一版能够取得 95 分水平的,否则就算是教学事故。我很好奇在老师看来是他自己还是它的助教能不调第三方库写神经网络?当然,最终助教还是阻拦了老师的疯狂想法,至少现在能用 pytorch 了


联系此前几起离谱作业/考试的事件,我还是主张这一点:教务应该规定,布置实验/实践型作业前必须由老师或助教先行完成一版能够取得 95 分水平的,否则就算是教学事故。注意这里我没有说 100 分,有老师认为清华大学这么多优秀学生应该总能出一些出师的,这我没意见,但是不能因为期待这少部分天选之子的出现而不把多数人当人看—— 一个人有成长的过程,有学习的曲线,人不能,至少不应该,被期望用一周的时间从知道什么是 Python,什么是分类问题,什么是训练集,什么是 CV,到完成一个人脸性别识别大作业


当然人也不该被期望在一周里从知道什么是 Python,什么是 HTML,什么是爬虫,什么是数据库,什么是中文分词,什么是倒排文档,到完成一个从爬虫到搜索引擎前后端的大作业。所幸几年下来贵系小学期课改总算是有了效果,可是无系小学期今年课改元年直接整这么一出,属实把我看呆了。


对了,既然提到了课改,顺便提提这门《计算机程序设计训练(2)》的课改情况:

  1. 这门课是大一下课程附带的小学期,大一下学 C++ 暑假做大作业,往年安排是小学期两周时间不上课,完成两个 C++ 大作业以考察对类的使用,对有多少 OOP 知识运用有量化标准,大作业选题一个是学生成绩管理系统(或类似管理系统),一个是自主选题,码量要求是 400 行以上,两周写不完可以往后拖,可以拖到暑假结束(不扣分),总的来说属于要求繁琐但工作量不大的作业。

  2. 今年课改,删掉了 C++ 的自主选题,改为拿两周中的一周上三次 Python 课(共9学时,1学时是45分钟),并加了 Python 三次小作业一次大作业。作为一个 AI 型大作业自然是不看码量了,但它也和“计算机程序设计基础”几个字渐行渐远了。老师倒也没有说大作业一定要这周交,但是对比之下往年的大作业真的是可以一两周写完的,现在这么改无形之间是暗示了很多同学暑假继续烧时间。我也知道多数同学付出暑假里几周的努力后肯定是可以搞定这些的——只是这合理吗


以下是我对文中提到的两个之前的离谱作业/考试问题的回答:

https://www.zhihu.com/question/420606617/answer/1467514941

https://www.zhihu.com/question/389457315/answer/1169611271



作者:小朱
https://www.zhihu.com/question/471999381/answer/1997701888


突然这个问题就火了,那我再来多说几句。


我觉得这种课程乱出作业,其实对学生挺不负责任。当然这背后也有一些客观原因,比如学校可能鼓励老师把课程往机器学习上靠,每门课需要多少教学成果,或者课程成绩上需要有区分度等等。之前跟学校的老一辈老师和青年老师都聊过,还是有很多老师明白教学对学生的重要性的,但是几乎每位老师都缺乏改进课程的动力。高校对老师的考核指标是经费和paper,改进课程本身是件耗时耗力的事情,也难怪我们的课程常常一片混乱。



原回答:

现在学生水涨船高,但python大作业弄成这样还是过分了。大一做这种作业,做不出来的被虐一通,能做出来的也不是老师教出来的。

对非CS专业来说,一门程序语言课,最重要的是学一个编程技能。而人脸识别这样的project,重点是机器学习知识,甚至可以用matlab写,跟用不用python没有太大关系。


感觉现在国内高校尤其是头部学校,普遍有个错觉,认为现在学生很强,就可以瞎提高难度,拔苗助长。殊不知这样不仅没有育人,反而还成了变相劝退。我在国外上课的体验是,虽然课程也很虐,但他们的作业和考试都是比较循序渐进的。比如一道手写机器学习的题,要用numpy写MLP的反向传播,那一定会先铺垫一道MLP反传的推导,同时提示可以用的公式结论。后来自己做了助教才知道,出这样结合课程难度,又有区分度的题是非常费时费力的。归根结底,还是我们在大学教学上花的时间太少了,苦了学生。


--- End ---


这个问题你怎么看?欢迎点赞和分享~



CVPR和Transformer资料下载


后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF


CVer-Transformer交流群成立


扫码添加CVer助手,可申请加入CVer-Transformer 微信交流群,方向已涵盖: 目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群


▲长按加小助手微信,进交流群

▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117146
 
289 次点击