之前用命令行进行finetune感觉不错,英伟达好不容易搞出这个可视化工具,结果不能进行微调岂不是滑天下之大稽?
首先解释一下finetune是什么,比如说有一个不知天高地厚的小团队要做另外一个数据集的分类。但是样本只有200多张。这样的数据量是不可能做到很精确的分类的。突然这个团队想到ImageNet有一千万张图片,有土豪已经训练好了。拿这个训练好的模型改吧改吧直接用在当前的应用场景,这就叫做微调(finetune)。
这就好比人的视觉系统,每个人的视网膜结构,一直到神经系统结构,都几乎一样,正常人看到的东西在大脑中成像也都是完全一样的,而个体之间的差别仅仅在于中国人看到一只猫的照片第一时间反应这是“猫”,而一个英国人第一时间反应这是“cat”。这是在高级脑功能区域才会有的个体差别。而进行微调(finetune)的过程就是训练高级脑功能区域的过程。上帝造人花了几百万年,而人类把一个婴儿培养成人只需要十八年。正是这个道理,我们训练一个系统,不需要做上帝的工作,只需要培养一个婴儿就好。这样不仅可以大大减轻工作量,并且可以有很高的精度,减少对样本数量的依赖。
回到图像处理,我们在分类或者分割的过程中,都难免会遇到样本数量不够的情况,这时候我们必须使用这种方法。以分类为例,传统微调的前提是必须和别人用同一个网络结构,当然最后一层的结构可以做出对应的修改,因为我们没必要有1000个分类,有时候两个就好。其它层用别人的参数,用我们的数据进行训练得到结果,就是微调。
这里用digits为例来进行一个图像分割的微调(finetune),之前在deep retinal images understanding博客里面已经用命令行进行了实验,实验条件就不在赘述。就是模型参数数据集都有了,只要训练一下出结果就好。