最近一段时间找实习的经历真的是艰难困苦,大家对机电这个专业本身的认知度就不高。确实机电从名字上看是机械和电子,好像是偏硬件更多点,但实际上这个专业的核心应该是感知和控制,像自动化一样,怎样更好的结合软硬件是我们学习的内容。
像我们实验室现在偏向感知更多点,就是使用机器视觉去感知环境,进行图像处理,让控制器做出判断。但是计算机学院有了专门的模式识别,做这个更厉害一些。我们也只能更加努力的去学习弥补差距。
寻找实习的过程是一个了解当前企业,用人单位更需要什么技术的最直观的一种方式。实验室里所学的,所用的不能和社会脱节,毕竟小硕大部分去搞工程了,博士才安心在实验中做研究。
不得不说说最近的电话面试。电话面试其实要比当面面试更难一点。电话面时很容易出现因为听不清楚,或者听不明白问题(不像面试时可以用纸笔,画图,准确的描述好问题)导致一个问题就打蒙的情况,然后剩下的也就没什么好的发挥了。只能提高自己的抗压和理解能力,然后不清楚的问题要多问,还是能理解题目更主要一点吧应该。。。还有就是好好准备一下自我介绍,最好能介绍的完善一点,不要让面试官问更多边角的问题,主要集中在技术上,想到哪写到哪。。。加油啊少年!
对于图像处理里深度学习这一部分内容来讲,企业现在所需要的是小的网络模型,可以将其布置到实际的现场环境,例如手机,嵌入式设备当中去,也就是边缘计算,不再需要将数据上传到云端,这是现在的一个趋势。但是话又说回来,如果5G普及了的话,上传可能也方便很多,不再是问题,边缘计算还重要么,也就剩安全一个特点了?反正这是现在的两个趋势。
面试官现在的关注点通常在于SSD,YOLO这样的快速实时目标检测算法,前置网络通常为mobilenet,shufflenet,darknet19,darknet53这样的小型网络,有可能部署到移动端或者嵌入式设备中。如果有模型压缩的相关知识,更容易受到面试官的青睐。
同时我也受到了同学的启发,我觉得他说的非常有道理,天天看旧的网络,虽然比较经典,但是在上面进行一些简单的改进没什么大的意义,实际操作一次,写明白改进代码搞清楚逻辑就行了,更多的是要看最新的论文和代码,了解现在的前沿是什么样的,更能开阔眼界,更能提升自己。代码可以通过几个月的集中训练得到提升,但是知识和眼界是一个漫长的积累的过程。我也觉得这种能力和学习能力更是研究生应该掌握的东西。(虽然研究不出来,但是看的够多,用的实验的更多也很好)
one-stage的目标检测网络复习完了,小网络mobilenet,darknet也复习了,所以接下的时间,两个任务:1.系统的学习模型的方法理论和操作(剪枝要重新整理一下)。2.学习新的网络,像最近很流行的anchor-free的方法,都没有认真静下心来看看。
这篇博文就从模型优化开始学起,操作理论结合着来。
首先Tensorflow中提供了模型压缩工具Graph Transform Tool,https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/graph_transforms/README.md#using-the-graph-transform-tool
介绍里说的很明确
完成模型训练并希望将其部署到生产中后,您通常需要对其进行修改以便在最终环境中更好地运行。 例如,如果您要定位手机,则可能需要通过量化权重来缩小文件大小,或者优化批量标准化或其他仅限培训功能。 Graph Transform框架提供了一套用于修改计算图的工具,以及一个可以轻松编写自己的修改的框架。
本指南分为三个主要部分,第一部分是关于如何执行常见任务的教程,第二部分是涵盖所有不同转换的参考,以及适用于它们的选项,第三部分是创建自己的选项的指南变换。
需要使用bazel编译源码,在前几篇博文中配置过tensorflow的c++接口,所以源码和工具都是现成的,而且都是配套的。看起来编译的是不同的部分,应该可以直接编译一下试试。希望不要把我的c++接口搞崩了,重新配一次还是有点麻烦的。
依照官方说明进行编译:
bazel build tensorflow/tools/graph_transforms:transform_graph
这一步需要进行很久。很好,编译完后c++接口依旧可以使用。
接下来进行测试,版本不一样,使用的测试指令有些许的不同。我是用官方提供.pb——http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz先进行测试。代码如下:
bazel-bin/tensorflow/tools/graph_transforms/transform_graph
–in_graph="/home/omnisky/gonqimin/test_graph t