Paper · 2017-11-12 · cs.CV
AON: Towards Arbitrarily-Oriented Text Recognition
Recognises words in natural images whatever their orientation or curvature. Four 1D feature sequences (left-right, right-left, top-bottom, bottom-top) are weighted per position by learned placement clues, fused, and decoded by an attention LSTM, trained end-to-end on word labels. Author-reported: best lexicon-free accuracy on irregular CUTE80 (76.8) and ICDAR15 (68.2), comparable on regular sets.
Convolutional recurrent network (CRNN)Attention mechanismRecurrent neural network (RNN)text-recognitionocrattention-decoder
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Reading text in a photo is harder when the letters are not lined up horizontally: they may be tilted, seen at an angle, or bent around a curve. Most text readers assume the letters run from left to right, so they fail on such images.
This paper's idea is to look at the image in four ways at once: along the rows in both directions, and along the columns in both directions. A small learned network then decides, for each character position, which of those four views to trust. The combined features go to an attention-based decoder that writes out the letters one by one.
The model is trained only from images paired with the word they show. It needs no boxes around each character, which makes it cheaper to train than some earlier methods for irregular text. The authors report that it does well on curved and angled text and stays competitive on ordinary text.
TL;DR
- Input: a cropped word image; output: the character string, with optional lexicon constraint §3.5.
- Core change: four directional feature sequences, weighted per position by predicted "placement clues" and fused with a filter gate §3.2, §4.1, §4.2.
- Trained end-to-end from word-level labels only, with an attention LSTM decoder §3.4.
- Author-reported: best lexicon-free result on CUTE80 and ICDAR15 among the compared methods, and close to the field on regular benchmarks §5.3, §5.4, tab. 1, tab. 2.
Problem
Earlier attention-based recognisers read a text image as one left-to-right sequence of features §2. The authors report that such models trained directly on irregular text are hard to optimise because character placement varies §1. Rectifying the text first with a thin-plate-spline spatial transformer is the alternative they test, and they report that it is hard to train without geometric labels and does not rectify strongly oriented or curved text well §1, §5.3, fig. 5. The method by Yang et al. handles irregular text but, the authors state, needs character-level boxes §2, §5.3.
Method
The network has four parts §3, fig. 3:
- A basal CNN of four convolution blocks produces a square feature map §3.1.
- The arbitrary orientation network (AON) builds four sequences of features from that map and a set of placement clues §3.2, §4.1. The horizontal network (HN) pools the height to 1 with five shared convolution blocks, then runs a BiLSTM. Its reversed order gives the second horizontal sequence §4.1, eq. 6. The vertical network (VN) rotates the square map by 90 degrees and repeats the HN procedure §4.1, eq. 7. The horizontal and vertical branches share their convolution filters, which the authors found necessary for training §4.1, fig. 4. The character placement network (CN) predicts, for each of the L positions, four weights that sum to 1 [§4.1, eq. 8].
- The filter gate (FG) combines the four sequences at each position with that position's four weights, then applies tanh §4.2, eq. 9, eq. 10.
- An attention-based LSTM decoder predicts one character per step, ending with an end-of-sequence symbol §3.3, eq. 1–4.
Pseudocode of the forward pass and loss. The shapes are the reader's interpretation of the text, not values stated in the paper.
# AON forward pass and training loss [§3] [§4]
# Input: image (3, 100, 100); target characters y_1 .. y_M
# Output: negative log-likelihood loss
def aon_loss(image, target_chars):
# Basal CNN: four conv blocks, square output map [§3.1]
base = basal_cnn(image) # (C, S, S)
# Horizontal branch: shared convs pool height to 1, then BiLSTM [§4.1]
horizontal = bilstm(pool_height_to_one(shared_convs(base))) # (L, D)
# Reversed horizontal sequence: same features in reverse order [eq. 6]
horizontal_rev = reverse_order(horizontal) # (L, D)
# Vertical branch: rotate the square map 90 degrees, then same steps [§4.1]
rotated = rotate_90(base) # (C, S, S)
vertical = bilstm(pool_height_to_one(shared_convs(rotated))) # (L, D)
# Reversed vertical sequence [eq. 7]
vertical_rev = reverse_order(vertical) # (L, D)
# Placement clues: four weights per position, summing to 1 [§4.1] [eq. 8]
clues = placement_net(base) # (L, 4)
# Filter gate: weight the four directions per position, then tanh [§4.2]
for each position i:
mixed = stack_four(horizontal[i], horizontal_rev[i],
vertical[i], vertical_rev[i]) @ clues[i]
fused[i] = tanh(mixed) # (D,) [eq. 9, 10]
# Attention decoder: one character per step, stop at EOS [§3.3] [eq. 1–4]
state = initial_state()
loss = 0
for t in range(len(target_chars)):
# Attention weights from the previous decoder state [eq. 4]
weights = attend(state, fused) # (L,)
# Glimpse: weighted sum of the fused features [eq. 3]
glimpse = weights @ fused # (D,)
# Decoder recurrence [eq. 2]
state = lstm_step(previous_char, glimpse, state)
# Character distribution over 37 symbols [eq. 1] [§5.2]
probs = softmax(output_layer(state))
# Accumulate negative log-likelihood of the true character [eq. 5]
loss = loss - log(probs[target_chars[t]])
previous_char = target_chars[t]
return lossLoss, as written eq. 5: the sum over output steps of the negative log probability of each ground-truth character. No normalisation by length is stated.
Decoding §3.5:
- Unconstrained: take the most probable character at each step.
- Constrained: score every word in the lexicon by its conditional probability and output the highest-scoring one. Lexicon sizes are 50, 1k and "full" tab. 1, tab. 2. The size of the "full" lexicon is not stated in the text.
Training §5.2: ADADELTA optimiser. Training data is 8 million synthetic images from Jaderberg et al. and 4 million from Gupta et al.'s set of 80 thousand scene images, both restricted to alphanumeric labels. Each image is rotated by a random angle between 0° and 360° once as augmentation.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| input size | 100 × 100 | §5.2 | all images resized, aspect ratio not kept |
| convolution kernel / pad / stride | 3×3 / 1×1 / 1×1 | §5.2 | all convolution blocks |
| pooling | max, 2×2 | §5.2 | |
| normalisation and activation | batch norm, then ReLU, after each conv | §5.2 | |
| basal CNN depth | 4 convolution blocks | §3.1 | channel counts: not stated in text; see fig. 3 |
| height reduction in HN | 5 shared convolution blocks with pooling to height 1 | §4.1 | per-block pooling: see fig. 3 |
| convolution sharing | horizontal and vertical branches share filters | §4.1 fig. 4 | |
| encoder recurrence | bidirectional LSTM | §4.1 | hidden size not stated |
| decoder LSTM | 256 memory blocks | §5.2 | number of layers not stated |
| output units | 37 (26 letters, 10 digits, 1 EOS) | §5.2 | |
| optimiser | ADADELTA | §5.2 | learning rate, decay constants, batch size, number of iterations: not stated |
| rotation augmentation | uniform 0° to 360°, applied once | §5.2 | |
| training data | 8M synthetic (Jaderberg et al.) + 4M synthetic (Gupta et al.) | §5.2 | alphanumeric labels only |
| framework | Caffe, CUDA 8.0, cuDNN v7 | §5.2 | |
| hardware | Intel Xeon E5-2650 2.30 GHz, NVIDIA Tesla P40, 128 GB RAM | §5.2 | |
| throughput | about 190 samples/s training, 630 samples/s testing | §5.2 | author-reported |
| parameters and compute | about 2× Naive_base | §6 | |
| test-set sizes | SVT-Perspective 639; CUTE80 288; ICDAR15 2077 (cropped); IIIT5K 3000; SVT 647; ICDAR03 867 | §5.1 | ICDAR03: 867 cropped images kept from 251 scene images, after dropping non-alphanumeric and short words |
Results
Author-reported. Setup: models trained on the synthetic data above, tested on the listed benchmarks, against Naive_base (the HN branch alone) and STN_base (HN with a TPS spatial transformer), both trained by the authors on similar data §5. Other rows are numbers the authors took from the literature, which used their own training data §5.3.
Irregular benchmarks tab. 1. Columns: SVT-Perspective (50 / full / none lexicon), CUTE80 (none), ICDAR15 (none). Accuracy in %.
| Method | SVT-P 50 | SVT-P Full | SVT-P None | CT80 None | IC15 None |
|---|---|---|---|---|---|
| ABBYY | 40.5 | 26.1 | – | – | – |
| Mishra et al. | 45.7 | 24.7 | – | – | – |
| Wang et al. | 40.2 | 32.4 | – | – | – |
| Phan et al. | 75.6 | 67.0 | – | – | – |
| Shi et al. (end-to-end) | 92.6 | 72.6 | 66.8 | 54.9 | – |
| Shi et al. (rectified) | 91.2 | 77.4 | 71.8 | 59.2 | – |
| Yang et al. | 93.0 | 80.2 | 75.8 | 69.3 | – |
| Cheng et al. (FAN) | 92.6 | 81.6 | 71.5 | 63.9 | 66.2 |
| Naive_base | 92.4 | 83.3 | 70.5 | 75.4 | 67.8 |
| STN_base | 94.6 | 82.8 | 68.5 | 73.7 | 67.5 |
| This paper (AON) | 94.0 | 83.7 | 73.0 | 76.8 | 68.2 |
Regular benchmarks tab. 2. Columns: IIIT5K (50 / 1k / none), SVT (50 / none), ICDAR03 (50 / full / none). Accuracy in %.
| Method | IIIT5K 50 | IIIT5K 1k | IIIT5K None | SVT 50 | SVT None | IC03 50 | IC03 Full | IC03 None |
|---|---|---|---|---|---|---|---|---|
| ABBYY | 24.3 | – | – | 35.0 | – | 56.0 | 55.0 | – |
| Wang et al. (2011) | – | – | – | 57.0 | – | 76.0 | 62.0 | – |
| Mishra et al. | 64.1 | 57.5 | – | 73.2 | – | 81.8 | 67.8 | – |
| Wang et al. (2012) | – | – | – | 70.0 | – | 90.0 | 84.0 | – |
| Goel et al. | – | – | – | 77.3 | – | 89.7 | – | – |
| Bissacco et al. | – | – | – | 90.4 | 78.0 | – | – | – |
| Alsharif et al. | – | – | – | 74.3 | – | 93.1 | 88.6 | – |
| Almazán et al. | 91.2 | 82.1 | – | 89.2 | – | – | – | – |
| Yao et al. | 80.2 | 69.3 | – | 75.9 | – | 88.5 | 80.3 | – |
| Jaderberg et al. (2014) | – | – | – | 86.1 | – | 96.2 | 91.5 | – |
| Su and Lu | – | – | – | 83.0 | – | 92.0 | 82.0 | – |
| Gordo | 93.3 | 86.6 | – | 91.8 | – | – | – | – |
| Jaderberg et al. (2016) | 97.1 | 92.7 | – | 95.4 | 80.7 | 98.7 | 98.6 | 93.1 |
| Jaderberg et al. (2014, deep) | 95.5 | 89.6 | – | 93.2 | 71.7 | 97.8 | 97.0 | 89.6 |
| Shi et al. (end-to-end) | 97.6 | 94.4 | 78.2 | 96.4 | 80.8 | 98.7 | 97.6 | 89.4 |
| Shi et al. (rectified) | 96.2 | 93.8 | 81.9 | 95.5 | 81.9 | 98.3 | 96.2 | 90.1 |
| Lee et al. | 96.8 | 94.4 | 78.4 | 96.3 | 80.7 | 97.9 | 97.0 | 88.7 |
| Yang et al. | 97.8 | 96.1 | – | 95.2 | – | – | 97.7 | – |
| Cheng's baseline | 98.9 | 96.8 | 83.7 | 95.7 | 82.2 | 98.5 | 96.7 | 91.5 |
| Cheng et al. (FAN) | 99.3 | 97.5 | 87.4 | 97.1 | 85.9 | 99.2 | 97.3 | 94.2 |
| Naive_base | 99.5 | 98.1 | 86.0 | 96.9 | 81.9 | 98.5 | 96.5 | 90.5 |
| STN_base | 99.5 | 97.8 | 85.9 | 96.3 | 80.7 | 98.5 | 96.2 | 89.2 |
| This paper (AON) | 99.6 | 98.1 | 87.0 | 96.0 | 82.8 | 98.5 | 97.1 | 91.5 |
Headline reading of the tables, as stated by the authors:
- Irregular sets: AON is best on most columns, but not all. Yang et al. is higher on SVT-Perspective with no lexicon, and STN_base is higher on SVT-Perspective with the 50-word lexicon §5.3, tab. 1.
- Regular sets: the authors describe results as "comparable". They are behind Cheng et al. (FAN) on the three unconstrained columns, and behind Jaderberg et al. (2016) on ICDAR03 unconstrained §5.4.
- The authors say AON needs only word-level labels. FAN and Yang et al. use character-level boxes §5.3.
Further results: removing the convolutional placement network (CN) and concatenating the four sequences in a different way gives slower convergence and worse accuracy. Concatenating the horizontal and vertical sequences along the time axis gives results about 4% lower on average than AON §6. These are described in text only; no table is given.
Qualitative results: fig. 6 shows the learned placement clues and fig. 7 shows the placement trends derived from them, both on example images §5.5.
Paper vs code
No official code.
Search, in order:
- The paper's source (LaTeX,
raw/src/1711.04226) and bibliography contain no repository link. The abstract as stored in the metadata contains none either. - The paper links no project page.
- GitHub repository search via the API, for "arbitrary orientation network text recognition" and "AON arbitrarily-oriented text recognition". The first returned no results. The second returned one repository,
huizhang0110/AON(MIT), described as a TensorFlow implementation of this paper. Its owner is not an author of the paper, so it is a third-party reimplementation and is not used here.
No code is cited, so no discrepancy with code can be checked.
Pitfalls
- Equation and figure numbers. The equations eq. 1–eq. 10 and figures fig. 1–fig. 7 are numbered in the order they appear in the LaTeX source. The compiled PDF was not checked. Two equations share one LaTeX label (
eq:py), so label-based cross-references in the source are unreliable. - Missing layer table. The per-block channel counts and pooling strides of the convolution stacks are shown only in fig. 3, which is a diagram. Implementers need them and should read the figure.
- Shared convolutions and the 90° rotation. The horizontal and vertical branches share filters, and the vertical branch rotates a square map §4.1. The text requires the BCNN output to be square §3.1 but does not say what happens if it is not. Inputs are resized to 100 × 100 §5.2, so aspect ratio is not kept. The authors say they saw no clear harm on wide text §6, but this is not tested in a table.
- Reversal. The reversed sequences are the same features in reverse order eq. 6, eq. 7. The paper does not say whether they are computed by a separate pass.
- Placement clues. Each position's four weights must sum to 1 eq. 8. The paper does not state how this is enforced, for example by a softmax.
- Filter gate shape. The paper writes the gate as the four directional vectors, stacked, multiplied by the four clue weights eq. 9. The stacking axis and the resulting dimension are not spelled out. The implementation reading above is an interpretation.
- Attention scoring. The attention function is cited to a general reference and its scoring form is not stated eq. 4. Implementers must choose one, for example additive or dot-product.
- Teacher forcing. The paper does not say whether the previous character fed into the decoder during training is the ground truth or the model's own prediction.
- Optimiser settings. The learning rate, ADADELTA constants, batch size, number of iterations and weight decay are not stated in the published text. Do not copy values from other papers.
- Alphabet. The decoder has 37 outputs: 26 letters, 10 digits and EOS §5.2. Whether letters are case-folded is not stated, and training data was filtered to alphanumeric labels.
- Lexicon decoding cost. Constrained decoding scores every lexicon word §3.5. Cost grows with lexicon size, and the size of the "full" lexicon is not given.
- Comparison fairness. Most rows in the tables are numbers taken from other papers, trained on other data §5.3. Only Naive_base, STN_base and the AON model share training conditions.
- Abstract versus tables. The abstract and the text claim state-of-the-art on irregular data [abstract, §5.3], but tab. 1 shows STN_base ahead on one column and Yang et al. ahead on another. Read the tables, not the summary.
- Cost. The authors report AON has about twice the parameters and compute of Naive_base, and that the STN variant has about three times §6. Training throughput is about 190 samples per second on one Tesla P40 §5.2. These numbers are author-reported.
- Pretraining. Use of ImageNet or other pretrained weights is not stated.
Lineage
- Builds on: attention-based sequence decoding of Bahdanau et al. and the end-of-sequence convention of Sutskever et al. §3.3. Rectification with a thin-plate-spline spatial transformer, from Shi et al. (2016), is the alternative it compares against §2, §5.3.
- Compared against: ABBYY, Mishra et al., Wang et al., Phan et al., Shi et al. (two variants), Yang et al., Cheng et al. (FAN), Jaderberg et al., Lee et al., and the authors' own Naive_base and STN_base controls tab. 1, tab. 2.
- Superseded by: not stated in this wiki.
Source and license
Adapted from “AON: Towards Arbitrarily-Oriented Text Recognition” by Zhanzhan Cheng, Yangliu Xu, Fan Bai, Yi Niu, Shiliang Pu, Shuigeng Zhou (arXiv:1711.04226), used under CC BY-SA 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. This page is licensed under CC BY-SA 4.0.