ディレクトリ
A. CRNNはじめに
キー:オリジナルの論文は、クエストは確認しなければなりません!!!英語よく見ては、直接、元の論文では、情報を見つけるためにどこか分かりません。英語だけでなく(AUTHORなど)は、中国のデータを見て、その後を見て、元の論文。
簡単な紹介
CRNN名は次のとおりです。An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
彼はあることを、エンドネットワークのは、実際には、厳密な意味ではなく、認識ネットワークのみ。
ネットワークのエンドの厳密な意味:Fast Oriented Text Spotting with a Unified Network
ショーの下を参照してください。CRNN
文字認識に検出された文字を取得するために、ネットワークを入力した後。
最後は、それが何を意味し、厳密ではないでしょうか?
図1-2は、従来の文字認識を示し分割文字認識のそれぞれに行かなければならない(このようなものが記述されていない、従来の方法は非常に簡単です)
図CRNN直接入力の結果が得られています。
ネットワーク
図1-3に示すネットワーク構造にCRNN。
- 特徴抽出
読者がご覧理解することができ、出力順次に通常の画像抽出、抽出された特徴、RNNデジタル認識トレーニングを
- BLSTM
前記入力BLSTM、表される各配列の出力値(この値は可能表す値の配列である)、出力は、それぞれの可能な値の発生確率に等しいソフトマックス動作です。
- CTC
それは、損失、実際の出力確率算出部は、特定後で説明確率に対応します。
- 革新
- 双方向BLSTMは、認識配列の効率を特徴とする画像特徴抽出しました
- 音声認識は、質的な飛躍であるCTC-LOSS画像を、導入され
- 不足ポイント
- ネットワークの複雑さ、特にBLSTM CTCと計算することが理解しにくいと難しいです。
- 大きな角度値のシーケンス機能の使用を特定するのは困難です。
局所特徴のII。抽出CRNN
図2-1仮定は、(機能が確かに快適検索するための特性図ではない部分である)特徴抽出します
画像特徴抽出VGGは、共通の特徴マップされた後のシーケンスを形成しており、その後、分割は、上述しました!
如果你的文字很斜或者是纵向的,那就得把特征竖向划分序列了!
三. CRNN局部之BLSTM
基本原理不懂读者可以看看这个教程
懂了原理这部分还是比较简单的(理解简单,实现太难了),笔者这里只介绍几个使用过程难理解的点
- RNN输入序列数量
从上图可以得到的是X1---X6,总共6个序列
- RNN的层数
从上图3-2可以看出,是由五层网络构成
- RNN神经元数量
这里引用知乎大神的一个图,上图中序列为4,层数为3层(当然不加输入和输出也可以说是1层,这里按正常CNN去说就是3层了)
从图中可以看出每个序列包含一个CNN,图中的隐藏层神经元数量为24个,由于RNN使用权值共享,那么不同的神经元个数就为6个。
- 单个序列长度
以上图知乎大神的图为例子,每个输入序列长度8
假设这个网络是一个RNN识别手写数字识别的图,那么图像的宽为4,高为8
注意:输入序列的数量和输入序列的长度和神经元个数无关!!!这里想象RNN即可理解
- BLSTM
笔者只是推导了单向的LSTM网络,而没有推导BLSTM网络。
其实无论RNN如何变种,像现在最好的GRU等,无非都是在单元(unite)里面的trick而已。
具体公式推导,就是链式求导法则!建议先推RNN、然后LSTM、最后不用推导BLSTM都明白了
四. CRNN局部之CTC
关于CTC的描述网上很多,也讲解的比较清楚了,这里主要是说一下我笔者看原理时候的几个难点(弄了好久才想明白)
关于CTC是什么东西?
- 让我们来看一下正常分类CNN网络:
这是鸢尾花分类网络,其中输入一张图像,输出是经过softmax的种类概率。
那么这个网络标签是什么???
标签的制作都是需要经过Incode
(分类的种类经过数字化编码),测试过程需要Encode
(把输出的数字解码成分类的种类)
这很简单,读者应该都理解,代码为了计算机能看懂,编码就是神经网络能看懂。
- 那么RCNN如何编码呢?
假设有26个英文字母要识别,那么种类数=27(还有一个空白blank字符)
假设CNN输出以50个序列为基准(读者这里看不懂就去看RNN识别手写数字识别),序列太大训练不准,识别结果会漏字母。序列太小训练不准,识别会多字母。
- 打个小比喻
假设CTC是一个黑盒子,它能把输出那么多序列变化为一个序列,这样就能和CNN分类一样计算Loss了。当然不会那么简单,CTC还是比较复杂的,后面具体看这个黑盒子如何工作的。。。。
CTC理论基础
注释:这里笔者就不进行详细的描述了,感觉别人比我写的更好:非常详细的CTC力理论
在这一章,主要针对笔者遇到的重难点进行介绍:
- 训练--前向后相传播
本来还去看了马尔科夫的前后向传播的理论,没怎么看懂(数学基础太差)
针对本文的CTC前后向传播还是比较简单理解的
其实这里可以理解为动态规划的方式进行的,因为其使用递归的方式,以一个点为中心,向前和向后进行递推,以动态规划的方式理解就很简单了。。。。不懂的读者可以刷leetcode,做几题就有感觉了
- 测试--CTC Prefix Search Decoding和CTC Beam Search Decoding
最简单的搜索追溯算法:
每个都列举最后计算,可以看出来是指数级搜索,效率肯定不行的
貪欲アルゴリズム + 動的計画 --- CTCプレフィックス検索デコード:
最初のステップは、マージ操作をすることです:
第2段階出力最大確率:
CTCプレフィックス検索復号アルゴリズムを展開--- CTCビームサーチデコード
- CTCプレフィックス検索デコードは、貪欲アルゴリズムは、最適解をなぜ得ることができ属していますか?
私は上記のタイトルをよく見るが、CTCプレフィックス検索復号化は、特に、動的プログラミングを追加した、動的なプログラミングアルゴリズムは、最適解が属しています。
CTCアルゴリズムの前提であるため、互いに独立シーケンス、次いで、これ最大電流配列、最大全配列。
注:シーケンスではなく、最大の単一のシーケンスよりも、合併後最大規模でした!!!それが最大の単一のシーケンスである場合、これは別の貪欲アルゴリズムです。
- 配列間のCTCはまた、互いに独立して、テキスト配列を有する計算することができ、なぜ、ああ間の一連のワードが存在しなければなりませんか?
これは、ネットワークがBLSTMを使用して、ネットワークで再見しなければならなかった、物事のこのシーケンスは、CTCがシーケンスを使用した後、既に出力され到達し、使用されています。
人々は、ネットワークRNN + CTCのデザインを賞賛する必要があり声が最も早い使用します。
実際には、CTCのシーケンスがある場合に、考えるように振り返って、前方および後方確率は、遡及アルゴリズムの唯一の最も簡単なの(互いに独立して)用語マルコフモデルを使用することはできません、とCTCプレフィックス検索デコードを使用することはできませんその効率は広く、それを使用する方法、非常に低いのですか?