想请教大家一个问题, 我在使用 cnn 卷积神经网络分类数字 0-10, 训练完后测试效果还不错, 但有个问题, 当我传入一张没有内容的图片, 又或者传入一张不含数字内容的图片, 这时网络还会把它们归类到数字, 这就让我很头疼了, 于是我在网上找了个 ocr 进行测试, 发现他们的 ocr 能知道我传入的图片中没有内容, 即使图片中乱涂乱画也能识别出没有内容, 请问这是怎么做到的, 请帮帮我!
1
Andy00 2020-04-24 17:35:30 +08:00 via iPhone
多加一个分类的类别,比如说设置成 null 表示没有内容的图片,然后加一些没有内容的图片重新训练一个模型
|
2
Andy00 2020-04-24 17:36:56 +08:00 via iPhone
同理对于乱写乱画的也是单独设置一个分类类别,找些样本训练一下,乱写乱画和 null 类别混在一起可能效果不会好
|
3
heyhumor 2020-04-27 14:02:32 +08:00
你的分类只有 10 个,当然没有 10 个之外的结果了。
|
4
RhysSiyan 2020-04-29 22:52:34 +08:00
你说的问题在 Machine learning community 中叫做 Open Set Recognition. 如果你只是想找一些解决方法, 可以搜些这领域的论文的实现. 然后我简单介绍下我了解的几个思路,
|
5
RhysSiyan 2020-04-29 22:59:01 +08:00
emm V2EX 不能修改回复的嘛.... 我接下刚才的回复, 一个思路是 n+1 类的 softmax head, 这个如 Andy00 所说, 但这个的问题是其他类的图像种类是无穷无尽的, 你寄希望模型能把这无穷无尽的 pattern 都映射到其他类上是不太现实的, 当然如果你的应用场景中其他类模式比较单一要求比较低这个也没啥问题. 另一个思路是继续保持 n 类的 softmax head, 但是使用阈值来判断样例是否是属于其他类.(最 naive 的做法是所有类使用一个阈值, 沿着这个思路改进就是每个类都有一个阈值, e.g. openmax 中的 meta recognition 方法). 我没做过这领域的 survey, 只是简单介绍一下.
|