-
Notifications
You must be signed in to change notification settings - Fork 740
Image recognition
宅教授 edited this page Oct 2, 2019
·
20 revisions
我的目标是从根本上排除人工识别(这也是我为什么在简介中写的是自动识别)。
如果有人能给我一堆验证码,并告诉我说,这都是让寻找打字机的。即使我不知道什么叫打字机,什么不叫打字机,但也可以根据统计学(抱歉,我并不知道这样称呼是否准确)来寻找打字机,不是吗?因为这里某样东西是打字机的概率高于1/8
,而是其它某样东西的概率仅仅只有1/80
。将以此思路获取的结论放到整个验证集上的正确率达到91%
。这个结果是根据10万条验证码统计的,如果100万条,1000万条呢?
我把统计学的结果命名为images.npz
。
- 改用更准确的文字识别器可使正确率提到
93.8%
- 同时改用更好的哈希算法可使正确率提到
96.7%
让统计学专家来教卷积神经网络识别图片(我希望专家能提供更大的训练集,超越人工提供的训练集,让其仅仅当作验证集)。
~$ ll -h captcha.npz
... 149M ... captcha.npz
~$ python -c "~;print(t['images'].shape);print(t['labels'].shape)"
(11280, 67, 67, 3)
(11280, 80)
来源:https://www.kaggle.com/libowei/12306-captcha-image
将其转换为captcha.test.npz
文件。
~$ ll -h captcha.test.npz
... 148M ... captcha.test.npz
~$ python -c "~;print(t['images'].shape);print(t['labels'].shape)"
(11794, 66, 66, 3)
(11794,)
让卷积神经网络从captcha.npz
中学习。在验证集上的正确率浮动在99%
。
由于训练集来自于统计学,而不是人工识别的,所以需要给定一个可信度。毕竟,对于出现次数少的图片,统计出来的结论可信度也不够。在实践中我根据统计值来给每一个图片提供权重,来表示其可信度。对于可信度低的图片,即使识别错误扣分也不多,当然答对了加分也不多。我觉得这是有必要的,但是我不清楚我提供的权重有多少效果。
数据的下载地址:
- https://pan.baidu.com/s/1OsBIBM4rl8EnpZt7VYiD9g
- https://drive.google.com/drive/folders/1GDCQyaHr36c7y1H-19pOKjc_EdAI1wn0
根据训练集来验证各相似图搜索算法在此领域的能力。
-
avhash
错了8次,将整体压缩到6069个哈希值 -
phash
~ 0次,~ 6234个 -
phash_simple
~ n次,6533个。看来不能图简单呀 -
dhash
~ 0次,~ 7120个 -
dhash_vertical
~ 0次,~ 7244个 -
whash
留给大家的作业…
错的意思是指把两个不同类型的图片压缩到同一个哈希值。