-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #187 from eragonruan/dev
Dev
- Loading branch information
Showing
53 changed files
with
4,413 additions
and
1,644 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,9 +6,10 @@ logs/ | |
output/ | ||
build/ | ||
dist/ | ||
checkpoints/ | ||
.idea/ | ||
*.py[cod] | ||
*.c[cod] | ||
*.so | ||
*.swp | ||
|
||
*.pb |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1 @@ | ||
from . import text_proposal_connector | ||
from . import text_connect | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
from __future__ import print_function | ||
|
||
import glob | ||
import os | ||
import shutil | ||
import sys | ||
|
||
import cv2 | ||
import numpy as np | ||
import tensorflow as tf | ||
from tensorflow.python.platform import gfile | ||
|
||
sys.path.append(os.getcwd()) | ||
from lib.fast_rcnn.config import cfg, cfg_from_file | ||
from lib.fast_rcnn.test import _get_blobs | ||
from lib.text_connector.detectors import TextDetector | ||
from lib.text_connector.text_connect_cfg import Config as TextLineCfg | ||
from lib.rpn_msr.proposal_layer_tf import proposal_layer | ||
|
||
|
||
def resize_im(im, scale, max_scale=None): | ||
f = float(scale) / min(im.shape[0], im.shape[1]) | ||
if max_scale != None and f * max(im.shape[0], im.shape[1]) > max_scale: | ||
f = float(max_scale) / max(im.shape[0], im.shape[1]) | ||
return cv2.resize(im, None, None, fx=f, fy=f, interpolation=cv2.INTER_LINEAR), f | ||
|
||
|
||
def draw_boxes(img, image_name, boxes, scale): | ||
base_name = image_name.split('/')[-1] | ||
with open('data/results/' + 'res_{}.txt'.format(base_name.split('.')[0]), 'w') as f: | ||
for box in boxes: | ||
if np.linalg.norm(box[0] - box[1]) < 5 or np.linalg.norm(box[3] - box[0]) < 5: | ||
continue | ||
if box[8] >= 0.9: | ||
color = (0, 255, 0) | ||
elif box[8] >= 0.8: | ||
color = (255, 0, 0) | ||
cv2.line(img, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), color, 2) | ||
cv2.line(img, (int(box[0]), int(box[1])), (int(box[4]), int(box[5])), color, 2) | ||
cv2.line(img, (int(box[6]), int(box[7])), (int(box[2]), int(box[3])), color, 2) | ||
cv2.line(img, (int(box[4]), int(box[5])), (int(box[6]), int(box[7])), color, 2) | ||
|
||
min_x = min(int(box[0] / scale), int(box[2] / scale), int(box[4] / scale), int(box[6] / scale)) | ||
min_y = min(int(box[1] / scale), int(box[3] / scale), int(box[5] / scale), int(box[7] / scale)) | ||
max_x = max(int(box[0] / scale), int(box[2] / scale), int(box[4] / scale), int(box[6] / scale)) | ||
max_y = max(int(box[1] / scale), int(box[3] / scale), int(box[5] / scale), int(box[7] / scale)) | ||
|
||
line = ','.join([str(min_x), str(min_y), str(max_x), str(max_y)]) + '\r\n' | ||
f.write(line) | ||
|
||
img = cv2.resize(img, None, None, fx=1.0 / scale, fy=1.0 / scale, interpolation=cv2.INTER_LINEAR) | ||
cv2.imwrite(os.path.join("data/results", base_name), img) | ||
|
||
|
||
if __name__ == '__main__': | ||
|
||
if os.path.exists("data/results/"): | ||
shutil.rmtree("data/results/") | ||
os.makedirs("data/results/") | ||
|
||
cfg_from_file('ctpn/text.yml') | ||
|
||
# init session | ||
config = tf.ConfigProto(allow_soft_placement=True) | ||
sess = tf.Session(config=config) | ||
with gfile.FastGFile('data/ctpn.pb', 'rb') as f: | ||
graph_def = tf.GraphDef() | ||
graph_def.ParseFromString(f.read()) | ||
sess.graph.as_default() | ||
tf.import_graph_def(graph_def, name='') | ||
sess.run(tf.global_variables_initializer()) | ||
|
||
input_img = sess.graph.get_tensor_by_name('Placeholder:0') | ||
output_cls_prob = sess.graph.get_tensor_by_name('Reshape_2:0') | ||
output_box_pred = sess.graph.get_tensor_by_name('rpn_bbox_pred/Reshape_1:0') | ||
|
||
im_names = glob.glob(os.path.join(cfg.DATA_DIR, 'demo', '*.png')) + \ | ||
glob.glob(os.path.join(cfg.DATA_DIR, 'demo', '*.jpg')) | ||
|
||
for im_name in im_names: | ||
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') | ||
print(('Demo for {:s}'.format(im_name))) | ||
img = cv2.imread(im_name) | ||
img, scale = resize_im(img, scale=TextLineCfg.SCALE, max_scale=TextLineCfg.MAX_SCALE) | ||
blobs, im_scales = _get_blobs(img, None) | ||
if cfg.TEST.HAS_RPN: | ||
im_blob = blobs['data'] | ||
blobs['im_info'] = np.array( | ||
[[im_blob.shape[1], im_blob.shape[2], im_scales[0]]], | ||
dtype=np.float32) | ||
cls_prob, box_pred = sess.run([output_cls_prob, output_box_pred], feed_dict={input_img: blobs['data']}) | ||
rois, _ = proposal_layer(cls_prob, box_pred, blobs['im_info'], 'TEST', anchor_scales=cfg.ANCHOR_SCALES) | ||
|
||
scores = rois[:, 0] | ||
boxes = rois[:, 1:5] / im_scales[0] | ||
textdetector = TextDetector() | ||
boxes = textdetector.detect(boxes, scores[:, np.newaxis], img.shape[:2]) | ||
draw_boxes(img, im_name, boxes, scale) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
from __future__ import print_function | ||
|
||
import os | ||
import sys | ||
|
||
import tensorflow as tf | ||
from tensorflow.python.framework.graph_util import convert_variables_to_constants | ||
|
||
sys.path.append(os.getcwd()) | ||
from lib.networks.factory import get_network | ||
from lib.fast_rcnn.config import cfg, cfg_from_file | ||
|
||
if __name__ == "__main__": | ||
cfg_from_file('ctpn/text.yml') | ||
|
||
config = tf.ConfigProto(allow_soft_placement=True) | ||
sess = tf.Session(config=config) | ||
net = get_network("VGGnet_test") | ||
print(('Loading network {:s}... '.format("VGGnet_test")), end=' ') | ||
saver = tf.train.Saver() | ||
try: | ||
ckpt = tf.train.get_checkpoint_state(cfg.TEST.checkpoints_path) | ||
print('Restoring from {}...'.format(ckpt.model_checkpoint_path), end=' ') | ||
saver.restore(sess, ckpt.model_checkpoint_path) | ||
print('done') | ||
except: | ||
raise 'Check your pretrained {:s}'.format(ckpt.model_checkpoint_path) | ||
print(' done.') | ||
|
||
print('all nodes are:\n') | ||
graph = tf.get_default_graph() | ||
input_graph_def = graph.as_graph_def() | ||
node_names = [node.name for node in input_graph_def.node] | ||
for x in node_names: | ||
print(x) | ||
output_node_names = 'Reshape_2,rpn_bbox_pred/Reshape_1' | ||
output_graph_def = convert_variables_to_constants(sess, input_graph_def, output_node_names.split(',')) | ||
output_graph = 'data/ctpn.pb' | ||
with tf.gfile.GFile(output_graph, 'wb') as f: | ||
f.write(output_graph_def.SerializeToString()) | ||
sess.close() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/media/D/code/OCR/CTPN_LSTM/data/VOCdevkit |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
54,190,433,234 | ||
54,191,433,234 | ||
54,267,505,311 | ||
54,349,595,393 | ||
54,350,595,392 | ||
54,105,306,155 | ||
36,548,884,594 | ||
36,549,884,592 | ||
162,398,469,447 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
104,172,192,193 | ||
48,238,416,260 | ||
48,77,224,102 | ||
48,78,80,94 | ||
48,148,296,168 | ||
48,39,192,63 | ||
48,113,256,131 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
28,72,200,92 | ||
78,159,135,179 | ||
28,138,257,157 | ||
28,223,378,240 | ||
28,105,221,120 | ||
28,224,378,240 | ||
28,105,221,119 | ||
21,35,142,58 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
56,414,668,446 | ||
142,306,355,338 | ||
56,268,469,298 | ||
56,209,397,238 | ||
56,415,668,445 | ||
142,307,355,337 | ||
56,269,469,298 | ||
56,210,397,237 | ||
56,95,270,130 | ||
56,153,341,190 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
184,546,768,604 | ||
184,651,890,708 | ||
153,338,522,422 | ||
153,444,706,515 | ||
307,715,522,776 | ||
153,899,1228,962 | ||
184,548,768,602 | ||
184,653,890,707 | ||
153,337,522,422 | ||
153,446,706,514 | ||
307,717,522,775 | ||
153,901,1228,960 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,5 +3,5 @@ | |
179,118,691,237 | ||
179,623,614,740 | ||
153,952,947,1069 | ||
102,0,512,30 | ||
102,0,512,29 | ||
230,800,921,906 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
0,653,254,675 | ||
872,654,1018,676 | ||
181,373,836,558 | ||
436,287,545,387 | ||
0,654,254,674 | ||
872,655,1018,675 | ||
181,374,836,556 | ||
436,288,545,386 | ||
345,100,654,310 |
Oops, something went wrong.