文章目录
- 《A Survey on Breaking Technique of Text-Based CAPTCHA》
- 《Selective Learning Confusion Class for Text-Based CAPTCHA Recognition》
- 《A Low-Cost Approach to Crack Python CAPTCHAs Using AI-Based Chosen-Plaintext Attack》
- 《Captcha Automatic Segmentation and Recognition Based on Improved Vertical Projection》
- 《A Multi-label Neural Network Approach to Solving Connected CAPTCHAs》
- 《 Verification CAPTCHA Based on Deep Learning》
- 《A CAPTCHA recognition technology based on deep learning》
- 《Recognition of CAPTCHA Characters by Supervised Machine Learning Algorithms》
- 《Using Synthetic Data to Train Neural Networks is Model-Based Reasoning》
- 《Chinese Character CAPTCHA Recognition and Performance Estimation via Deep Neural Network》
- 《A machine learning attack against variable-length Chinese character CAPTCHAs》
- 《A generative vision model that trains with high data efficiency and breaks text-based CAPTCHAs》
为了了解国际形势,先来篇近几年的综述报告:
《A Survey on Breaking Technique of Text-Based CAPTCHA》
基于文本验证码的破解技术综述
2017
基于文本验证码的主要特点
- 足够大的数据集,使其足以抵抗暴力求解
- 具有变形,粘贴,重叠等字符。达到不容易分割的目的
- 同一字符的大小,宽高,位置,字体不同
- 具有大量噪声
各大网站种类以及特点汇总
主要内容
- 验证码的识别,主要针对于验证码是否切割而分为两种派系
- 早期文本验证码的破解技术主要是“预处理+分割+识别”。而随着验证码字符的粘连,现在出现了更多的处理框架比如:预处理+识别+后处理、预处理+分割+组合+识别,预处理+分割+组合+识别+后处理
- 本文主要是分别对预处理,分割,组合,识别,后处理等各大模块的研究进展进行了一个描述
- 每个模块的研究情况如下:
当前形势存在的一些问题以及发展方向
- 目前市面上还有一个标准的数据库,进而没法对领域内的各种方法进行一个统一的评估
- 目前只有在训练集和测试集属于同一类型下,才能够有效的识别
- 拒绝的概念还未被熟知
《Selective Learning Confusion Class for Text-Based CAPTCHA Recognition》
2019
基于选择性学习的文本验证码识别
拟解决的问题
由于深度神经网络对混淆类的较低的识别准确率,而提出的一种选择性学习混淆类的新方法
大多数DCNN有统一处理训练样本,且在训练过程中不断迭代,并且随着误差率越来越小,趋于稳定后停止训练(其实这里放弃了学习混淆样本的能力,因为混淆类别对降低错误率没有影响)
内容概要
总的来说的话,就是建立了一种新的架构SLCC(Selective Learning Confusion Class),将混淆样本和普通样本分开,训练出两个模型,然后再结合。
针对混淆类的问题,开始的时候,文中提到了一种方法Dropsample:
简单的来说就是通过样本不同类别的置信度,动态改变训练集中每个样本取出用以学习的概率分布。(具体参看论文:W. Yang, L. Jin,D. Tao, Z. Xie, and Z. Feng, ``Dropsample: A newtraining method to enhance deep convolutional neural networks for large-scale unconstrained handwritten chinese character recognition’’ PatternRecognit., vol. 58, pp. 190-203, Oct.2016.),但是这种方法吧普通训练集和混淆样本结合放在一起训练,这样会很大程度上影响收敛速度,以及模型准确性。
- 提出了一个具有两级DCNN的架构:全级DCNN和混淆级DCNN。
- 用全级DCNN的输出构造混淆关系矩阵以显示类之间的混淆关系
- 提出了一种分区算法(根据混淆矩阵,将一些有混淆关系的类别合在一起,形成新的样本集合),每个样本集对应一个新的混淆级DCNN。
- 为提高混淆级DCNN中混淆字符的识别准确性,提出了训练和验证交互式学习算法。
- 将两个阶段的输出结合起来作为最终识别结果。
结果:
作者用了两种定义的混淆集合方法,第一种是把所有混淆集合放在一起(SLCC-A),第二种是把这个大的混淆集合分开,就是上述的说的每个混淆子集合中的所有元素都存在混淆(SLCC-M)。得到集合如下:
错误率与迭代次数的变化如下:
一些细节问题
- basic DCNN采用的网络结构:leNet-5
- 数据集的来源:QQ and BotDetect CAPTCHA,这两种数据集分别得到了1000张(人工打码),然后再根据文中提到的针对非均匀数据集的处理方法,得到比较均匀的数据集。
- 其实生成的混淆集合不会很多,