CHINESE-OCR icon indicating copy to clipboard operation
CHINESE-OCR copied to clipboard

ubuntu下成功运行CHINESE-OCR的几点建议

Open pengcao opened this issue 6 years ago • 31 comments

1.需要安装几个库 apt install graphviz pip3 install graphviz pip3 install pydot pip3 install torchvision pip3 install torch torchvision 2.在运行sh的时候需要注意是python还是python3 3.更改 (1)需要将CHINESE-OCR-master\angle\predict.py文件中
/Users/xiaofeng/Code/Github/dataset/CHINESE_OCR/angle/modelAngle.h5改成 /opt/CHINESE-OCR-master/angle/modelAngle.h5 (2)需要将CHINESE-OCR-master\ctpn\ctpn\model.py文件中 /Users/xiaofeng/Code/Github/dataset/CHINESE_OCR/ctpn/ctpn_checkpoints/ 改成 /opt/CHINESE-OCR-master/ctpn/checkpoints/ 4.调试,具体问题可以发送到我的邮件:### [email protected] 进行沟通。

pengcao avatar Dec 12 '18 10:12 pengcao

大佬帮了大忙了,readerme写的太简单了,运行起来都各种坑

OKhyc avatar Dec 17 '18 02:12 OKhyc

有好资源大家一起共享

pengcao avatar Dec 17 '18 04:12 pengcao

你好,我运行出了个问题:

File "/home/fating/WorkSpace/src/CHINESE-OCR/ctpn/ctpn/model.py", line 36, in load_tf_model
reader = tf.train.NewCheckpointReader(ckpt.model_checkpoint_path)
AttributeError: 'NoneType' object has no attribute 'model_checkpoint_path'
有解决方案吗,我的路径是对的

harlanhong avatar Dec 21 '18 01:12 harlanhong

可以了,使用全局路径才对,我使用的是相对路径

harlanhong avatar Dec 21 '18 01:12 harlanhong

'/opt/CHINESE-OCR/ctpn/checkpoints/'

你是怎么写的,这个问题我一直存在但是没解决,求解那该怎么写路径

OKhyc avatar Dec 21 '18 05:12 OKhyc

就直接写绝对路径上去

harlanhong avatar Dec 21 '18 05:12 harlanhong

sess = tf.Session()
ckpt = tf.train.get_checkpoint_state( '/opt/CHINESE-OCR/ctpn/checkpoints/')
print(ckpt.model_checkpoint_path)

print()这里就会报错,大佬你这边是咋写的

OKhyc avatar Dec 21 '18 06:12 OKhyc

我也就下面那样啊 image

harlanhong avatar Dec 21 '18 08:12 harlanhong

def load_tf_model(): cfg.TEST.HAS_RPN = True # Use RPN for proposals # init session config = tf.ConfigProto(allow_soft_placement=True) net = get_network("VGGnet_test") # load model saver = tf.train.Saver() # sess = tf.Session(config=config) sess = tf.Session() ckpt = tf.train.get_checkpoint_state( '/opt/chinese_ocr/ctpn/checkpoints/') reader = tf.train.NewCheckpointReader(ckpt.model_checkpoint_path) var_to_shape_map = reader.get_variable_to_shape_map() for key in var_to_shape_map: print("Tensor_name is : ", key) # print(reader.get_tensor(key)) saver.restore(sess, ckpt.model_checkpoint_path) print("load vggnet done") return sess, saver, net

pengcao avatar Dec 21 '18 14:12 pengcao

我就是改了提到的那几点,可以成功运行 你可以看看https://github.com/pengcao/chinese_ocr

pengcao avatar Dec 21 '18 14:12 pengcao

(1)使用pytorch跑的时候,需要对pytorch的代码进行稍微更改一下,pytorch_model.model方法里面的在进行调用crnnRec方法的时候,报错; (2)建议使用pytorch来跑,因为pytorch在cpu和GPU环境下跑的时候,都不会报错,但是keras在GPU环境下的时候会报错。 而且在GPU环境下跑的时候需要对ctpn\lib\utils下的gpu_nms.pyx进行更改

pengcao avatar Dec 23 '18 02:12 pengcao

经过不断测试调整,又翻了下历史记录,折腾了快一周。。我的代码终于跑通了,现在大概记录几点好了:

  1. 由于确实菜逼一个(DL,python,linux等等,不会的太多了),环境是在win10下搭的,项目基于pytorch+tensorflow,keras由于VGG需要简单使用,但是应该tf.keras可以替代,但还没试过。Anaconda py3.6环境搭的,自带环境大部分基本包都有了,但是包的依赖关系真是一言难尽:expressionless:提一下lmdb是用pip直接装的,官网说后续支持py3.x版本,但是发现貌似没有问题。package版本可能不严格保证作者相同,大概如下,毫不相关的自行忽略23333 env.docx

  2. 针对环境再多嘴一下(算是做个备忘吧),tensorflow cpu 1.7试过但是经常报一个关于tf文件底下not found的错误,但是这个文件是存在的,不是很懂,一气之下随便换了个1.6版本,结果就过了。。行吧。然后就是gpu版本的话,cuda9.0应该没什么好说的,pytorch用的0.41版本(cu90/torch-0.4.1-cp36-cp36m-win_amd64.whl),当时cudnn版本没有装对,RuntimeError: cuDNN version mismatch: PyTorch was compiled against 7004 but linked against 5005,因此 需要cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0

  3. 对于ctpn的结构仍不理解,代码也不是很清楚,ctpn/lib/utils下的文件不知为何build_ext编译不了动态引入文件得不到.so文件$ python setup.py build_ext --inplace running build_ext error: [WinError 2] 系统找不到指定的文件。然后就直接用py代码直接照搬了一下,虽然能跑,就是真的太慢了,这点慢慢研究吧。

  4. 对于模型路径自己调整就行,keras和VGG在网盘中有,pytorch已经自带。其他想到以后再补充。

