A tensorflow implementation of EAST text detector

Overview

EAST: An Efficient and Accurate Scene Text Detector

Introduction

This is a tensorflow re-implementation of EAST: An Efficient and Accurate Scene Text Detector. The features are summarized blow:

  • Online demo
  • Only RBOX part is implemented.
  • A fast Locality-Aware NMS in C++ provided by the paper's author.
  • The pre-trained model provided achieves 80.83 F1-score on ICDAR 2015 Incidental Scene Text Detection Challenge using only training images from ICDAR 2015 and 2013. see here for the detailed results.
  • Differences from original paper
    • Use ResNet-50 rather than PVANET
    • Use dice loss (optimize IoU of segmentation) rather than balanced cross entropy
    • Use linear learning rate decay rather than staged learning rate decay
  • Speed on 720p (resolution of 1280x720) images:
    • Now
      • Graphic card: GTX 1080 Ti
      • Network fprop: ~50 ms
      • NMS (C++): ~6ms
      • Overall: ~16 fps
    • Then
      • Graphic card: K40
      • Network fprop: ~150 ms
      • NMS (python): ~300ms
      • Overall: ~2 fps

Thanks for the author's (@zxytim) help! Please cite his paper if you find this useful.

Contents

  1. Installation
  2. Download
  3. Demo
  4. Test
  5. Train
  6. Examples

Installation

  1. Any version of tensorflow version > 1.0 should be ok.

Download

  1. Models trained on ICDAR 2013 (training set) + ICDAR 2015 (training set): BaiduYun link GoogleDrive
  2. Resnet V1 50 provided by tensorflow slim: slim resnet v1 50

Train

If you want to train the model, you should provide the dataset path, in the dataset path, a separate gt text file should be provided for each image and run

python multigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14 --checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ \
--text_scale=512 --training_data_path=/data/ocr/icdar2015/ --geometry=RBOX --learning_rate=0.0001 --num_readers=24 \
--pretrained_model_path=/tmp/resnet_v1_50.ckpt

If you have more than one gpu, you can pass gpu ids to gpu_list(like --gpu_list=0,1,2,3)

Note: you should change the gt text file of icdar2015's filename to img_*.txt instead of gt_img_*.txt(or you can change the code in icdar.py), and some extra characters should be removed from the file. See the examples in training_samples/

Demo

If you've downloaded the pre-trained model, you can setup a demo server by

python3 run_demo_server.py --checkpoint-path /tmp/east_icdar2015_resnet_v1_50_rbox/

Then open http://localhost:8769 for the web demo. Notice that the URL will change after you submitted an image. Something like ?r=49647854-7ac2-11e7-8bb7-80000210fe80 appends and that makes the URL persistent. As long as you are not deleting data in static/results, you can share your results to your friends using the same URL.

URL for example below: http://east.zxytim.com/?r=48e5020a-7b7f-11e7-b776-f23c91e0703e web-demo

Test

run

python eval.py --test_data_path=/tmp/images/ --gpu_list=0 --checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ \
--output_dir=/tmp/

a text file will be then written to the output path.

Examples

Here are some test examples on icdar2015, enjoy the beautiful text boxes! image_1 image_2 image_3 image_4 image_5

Troubleshooting

Please let me know if you encounter any issues(my email boostczc@gmail dot com).

