Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于半自动标注工具PPOCRLabel运行速度由快逐渐变慢的问题 #1391

Closed
cdb494748813 opened this issue Dec 11, 2020 · 6 comments

Comments

@cdb494748813
Copy link

1.问题描述
在使用PPOCRLabel进行自动标注的过程中,发现文本检测模块运行速度由最开始的每帧三百多毫秒逐渐变为每帧数秒,且速度还在不断变慢中。初步定位为后处理DBPostProcess耗时在增加,db模型预测速度正常。其余方向分类和文本识别模块运行正常。

2.运行环境
ubuntu16.04,paddlepaddle-gpu 2.0.0rc0,PaddleOcr为最新版本

3.终端输出信息
/home/scxd/anaconda3/envs/tf15/bin/python /home/scxd/下载/PaddleOCR/PPOCRLabel/PPOCRLabel.py
You are using Paddle compiled with TensorRT, but TensorRT dynamic library is not found. Ignore this if TensorRT is not needed.W1211 15:50:30.711303 20512 analysis_predictor.cc:1042] Deprecated. Please use CreatePredictor instead.
Namespace(cls=True, cls_batch_num=30, cls_image_shape='3, 48, 192', cls_model_dir='/home/scxd/.paddleocr/cls', cls_thresh=0.9, det=True, det_algorithm='DB', det_db_box_thresh=0.5, det_db_thresh=0.3, det_db_unclip_ratio=2.0, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_east_score_thresh=0.8, det_max_side_len=960, det_model_dir='/home/scxd/.paddleocr/det', enable_mkldnn=True, gpu_mem=8000, image_dir=None, ir_optim=True, label_list=['0', '180'], lang='ch', max_text_length=25, rec=True, rec_algorithm='CRNN', rec_batch_num=30, rec_char_dict_path='./ppocr/utils/ppocr_keys_v1.txt', rec_char_type='ch', rec_image_shape='3, 32, 320', rec_model_dir='/home/scxd/.paddleocr/rec/ch', use_angle_cls=True, use_gpu=False, use_pdserving=False, use_space_char=True, use_tensorrt=False, use_zero_copy_run=True)
--- fused 0 scale with matmul
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with transpose's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape with transpose's xshape
--- Fused 0 MatmulTransposeReshape patterns
--- fused 0 scale with matmul
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with transpose's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape with transpose's xshape
--- Fused 0 MatmulTransposeReshape patterns
--- fused 0 scale with matmul
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with transpose's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape
--- Fused 0 ReshapeTransposeMatmulMkldnn patterns with reshape's xshape with transpose's xshape
--- Fused 0 MatmulTransposeReshape patterns
det predict time: 0.037546396255493164
dt_boxes num : 1, elapse : 0.039429426193237305
cls num : 1, elapse : 0.057495832443237305
rec_res num : 1, elapse : 0.04390716552734375
file name in openNext is /home/scxd/下载/PaddleOCR/PPOCRLabel/0202/车牌号码一致-不合格/0582010260002_豫ELE138_LS4AAB3D69A207903_B_长安牌_SC6399E3S_4110000820296_0202.jpg
dirPath in importDirImages is /home/scxd/下载/PaddleOCR/PPOCRLabel/0202/车牌号码一致-不合格
Using model from paddle
det predict time: 0.2977015972137451
dt_boxes num : 77, elapse : 0.3498392105102539
cls num : 77, elapse : 0.1686859130859375
rec_res num : 77, elapse : 0.6987478733062744
det predict time: 0.22007083892822266
dt_boxes num : 73, elapse : 0.2685093879699707
cls num : 73, elapse : 0.1276531219482422
rec_res num : 73, elapse : 0.47435808181762695
det predict time: 0.1806654930114746
dt_boxes num : 76, elapse : 0.22925329208374023
cls num : 76, elapse : 0.10770082473754883
rec_res num : 76, elapse : 0.5447311401367188
det predict time: 0.20402884483337402
dt_boxes num : 76, elapse : 0.6207420825958252
cls num : 76, elapse : 0.11475825309753418
rec_res num : 76, elapse : 0.5139966011047363
det predict time: 0.19577980041503906
dt_boxes num : 73, elapse : 0.864727258682251
cls num : 73, elapse : 0.123138427734375
rec_res num : 73, elapse : 0.564220666885376
det predict time: 0.24736261367797852
dt_boxes num : 77, elapse : 0.8772099018096924
cls num : 77, elapse : 0.13273119926452637
rec_res num : 77, elapse : 0.5378413200378418
det predict time: 0.21146535873413086
dt_boxes num : 73, elapse : 1.1587340831756592
cls num : 73, elapse : 0.11177635192871094
rec_res num : 73, elapse : 0.5897774696350098
det predict time: 0.24874520301818848
dt_boxes num : 73, elapse : 1.2370197772979736
cls num : 73, elapse : 0.10873270034790039
rec_res num : 73, elapse : 0.565443754196167
det predict time: 0.1952371597290039
dt_boxes num : 76, elapse : 1.2825310230255127
cls num : 76, elapse : 0.11092448234558105
rec_res num : 76, elapse : 0.5688521862030029
det predict time: 0.2193150520324707
dt_boxes num : 76, elapse : 1.639373540878296
cls num : 76, elapse : 0.14500761032104492
rec_res num : 76, elapse : 0.7249767780303955
det predict time: 0.3704209327697754
dt_boxes num : 74, elapse : 1.8702874183654785
cls num : 74, elapse : 0.1795973777770996
rec_res num : 74, elapse : 0.5498309135437012
det predict time: 0.18817448616027832
dt_boxes num : 73, elapse : 1.4679145812988281
cls num : 73, elapse : 0.10832524299621582
rec_res num : 73, elapse : 0.4966611862182617
det predict time: 0.2001192569732666
dt_boxes num : 74, elapse : 1.62302565574646
cls num : 74, elapse : 0.11504983901977539
rec_res num : 74, elapse : 0.5624067783355713
det predict time: 0.2997562885284424
dt_boxes num : 74, elapse : 2.0461623668670654
cls num : 74, elapse : 0.14160466194152832
rec_res num : 74, elapse : 0.5207874774932861
det predict time: 0.19435358047485352
dt_boxes num : 76, elapse : 1.9407012462615967
cls num : 76, elapse : 0.14803338050842285
rec_res num : 76, elapse : 0.6762921810150146
det predict time: 0.3132789134979248
dt_boxes num : 75, elapse : 2.5018603801727295
cls num : 75, elapse : 0.1715550422668457
rec_res num : 75, elapse : 0.6884877681732178
det predict time: 0.3265566825866699
dt_boxes num : 75, elapse : 2.079115629196167
cls num : 75, elapse : 0.10779476165771484
rec_res num : 75, elapse : 0.5672132968902588
det predict time: 0.21246790885925293
dt_boxes num : 72, elapse : 1.6790547370910645
cls num : 72, elapse : 0.14844393730163574
rec_res num : 72, elapse : 0.5574753284454346
det predict time: 0.3297126293182373
dt_boxes num : 73, elapse : 2.6516916751861572
cls num : 73, elapse : 0.16812753677368164
rec_res num : 73, elapse : 0.6038415431976318
det predict time: 0.3096339702606201
dt_boxes num : 73, elapse : 2.999793291091919
cls num : 73, elapse : 0.16036033630371094
rec_res num : 73, elapse : 0.5871908664703369
det predict time: 0.3044452667236328
dt_boxes num : 71, elapse : 1.8405787944793701
cls num : 71, elapse : 0.13389158248901367
rec_res num : 71, elapse : 0.49244165420532227
det predict time: 0.19132757186889648
dt_boxes num : 70, elapse : 2.9579010009765625
cls num : 70, elapse : 0.1821136474609375
rec_res num : 70, elapse : 0.6313180923461914
det predict time: 0.31190919876098633
dt_boxes num : 73, elapse : 3.1229403018951416
cls num : 73, elapse : 0.11895394325256348
rec_res num : 73, elapse : 0.5247178077697754
det predict time: 0.1909348964691162
dt_boxes num : 73, elapse : 2.9996631145477295
cls num : 73, elapse : 0.14319229125976562
rec_res num : 73, elapse : 0.5795223712921143
det predict time: 0.3408496379852295
dt_boxes num : 68, elapse : 2.336437463760376
cls num : 68, elapse : 0.13057756423950195
rec_res num : 68, elapse : 0.4755406379699707
det predict time: 0.2293105125427246
dt_boxes num : 74, elapse : 3.192828893661499
cls num : 74, elapse : 0.2037339210510254
rec_res num : 74, elapse : 0.6341958045959473
det predict time: 0.263242244720459
dt_boxes num : 70, elapse : 3.8145816326141357
cls num : 70, elapse : 0.15537261962890625
rec_res num : 70, elapse : 0.5746915340423584
det predict time: 0.3264651298522949
dt_boxes num : 68, elapse : 2.273308515548706
cls num : 68, elapse : 0.15056896209716797
rec_res num : 68, elapse : 0.5434515476226807
det predict time: 0.19071388244628906
dt_boxes num : 76, elapse : 3.6470935344696045
cls num : 76, elapse : 0.17305803298950195
rec_res num : 76, elapse : 0.5492415428161621
det predict time: 0.35550856590270996
dt_boxes num : 74, elapse : 3.73460054397583
cls num : 74, elapse : 0.1271042823791504
rec_res num : 74, elapse : 0.49611639976501465
det predict time: 0.2380836009979248
dt_boxes num : 72, elapse : 4.321373701095581
cls num : 72, elapse : 0.17403864860534668
rec_res num : 72, elapse : 0.5772228240966797
det predict time: 0.36488890647888184
dt_boxes num : 69, elapse : 3.1870806217193604
cls num : 69, elapse : 0.13794469833374023
...

