1、用自己的数据,自己搭建模型 ----> 缺点:数据集小【1】,训练出的模型不好,且速度慢.
【1】解决数据集少的问题---->用图片增强的方法
2、用预训练模型 ----->使用别人训练好的卷积基,用自己的数据集去训练分类器 ---->准确有所提升,但是数据集还是少了【1】,并且运算速度很慢【2】
【1】解决数据集少的问题---->用图片增强的方法
【2】因为预训练网络的层很多,重复计算的地方也很多,因此可以直接用卷积基先提取我们自己图片数据集特征,再建立分类器,将前面提取的特征输入到分类器进行训练,速度得到提升
(ps:但是【1】【2】方法是不能结合的,因为用了图片增强相当于每个图片都增加了特征,都是不同的。)
好了现在用预训练模型不仅提高了速度和准确率,那么还有上面继续提高准确率的方法呢?
那就要回到我们的实际任务中来讲,我们不知道预训练网络别人训练的时候是什么任务,比如他们是要分猫狗,而我们是分飞机火车,任务是不一样的(实际任务不仅与输出分类器有关,还与卷积基的顶层卷积层有关,顶层卷积层随着视野增大,已经抽象出和输出层类似的东西了,如已经提取了猫和狗的特征)。所以是否还能从顶层卷积层入手提高准确度呢?
当然是可以的,因此提出‘微调概念’
即调整卷积层的顶层和输出分类器,与2不同的就是要多用自己的数据去训练卷积层的顶部卷积层。这样的准确率会更高。
另外,又出现问题是,数据太少?那么怎么办呢?------图像增强呀
但是记住用了图像增强,就不能先用卷积基提取特征!
所以又要节约时间,又要准确度高,好像不太好实现吧。。。。
另外说到分类器,就要说到输出层,好多人搞不清楚输出层到底怎么弄,这里总结一下
回归问题 ------ 输出一个连续的值 — 没有激活函数
二分类问题 ------输出一个概率值 — sigmoid激活
多分类问题 ------ 输出N个值 ----- softmax激活
多标签问题(比如人,他是个男人 也是北京人 也是清华的)--------用二分类和多分类来组合输出。