0%

反正跑数据也要等待,不如来写几篇博客,这也是我第一次参加这样类型的比赛,做一下相关经验的总结。在天池的2021广东工业智造创新大赛,智能算法赛:瓷砖表面瑕疵质检中,提供了基础的 json 数据和文件,这里介绍三种预处理方式:

  1. 普通数据制作 COCO 数据集
  2. 普通数据制作 mask 数据
  3. 因图片尺寸过大显存溢出,所以需要切割图片使得切割图片包含目标区域
  4. 自适应切割
  5. 类别平衡处理

在本科建模学优化的时候,老师说复杂情况下不可能求出目标函数的最优解,用优化解代替就可以了,当时我还信了。直到研究生『工程优化』学了填充函数法,才知道在『多决策变量、单目标函数』的复杂情况下,理论上是可以求出目标函数的最优值的。

而对于『多决策变量、多目标优化』的问题中,还是进化算法等方法较为实用。以遗传算法为例,直接一波种群撒到可行域中,这样会比传统方法便捷一些。

在很久之前,看过粒子群算法等相关的以概率收敛的优化算法。当时那个破教程写的又臭又长,丝毫没看懂。今日考试重温了一下,原来是这么简单。八点半考完的,闲的没事于是手动实现了粒子群算法。之后考虑在本文中添加遗传算法、模拟退火这两个主流的碰运气的优化算法。

这类算法被优化课程的老师嘲讽了一番,缺乏严格的推导证明和参数的解释,大多是以科学的方法去碰运气,在解空间内进行搜索。

自从学了『工程优化』这门课程,也意识到优化是一潭很深的水。只是简单的将几个目标线性加权优化,或优化完一个目标在优化另一个目标是很愚蠢的做法,亲身试验后的确发现这是最差的解法,解会出现不收敛、随机性、震荡等各种情况。如果在神经网络中恰好遇到了多任务学习的问题,且两个问题相互制约,那么可以考虑将多任务学习转换为多目标优化,融合成最终的一个loss函数,这会比线性加权好上很多。本论文发表在2018年的NIPS上,个人认为具有借鉴意义和开创性工作,所以记录于此。

这是我第一次开发如此大规模的程序,论文的作者也提供了算法的C语言还是C++版本的软件来?我记不清了。但对于我们来说,Metis只是图划分的上游任务,且不需要完整的Metis算法,只是需要它融合图的一部分,而不需要它的图划分阶段。下游任务必须要用python来处理,考虑到数据结构和数据类型对接的方便性,因此我们考虑使用python来复现Metis算法。还有一点,使用别人的软件,万一结果不好怎么办?万一自己想改算法怎么办?现存的库都是直接返回划分结果,但我们只想融合,自己开发还是灵活。

学业繁忙,作业真多。好久没来写博客了,来水一篇。注:本文没有任何引战的意思,不要在评论区对别人强行安利『自己喜欢,自己认为好,但别人可能根本不需要』的东西,没意思。每个人的想法都不一样。

  • windows: 只保留word和excel这类我要向世界妥协的软件;
  • ubuntu:入手的第一款linux系统,活在虚拟机里,装软件遇到依赖困难好感全无,之后不了了之;
  • manjaro:入手的第二款linux系统,活在硬盘上。配合gnome桌面环境奔腾了一年。作为主力开发系统,包含了所有的开发工具。再一次滚动更新中坏掉,懒的修了,拿出了关键文件,将系统格掉;
  • Arch:入手的第三款linux系统,活在硬盘上。正在作为主力系统的路上,最近课多,没折腾。