@cdb494748813
Copy link
Author

请问有人遇到过吗?我用的cpu,开启了mkldnn和zero_copy_run,但是关闭这两项也是类似的结果

@caopulan
Copy link

内存正常吗,我是在训练的时候发现infer和eval环节不释放内存,怀疑可能是已知没释放导致变卡

@cdb494748813
Copy link
Author

内存正常吗,我是在训练的时候发现infer和eval环节不释放内存,怀疑可能是已知没释放导致变卡

程序持续运行了一段时间后内存确实开始增长,使用GPU时显存也在增长

@cdb494748813
Copy link
Author

1.问题大概找到了:
是自动标注线程处理过程中,对于每张图的识别结果通过listValue(pyqtSignal)连续进行了多次emit,不知为何就影响了db检测的后处理部分的运行速度......将识别结果分批emit,修改为拼接识别结果后统一emit,修改后程序运行速度正常
2.程序修改:
autoDialog.py -> class Worker -> run函数,修改为:

def run(self):
    try:
        findex = 0
        for Imgpath in self.mImgList:
            if self.handle == 0:
                self.listValue.emit(Imgpath)
                if self.model == 'paddle':
                    self.result_dic = self.ocr.ocr(Imgpath, cls=True, det=True)

                # 结果保存
                if self.result_dic is None or len(self.result_dic) == 0:
                    print('Can not recognise file  is :  ', Imgpath)
                    pass
                else:
                    strs = ''
                    for res in self.result_dic:
                        chars = res[1][0]
                        cond = res[1][1]
                        posi = res[0]
                        strs += "文字:" + chars + " 置信度:" + str(cond) + " 坐标:" + json.dumps(posi) + '\n'
                        # self.listValue.emit("文字:" + chars + " 置信度:" + str(cond) + " 坐标:" + json.dumps(posi))
                    self.listValue.emit(strs)
                    self.mainThread.result_dic = self.result_dic
                    self.mainThread.filePath = Imgpath
                    # 保存
                    self.mainThread.saveFile(mode='Auto')
                findex += 1
                self.progressBarValue.emit(findex)
            else:
                break
        self.endsignal.emit(0, "readAll")
        self.exec()
    except Exception as e:
        print(e)
        raise

@Evezerest
Copy link
Collaborator

非常感谢,方便提一个PR吗

@cdb494748813
Copy link
Author

非常感谢,方便提一个PR吗

好的,我整理一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants