小公司-医学图像算法岗面经
问:毕业时间、工作经历、换工作的原因。
答:xx年毕业,正式工作一年多,疫情回家太不方便,想换一份离家近的工作。
问:现在的工作主要做什么?以后想做什么岗位?
答:课程产品。想做技术。之前的项目经历和这个岗位jd比较匹配。
问:还记得项目内容吗?讲讲。
答:开始讲项目的内容,项目分了两部分。
问:项目背景是什么?
答:就是为什么做这个项目。我们实验室本身有基金项目,和医院有合作。
问:项目最终产出了什么成果?
答:毕业论文和专利。检测的acc是85%和分类的查准率是75%
问:数据是怎么收集的?项目是你自己做的吗?
答:(讲了一大堆。。。)
问:现在做什么工作内容?
答:两部分,一是协调各部门资源,完成一个产品;二是新产品研发。找人,产出内容,内容包括。。。
问:技术细节比较少,像产品经理?
答:是的,但也有代码工作,项目优化,目标是代码要比公开代码效果好,产出课程内容。
问:技术方面,挑一个最熟悉的网络讲。
答:讲deeplung那块儿做的工作。检测。
问:从收集数据开始讲,包括困难,和医生怎么沟通。
答:去采数据之前,和老师沟通好,要什么层厚,时间范围,必须要有病理等等细节。去医院跟医生沟通,我们要做什么事情,需要什么数据。医院数据有病历、图像、病理等不同的系统。先在病历系统筛选初步数据放在excel,然后去另外两个系统查看是否都有。一个人看一个系统。
问:为什么分开看不同的系统?
答:因为两个系统都要有数据,才能要这个病人数据。
问:为什么不每个人筛500条?
答:因为两个系统可以快速导出有没有这个数据,并不是一条一条查(其实是我记错了,实际是每个人分一半查的,编了一下)接着把病例的数据采出来。数据格式分别是dicom和图片。现实遇到的问题xxx,最后采到了500+条数据。数据在硬盘和光盘进行了两次保存,带回实验室做研究。deeplung用的训练数据是lidc,和我们的数据差不太多,可以直接用。开源代码里预处理里面缺代码,找了luna2016比赛的预处理功能代码,调整后加入。采回来的数据也进行标注,标准是病历和病理。
问:这个过程优化可以做在哪里?潜在的问题在哪里?
答:工作都是按老师的要求去做,太小或者太大的结节不要,这块可以研究一下,是可以检测出来的。
问:病理不会告诉病灶是哪一个对吧?
答:病理分为穿刺和手术后病灶。大致会说哪个位置,大概的大小也有,有些会有特殊说明,能找到对应位置。
问:标注了多少数据?
答:几百个。不仅标注位置,还要标边缘。实验室研究需要这些标签。
问:识别完了之后怎么做?
答:分类用resnet,我的数据一部分做训练,一部分做测试。查准率75%。
问:分了哪几类?
答:良恶性两类。
问:后续还有接着做吗?
答:PYQT写了一个软件界面,把整个工作包在一块儿,申了个专利
问:专利讲什么?专利要有两年以上?找代理还是直接提交?
答:就是整个工作。毕业之前已经收到修改意见。导师负主责,我不太清楚。
问:技术方面有什么经验分享?、
答:检测那块自己的数据可以加进去一起训练。后面的分类网络换了一个,但是没进行针对性优化。这些都可以花时间做。
问:上的课程跟图像有多少关系?
答:数字图像处理、随机过程、信息论,这三个印象比较深,研究生只有研一有课,记不太清。
问:开发用什么系统?
答:没有要求,我自己用win和linux
问:linux有多熟
答:一年
问:跑什么命令
答:进入路径,打开,修改。
问:终端打开?用什么编辑器?
答:深度学习方法做用pycharm比较多,linux上用编译器比较少。
问:问个数学问题。n个台阶,每次走1步或者2步。
答:力扣题。n=1时有1种,n=2时有2种,n=3时有3种,n=4时有5种,斐波那契数列。
问:线性代数问题。特征值的定定义?
答:Ax=mx,就说m是A的特征值。
问:特征值的物理意义是什么?
答:不知道
问:讲讲BN层
答:数据必须要做归一化,很可能训练不出来。在batch里做归一化。
问:特征丢失了怎么办
答:很多特征都是冗余的,有用的留下就行。
问:栈先进后出,实现栈进一个元素和出一个元素都是常数时间复杂度。加强版功能:求栈的最小值也是O(1),例如:数组[3214]
答:一个栈用来pop和push,辅助栈取最小值,放的时候根据辅助栈有没有,如果辅助栈没东西,就同时push一个,如果有东西,判断大小,push的小,就再push一个最小的,push的大,就push辅助栈[-1]那是个最小值,这样pop的时候,两个栈一起pop。
问:传统机器学习方法了解。
答:看得比较多,kmeans,knn,看项目需求吧。
问:讲一讲kmeans
答:kmeans聚类算法,k是聚类的类别数,相当于一个超参数,事先给定或者有个肘什么法帮你选一个比较好的k,算聚类数和损失之间的关系,在斜率比较大的地方的k比较好。具体做法是,例如二维数据情况下,我要聚3类,随机选三个点,算每个点和簇的误差,比如定义为距离平方,把每个点聚类到最近的类别中去,求类别中心点的平均作为新的中心,这是第一遍。迭代n次之后,每个类内误差接近某个固定值不变,就可以结束。
问:kmeans时间复杂度?
答:O(tkn),n是点的数量,k是类别数,t是迭代次数
问:为什么这个算法一定能够终止?
答:一般是定迭代次数,或者误差到一定接受范围内就停止。
问:为什么一定能终止?
答:求平均过程的过程把误差越拉越合理,不可能越来越大。
问:再说严格一点。
答:我觉得这很直观
问:概率模型了解吗?贝叶斯、随机场?
答:听过贝叶斯和随机场
问:图像问题,背景黑色、前景白色,倾斜椭圆,求其长短径和中心。
答:形态学方法是能想到的。研究生阶段主要做深度学习方法,研一学习数字图像处理,所以想到形态学方法,Hough检测。实际工作中,搜索引擎都能解决。
问:今天问的问题搜索引擎都能解决。如果不用算法,这个问题怎么做。
答:按照我的经验,会把它分成预处理和功能处理过程。
问:不需要预处理,就给你一个矩阵,没有包可以用。
答:那就数格子。
问:怎么数,求长短径和角度
答:明确边界,长径就是椭圆内部最长的线段,不需要先找中心。明确边界比较重要。
。。。(非要我答这个,大概五分钟,很煎熬)
答:我不知道
问:两根一样的不均匀绳子,一根烧完要1h,怎么测量出15min
答:一端烧要1h,两端烧要30min,一开始点燃第一根两端和第二根左端,在第一根烧完的时候,点燃第二根右端。15min=第一根烧完开始到第二根烧完结束
问:可以测量7.5min吗?
答:可以再给一根绳子吗?
问:不可以。
沉默一分钟,跳过了问题先聊公司福利之类的。。。
聊了一堆,之后,又问我怎么算7.5min
答:把第一根绳子对折两次,从两端开始烧。
问:不均匀,一段烧完了,另一段没烧完
答:是不均匀,把绳子拧成一股,从两端开始烧。
问:拧成一股也不行
答:哈哈哈哈。。。。应该可以吧
问:闲聊点薪资要求,再讨论7.5min
答:balabala。。。
然后就没讨论7.5min了,终于结束了。总共用时1h45min。