Comments
  • Compile lanms on windows successfully!

    Compile lanms on windows successfully!

    my environment is: windows10 , python3.6 (ps:I use Anaconda3), vs2015 Update 3 (ps: Visual Studio version should be vs2015 Update 3 or newer)

    Step 1:Open the console make sure you can use X64 compiler:cl.exe(note: not X86, not X86, not X86 ) 2 default

    Step 2:to compile adaptor.cpp to adaptor.pyd execute:cd your_dir\lanms execute:cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\ProgramData\Anaconda3\libs" 1 ok,adaptor.pyd appears!

    Step 3:comment some code in __init__.py comment line7 and line8 2

    Step 4:Congratulations! You can import lanms.

    opened by ZhuMingmin9123 43
  • about pvanet training

    about pvanet training

    hi, have you tried pvanet as basenetwork? I tried pvanet using caffe but encountered overfitting problem. my training sets is 950 images from icdar 2015 trainningsets( the other 50 images as validation sets) and 229 images from icdar 2013. model is trained by online data augmentation which includes scaling and rotations between ±30°. iou loss overfits a lot that when trainning iou descend to 0.25 validation iou loss still stays high at 0.7. I think I have confirmed everything so much that I can not solve this problem. please help me, Mr. Argman!!!!!!. I have cost two month on this problem.... 555555

    opened by blankWorld 16
  • Exporting frozen graph.

    Exporting frozen graph.

    Hello @argman,

    I have a question about exporting checkpoint to frozen_graph.pb. #85 hasn't helped me.

    When I exported all nodes to the frozen graph i got the result: Converted 867 variables to const ops. 39737 ops in the final graph.

    The exported graph size is 378M in compare to model.ckpt-49491.data = 368M.

    Is is possible to export just a subset of nodes to get working model after loading exported graph?

    opened by PiotrGrzybowski 14
  • How to generate the train dataset?

    How to generate the train dataset?

    @zxytim @argman Hello, thanks for your sharing! Now I am curious about the format of the train dataset, so could provide a brief descriptions about it? Thanks very much!

    opened by LearnerInGithub 12
  • Converting to frozen graph for inference

    Converting to frozen graph for inference

    Hi, I am trying to convert the model checkpoint files into the .pb format (i.e. trying to freeze the graph) and cant figure out all the output nodes that are important (Freezing the graph needs input and output nodes).

    Can you please enlighten me as to which nodes in the graph are the endpoints/output-nodes ?

    opened by Qazi-Farjad 10
  • inference using frozen pb file can not gets the same result in contrast to original ckpt

    inference using frozen pb file can not gets the same result in contrast to original ckpt

    hello, After I use your code to train a ckpt model. I try two methods for inference:

    1. use eval.py to infer this ckpt model.
    2. use below code to freeze the trained ckpt model and meta to a single pb file:
    import cv2
    import time
    import math
    import os
    from skimage import io
    import numpy as np
    import tensorflow as tf
    from PIL import Image
    import locality_aware_nms as nms_locality
    import lanms
    import copy
    import model
    
    tf.app.flags.DEFINE_string('gpu_list', '0', '')
    tf.app.flags.DEFINE_string('checkpoint_path', './east_resnet_v1_50_rbox/','')
    tf.app.flags.DEFINE_string('meta', './east_resnet_v1_50_rbox/model.ckpt-4412.meta','')
    tf.app.flags.DEFINE_string('output_dir', './output/', '')
    FLAGS = tf.app.flags.FLAGS
    
    def freeze():
        os.environ['CUDA_VISIBLE_DEVICES'] = FLAGS.gpu_list
        input_images = tf.placeholder(tf.float32, shape=[None, None, None, 3], name='input_images')
        global_step = tf.get_variable('global_step', [], initializer=tf.constant_initializer(0), trainable=False)
    
        f_score, f_geometry = model.model(input_images, is_training=False)
    
        config = tf.ConfigProto(allow_soft_placement=True)
    
        with tf.Session(config = config) as sess:
            sess.run(tf.global_variables_initializer())
            for op in sess.graph.get_operations():
                # print op
                print op.name
    
            variable_averages = tf.train.ExponentialMovingAverage(0.997, global_step)
            saver = tf.train.Saver(variable_averages.variables_to_restore())
            # print variable_averages.variables_to_restore()
    
            ckpt = tf.train.latest_checkpoint(FLAGS.checkpoint_path)
            if ckpt:
                saver.restore(sess, ckpt)
                print("restore from the checkpoint {0}".format(ckpt))
    
            output_node_names =["feature_fusion/Conv_7/Sigmoid"]
    
            # Freeze the graph
            frozen_graph_def = tf.graph_util.convert_variables_to_constants(
                sess,
                sess.graph_def,
                output_node_names)
            tf.graph_util.remove_training_nodes(frozen_graph_def)
    
            # Save the frozen graph
            with open(FLAGS.output_dir+'east_ckpt-4412.pb', 'wb') as f:
              f.write(frozen_graph_def.SerializeToString())
    
    if __name__ == '__main__':
        freeze()
    

    then use this frozen pb file to infer it.

    I find the result of 1 and 2 methods are still different. where I make a mistake? can you give some advises?

    opened by PapaMadeleine2022 9
  • model loss and total loss

    model loss and total loss

    when I train my own data, at the beginning of training, the model loss is 0.01 ,the total loss is 0.04....and the model loss never changed! my own data is the same as ICDAR format like (x1,y1,x2,y2,x3,y3,x4,y4,label). As a result , after training, I get ckpt files but it didn't work,it can't detect the text in the images....So anyone meets this issue?

    opened by caoyangcr7 9
  • Trainig not moving after printing '0 training images in the /data/ocr/icdar2015'

    Trainig not moving after printing '0 training images in the /data/ocr/icdar2015'

    The training is not moving after the following output.

    python3 multigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14 --checkpoint_path=./tmp/east_icdar2015_resnet_v1_50_rbox/ --text_scale=512 --training_data_path=/data/ocr/icdar2015/ --geometry=RBOX --learning_rate=0.0001 --num_readers=24 --pretrained_model_path=./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
    Instructions for updating:
    Use the retry module or similar alternatives.
    /usr/local/lib/python3.5/dist-packages/matplotlib/backends/backend_gtk3agg.py:18: UserWarning: The Gtk3Agg backend is known to not work on Python 3.x with pycairo. Try installing cairocffi.
      "The Gtk3Agg backend is known to not work on Python 3.x with pycairo. "
    resnet_v1_50/block1 (?, ?, ?, 256)
    resnet_v1_50/block2 (?, ?, ?, 512)
    resnet_v1_50/block3 (?, ?, ?, 1024)
    resnet_v1_50/block4 (?, ?, ?, 2048)
    Shape of f_0 (?, ?, ?, 2048)
    Shape of f_1 (?, ?, ?, 512)
    Shape of f_2 (?, ?, ?, 256)
    Shape of f_3 (?, ?, ?, 64)
    Shape of h_0 (?, ?, ?, 2048), g_0 (?, ?, ?, 2048)
    Shape of h_1 (?, ?, ?, 128), g_1 (?, ?, ?, 128)
    Shape of h_2 (?, ?, ?, 64), g_2 (?, ?, ?, 64)
    Shape of h_3 (?, ?, ?, 32), g_3 (?, ?, ?, 32)
    WARNING:tensorflow:Variable feature_fusion/Conv_1/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_4/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_2/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_6/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_2/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_4/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_8/biases missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_9/biases missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_1/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_3/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_3/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_1/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_2/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_5/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_5/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_8/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_3/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_7/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_6/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_9/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_4/BatchNorm/gamma missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_5/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_7/biases missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv/weights missing in checkpoint ./tmp/resnet_v1_50.ckpt
    WARNING:tensorflow:Variable feature_fusion/Conv_6/BatchNorm/beta missing in checkpoint ./tmp/resnet_v1_50.ckpt
    2018-05-03 20:40:28.506116: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
    Generator use 10 batches for buffering, this may take a while, you can tune this yourself.
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    0 training images in /data/ocr/icdar2015/
    
    

    Not sure what I am doing wrong, any pointers on how to fix this or is this running fine?

    opened by saharudra 9
  • Using my own dataset to train the model

    Using my own dataset to train the model

    Hi, @argman I want to train the model using my own dataset, what can I do for this? How to create the gt text files? And what's the each parameter stands for?

    opened by dandiao190 9
  • GPU usage is zero?

    GPU usage is zero?

    @argman @zxytim Hi, I find a new problem, the Volatile GPU-Util is 0 but GPU memory-Usage is about 23 G, and I print the running log, watched that the model load the dataset all the time. Why the model not do actual computation on GPU?

    nvidia-smi Info: GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. 5 Tesla M60 24GB On | 0000:85:00.0 Off | Off | | N/A 35C P0 56W / 250W | 23377MiB / 24472MiB | 0% Default

    opened by LearnerInGithub 9
  • When i add pretrained moded, it can not find parameters, could you tell me where i am wrong?

    When i add pretrained moded, it can not find parameters, could you tell me where i am wrong?

    WARNING:tensorflow:Variable feature_fusion/Conv_3/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_5/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_7/biases missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_6/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_1/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_8/biases missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_5/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_6/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_6/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_1/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_9/biases missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_4/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_7/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_3/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_4/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_1/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_3/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_8/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_2/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_2/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_4/BatchNorm/beta missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_5/BatchNorm/gamma missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_9/weights missing in checkpoint data/resnet_v1_50.ckpt WARNING:tensorflow:Variable feature_fusion/Conv_2/weights missing in checkpoint data/resnet_v1_50.ckpt @argman

    opened by cjt222 8
  • FileNotFoundError: [WinError 2] The system cannot find the file specified

    FileNotFoundError: [WinError 2] The system cannot find the file specified

    When I am running eval.py, getting following error.

    [(base) D:\AAP\Text Detection\EAST Tensorflow\EAST-master>python eval.py --test_data_path=/tmp/images/ --gpu_list=0 --checkpoint_path=/tmp/east_icdar2015_resnet_v1_50_rbox/ --output_dir=/tmp/
    Traceback (most recent call last):
      File "D:\AAP\Text Detection\EAST Tensorflow\EAST-master\eval.py", line 9, in <module>
        import lanms
      File "D:\AAP\Text Detection\EAST Tensorflow\EAST-master\lanms\__init__.py", line 7, in <module>
        if subprocess.call(['make', '-C', BASE_DIR]) != 0:  # return value
      File "C:\Users\thitesh\anaconda3\lib\subprocess.py", line 349, in call
        with Popen(*popenargs, **kwargs) as p:
      File "C:\Users\thitesh\anaconda3\lib\subprocess.py", line 951, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "C:\Users\thitesh\anaconda3\lib\subprocess.py", line 1420, in _execute_child
        hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
    FileNotFoundError: [WinError 2] The system cannot find the file specified](url)
    
    opened by thitesh 0
  • Bump pillow from 4.2.1 to 9.3.0

    Bump pillow from 4.2.1 to 9.3.0

    Bumps pillow from 4.2.1 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • can we custom train for specific number detection like credit card number

    can we custom train for specific number detection like credit card number

    Can we custom train for specific text because i don't want to use object detection. Can we train east text detector detect only particular sequence of number like credit card number type sequence from entire document.

    opened by mohit-217 0
  • Bump numpy from 1.12.1 to 1.22.0

    Bump numpy from 1.12.1 to 1.22.0

    Bumps numpy from 1.12.1 to 1.22.0.

    Release notes

    Sourced from numpy's releases.

    v1.22.0

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump ipython from 6.1.0 to 7.16.3

    Bump ipython from 6.1.0 to 7.16.3

    Bumps ipython from 6.1.0 to 7.16.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