aabbcc1234mxd avatar Dec 23 '18 07:12 aabbcc1234mxd

想问一下各位可以把ctpn\lib\utils下build好的bbox,cython-nms,gpu-nms动态编译文件给我一份吗。。我电脑总是有python setup.py build_ext --inplace running build_ext error: [WinError 2] 系统找不到指定的文件。这样的错误。。或者求个解决方案,谢谢!

aabbcc1234mxd avatar Dec 24 '18 09:12 aabbcc1234mxd

我搭建起来 ,我也不会训练,太复杂了。

OKhyc avatar Dec 24 '18 11:12 OKhyc

找不到什么文件?

pengcao avatar Jan 05 '19 13:01 pengcao

找不到什么文件?

我也不知道是什么缺失了。。总之就是Windows环境下编译什么cython文件都不成功,所以还能用Windows的各位能帮个忙吗,感激不尽了!

aabbcc1234mxd avatar Jan 07 '19 15:01 aabbcc1234mxd

windows下没有尝试

pengcao avatar Jan 08 '19 15:01 pengcao

@pengcao File "demo.py", line 8, in import model File "/home/dc2-user/dlprojects/chinese_ocr2/model.py", line 15, in from ctpn.text_detect import text_detect File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/text_detect.py", line 3, in from .ctpn.detectors import TextDetector File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/ctpn/detectors.py", line 10, in from ..lib.fast_rcnn.nms_wrapper import nms File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/lib/init.py", line 1, in from . import fast_rcnn File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/lib/fast_rcnn/init.py", line 2, in from . import nms_wrapper File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/lib/fast_rcnn/nms_wrapper.py", line 2, in from ..utils.cython_nms import nms as cython_nms File "/home/dc2-user/dlprojects/chinese_ocr2/ctpn/lib/utils/init.py", line 1, in from . import bbox ImportError: cannot import name 'bbox' 怎么解决?

moFang222 avatar Feb 16 '19 15:02 moFang222

看一下bbox,gpu_nms,cython_nms这几个pyx有没有动态编译为linux下.so或者windows下的pyd文件

aabbcc1234mxd avatar Feb 16 '19 15:02 aabbcc1234mxd

我也就下面那样啊 image

@harlanhong我看ctpn下面没有checkpoint这个文件夹,是自己训练创建的吗,还是下载的现成模型。

AlexPeng19 avatar Apr 02 '19 01:04 AlexPeng19

去下载,百度云地址给了的

aabbcc1234mxd avatar Apr 02 '19 02:04 aabbcc1234mxd

文档里没找到opt文件夹啊,是自定义 存放路径吗

ericosmic avatar Apr 21 '19 14:04 ericosmic

提示文档内没有/opt/chinese_ocr/angle/modelAngle.h5 文件,这个怎么改

ericosmic avatar Apr 21 '19 14:04 ericosmic

https://pan.baidu.com/s/1zquQNdO0MUsLMsuwxbgPYg,自己改一下路径就行

aabbcc1234mxd avatar Apr 22 '19 07:04 aabbcc1234mxd

请问:数据labels再ont_hot 函数里面怎么转啊,超过10的部分全为0了,0对应字典‘,这标签不久错了?求帮助啊,谢谢 def one_hot(text, length=10, characters=characters): label = np.zeros(length) print("text:",text) #print("characters:",characters) for i, char in enumerate(text): index = characters.find(char) if index == -1: index = characters.find(u' ') if i < length: label[i] = int(index) #print("type(index):",type(index)) label[len(text):] = characters.find(u' ') print("label:",label) return label 这个代码改了,如果长度小于10用空格调充标签可以?。。。求大佬解释一下??谢谢

cqray1990 avatar May 15 '19 02:05 cqray1990

@aabbcc1234mxd 请问windows下你编译成功了吗

kli017 avatar Jun 22 '19 09:06 kli017

感觉挺不错的项目,readme很是不清晰

Crescentz avatar Jul 12 '19 08:07 Crescentz

The angel of this character is: 0 Rotate the array of this img! Traceback (most recent call last): File "demo.py", line 22, in img, model='keras', adjust=True, detectAngle=True) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\model.py", line 118, in model result = crnnRec(img, text_recs, model, adjust=adjust) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\model.py", line 57, in crnnRec sim_pred = ocr(image) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\ocr\model.py", line 105, in predict y_pred = basemodel.predict(X) AttributeError: 'NoneType' object has no attribute 'predict' 这是什么问题有人知道吗

Nicolasdeke avatar Jul 12 '19 17:07 Nicolasdeke

@Nicolasdeke AttributeError: 'NoneType' object has no attribute 'predict' 请问这个问题您解决了么?

305863162 avatar Jul 18 '19 09:07 305863162

The angel of this character is: 0 Rotate the array of this img! Traceback (most recent call last): File "demo.py", line 22, in img, model='keras', adjust=True, detectAngle=True) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\model.py", line 118, in model result = crnnRec(img, text_recs, model, adjust=adjust) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\model.py", line 57, in crnnRec sim_pred = ocr(image) File "D:\QQ\chinese_ocr-master\chinese_ocr-master\ocr\model.py", line 105, in predict y_pred = basemodel.predict(X) AttributeError: 'NoneType' object has no attribute 'predict' 这是什么问题有人知道吗

同样遇到了这个问题,请问你有解决嘛

yylittlefish avatar Jul 26 '19 03:07 yylittlefish