null
This is a pytorch re-implementation of EAST: An Efficient and Accurate Scene Text Detector.

EAST: An Efficient and Accurate Scene Text Detector Description: This version will be updated soon, please pay attention to this work. The motivation

Dejia Song 544 Dec 20, 2022
PyTorch Re-Implementation of EAST: An Efficient and Accurate Scene Text Detector

Description This is a PyTorch Re-Implementation of EAST: An Efficient and Accurate Scene Text Detector. Only RBOX part is implemented. Using dice loss

null 365 Dec 20, 2022
python ocr using tesseract/ with EAST opencv detector

pytextractor python ocr using tesseract/ with EAST opencv text detector Uses the EAST opencv detector defined here with pytesseract to extract text(de

Danny Crasto 38 Dec 5, 2022
huoyijie 1.2k Dec 29, 2022
EAST for ICPR MTWI 2018 Challenge II (Text detection of network images)

EAST_ICPR2018: EAST for ICPR MTWI 2018 Challenge II (Text detection of network images) Introduction This is a repository forked from argman/EAST for t

QichaoWu 49 Dec 24, 2022
Forked from argman/EAST for the ICPR MTWI 2018 CHALLENGE

EAST_ICPR: EAST for ICPR MTWI 2018 CHALLENGE Introduction This is a repository forked from argman/EAST for the ICPR MTWI 2018 CHALLENGE. Origin Reposi

Haozheng Li 157 Aug 23, 2022
Implement 'Single Shot Text Detector with Regional Attention, ICCV 2017 Spotlight'

SSTDNet Implement 'Single Shot Text Detector with Regional Attention, ICCV 2017 Spotlight' using pytorch. This code is work for general object detecti

HotaekHan 84 Jan 5, 2022
Single Shot Text Detector with Regional Attention

Single Shot Text Detector with Regional Attention Introduction SSTD is initially described in our ICCV 2017 spotlight paper. A third-party implementat

Pan He 215 Dec 7, 2022
Packaged, Pytorch-based, easy to use, cross-platform version of the CRAFT text detector

CRAFT: Character-Region Awareness For Text detection Packaged, Pytorch-based, easy to use, cross-platform version of the CRAFT text detector | Paper |

null 188 Dec 28, 2022
TextBoxes++: A Single-Shot Oriented Scene Text Detector

TextBoxes++: A Single-Shot Oriented Scene Text Detector Introduction This is an application for scene text detection (TextBoxes++) and recognition (CR

Minghui Liao 930 Jan 4, 2023
TextBoxes: A Fast Text Detector with a Single Deep Neural Network https://github.com/MhLiao/TextBoxes 基于SSD改进的文本检测算法,textBoxes_note记录了之前整理的笔记。

TextBoxes: A Fast Text Detector with a Single Deep Neural Network Introduction This paper presents an end-to-end trainable fast scene text detector, n

zhangjing1 24 Apr 28, 2022
text detection mainly based on ctpn model in tensorflow, id card detect, connectionist text proposal network

text-detection-ctpn Scene text detection based on ctpn (connectionist text proposal network). It is implemented in tensorflow. The origin paper can be

Shaohui Ruan 3.3k Dec 30, 2022
Handwritten Text Recognition (HTR) system implemented with TensorFlow (TF) and trained on the IAM off-line HTR dataset. This Neural Network (NN) model recognizes the text contained in the images of segmented words.

Handwritten-Text-Recognition Handwritten Text Recognition (HTR) system implemented with TensorFlow (TF) and trained on the IAM off-line HTR dataset. T

null 27 Jan 8, 2023
CUTIE (TensorFlow implementation of Convolutional Universal Text Information Extractor)

CUTIE TensorFlow implementation of the paper "CUTIE: Learning to Understand Documents with Convolutional Universal Text Information Extractor." Xiaohu

Zhao,Xiaohui 147 Dec 20, 2022
This is a tensorflow re-implementation of PSENet: Shape Robust Text Detection with Progressive Scale Expansion Network.My blog:

PSENet: Shape Robust Text Detection with Progressive Scale Expansion Network Introduction This is a tensorflow re-implementation of PSENet: Shape Robu

Michael liu 498 Dec 30, 2022
TensorFlow Implementation of FOTS, Fast Oriented Text Spotting with a Unified Network.

FOTS: Fast Oriented Text Spotting with a Unified Network I am still working on this repo. updates and detailed instructions are coming soon! Table of

Masao Taketani 52 Nov 11, 2022
Augmenting Anchors by the Detector Itself

Augmenting Anchors by the Detector Itself Introduction It is difficult to determine the scale and aspect ratio of anchors for anchor-based object dete

null 4 Nov 6, 2022
Motion detector, Full body detection, Upper body detection, Cat face detection, Smile detection, Face detection (haar cascade), Silverware detection, Face detection (lbp), and Sending email notifications

Security camera running OpenCV for object and motion detection. The camera will send email with image of any objects it detects. It also runs a server that provides web interface with live stream video.

Peace 10 Jun 30, 2021