当前位置: 首页 > news >正文

快要到期的域名网站深圳有限公司官网

快要到期的域名网站,深圳有限公司官网,网站affiliate怎么做,域名价格是怎么收费的前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上#xff0c;欢迎参考使用#xff0c;Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明#xff1a;对手动拍照的问卷图片进行统计分数#xff08;对应分数…前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上欢迎参考使用Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明对手动拍照的问卷图片进行统计分数对应分数打对号单张问卷各项得分写入excel文件并汇总所有图片得分到 excel 模型 基于前面的模型知识完成了这一需求 首先涉及到的模型在技术测试过程中也发现了一些效果更好的模型放在后续迭代过程中加入 表格定位模型使用ppstructure 表格特征编码模型和表格结构识别模型 分别是 Detr和 微软的table-transformer-structure-recognition 字符识别模型使用 PaddleOCR 对号处理模型使用 微调的Yolov8n-clsYolov8n-det 也可以 模型的加载统一放在 ModelManager.py 中实现 UI UI是用pyqt5简单实现的界面主要包括 简单的进度展示 简单的图像状态展示 处理图像展示 打开单张图片、打开文件夹、以及 开始处理的三个按钮 其中模型加载以及表格图像处理都是耗时操作为了避免主进程阻塞导致界面卡住使用了 Worker 封装然后用线程执行多提升点用户体验在Workers.py 中定义 UI层逻辑 模型加载 self.model: TableProcessModel None self.thread None self.worker None# load model by thread self.load_model()load_model函数 def load_model(self):self.thread QThread()self.worker ModelLoadWorker()self.worker.moveToThread(self.thread)# connectself.worker.model_loaded.connect(self.on_model_loaded)self.thread.started.connect(self.worker.run)self.thread.finished.connect(self.thread.deleteLater)#self.thread.start()表格处理 def process_images_v2(self):if self.model is None:QMessageBox.information(self, info, Model has not been loaded successfully! Please wait)returnif len(self.images_need_process) 0:QMessageBox.information(self, info, No Image loaded! Please load images)returnself.process_button.setEnabled(False)self.thread QThread()self.worker ImageProcessWorker(self.images_need_process, self.model, logTrue)self.worker.moveToThread(self.thread)self.worker.image_processed.connect(self.update_ui)self.worker.finished.connect(self.on_processing_finished)self.worker.show_signal.connect(self.load_image_on_screen)self.thread.started.connect(self.worker.run)self.thread.start()模型加载Worker class ModelLoadWorker(QObject):model_loaded pyqtSignal(object)def __init__(self):super().__init__()self.model Nonedef run(self):try:self.model TableProcessModel()except Exception as e:print(error loading model, e)else:self.model_loaded.emit(self.model)如有问题欢迎留言、私信或加群交流【群号392784757】 Workers 图像表格处理 Worker class ImageProcessWorker(QObject):image_processed pyqtSignal(str)finished pyqtSignal()show_signal pyqtSignal(int)def __init__(self, images, model:TableProcessModel,logFalse):super().__init__()self.images imagesself.processor modelself.log logpyqtSlot()def run(self):for i, image_path in enumerate(self.images):try:self.show_signal.emit(i)# 处理图片if self.log:print(processing , image_path, ---, end)self.processor.run(image_path)if self.log:print(done)time.sleep(0.5)self.image_processed.emit(fProcessed: {image_path})except Exception as e:self.image_processed.emit(fError processing {image_path}: {str(e)})self.finished.emit() # 处理完成在具体执行时交由线程处理避免了主线程的阻塞 表格处理模块 TableProcess.py 涉及到的模型表格定位模型、表格特征编码和表格结构识别模型 其中表格处理模块 在完成结构识别后会调用统计分数模块二者存在一定的低耦合性但主要逻辑还是互相分离比较清晰也方便适配其他业务逻辑只需要修改或添加 后面的业务模块如统计分数 统一调用接口 def run(self, next_image_path):try:self.reset_results()self.image_path next_image_pathself.load_image()self.initialize_cache_dir()self.run_parse_table()self.score_eval.eval_score()self.score_eval.to_xlsx()except Exception as e:print(run error , e)核心函数 run_parse_table() def run_parse_table(self):table_image self.infer_locate_table() # bgrif len(self.locate_table_bbox) 0:raise Exception(定位表格失败)table_image Image.fromarray(cv2.cvtColor(table_image,cv2.COLOR_BGR2RGB))target_sizes [table_image.size[::-1]]self.encoding_for_table_split(table_image)if self.table_split_result[encoding] is None:raise Exception(表格特征编码失败)self.infer_split(self.table_split_result[encoding], target_sizes)if len(self.table_split_result.keys()) 1:raise Exception(表格切分失败)self.parse_table_split_result()# visualize first for debugif CACHE:self.draw_boxs(table_image.copy(), cut_cellFalse)self.setup_score_eval(table_image)整体流程表格定位 - 表格图像编码 - 表格结构识别 - 表格分数评估 中间图settings.py 中提供了 CACHE True 开启默认False 关闭 其中 self.infer_locate_table() self.encoding_for_table_split(table_image) self.infer_split(self.table_split_result[‘encoding’], target_sizes) 分别涉及了模型的推理 完整代码请前往 Github 下载查看 统计分数模块 ScoreEvaluation.py 涉及到的模块字符识别模型、对号处理模型 主要函数 eval_score() def eval_score(self):for row_i in range(self.n_row):if row_i 0:continuescore_boxs self.cells[row_i*self.n_col self.score_col_start_idx:row_i*self.n_colself.score_col_end_idx1]line_score self.eval_line_score(score_boxs)self.row_scores.append(line_score)self.score_history.append((f{self.cur_image_name}_score.xlsx, sum(self.row_scores)))eval_line_score() 评估每一行得分涉及到模型推理以及顺序的判断 完整代码请前往 Github 下载查看 性能测试 4060 8G 16G RAM i9-13900HX 100张图片 GPU 3.5s/张CPU4.6s/张 注意事项 欢迎一起探讨留言、私信或加群 交流【群号392784757】 编程过程注意 使用一定的方法防止模型重复加载一次加载多次推理 paddle的模型 GPU的使用应该是自动管理的use_gpu True其他模型的GPU推理需要自行管理同时需要设置 输入 和 模型 所在设备位置一致 CPU/GPU 模型的推理与解析需要先了解模型输入输出根据官方demo/sample学习然后结合自己的需求修改多Debug 不同模型默认使用的图像读取有的是 PIL.Image或者是 cv2.imread() 读取后送入模型处理发现模型结果有一定区别甚至完全不对当发现你的模型结果很奇怪不妨查看一下 输入 耗时操作不要在主线程做【我的模型加载在ui初始化里完成虽然使用了额外线程去做但还是会影响到主线程主界面有大佬知道怎么处理还请指点】 对于某些操作如处理单张图片和文件夹多张图片 应该要统一加载图片接口统一 不要分别实现 注意资源的清理临时变量的清理
http://www.dnsts.com.cn/news/179084.html

相关文章:

  • 网站商城建设合同范本网页设计需要学什么软件
  • 无法打开建行网站广告网站建设最专业
  • 婚庆网站建设必要性给公司做网站要多少钱
  • 鄞州中学网站谁做的时尚网站
  • 广东工程建设咨询有限公司网站广州安全教育平台登录入口官网
  • 兰州市住房和建设局网站s上海网站建设
  • 西安建设网站公司做游戏直播什么游戏视频网站好
  • 佛山网站制作的公司虹口上海网站建设
  • 沈阳模板建站软件工装公司怎么找
  • 东营做网站seo的纹理网站推荐
  • 太原新建火车站关于进一步加强网站建设
  • 英文网站推广方法网站视频打不开什么原因
  • 河南省建设监理协会网站人才十有没有做淘宝网站的
  • 网站改版中 模板旅游网站介绍怎么写
  • wordpress 即时站内搜索信誉好的永州网站建设
  • 做网站商铺模板品牌设计公司企业vi设计
  • asp.net网站制作教程wordpress twenty eleven search
  • 网站项目需求说明书石排网站仿做
  • 网站开发教程 模板中国建筑人才网app下载
  • 南京建设集团网站如何注销公司
  • 做母婴的网站有哪些免费云电脑
  • 二级建造师建设云网站设计视频网站
  • 网站里会自动换图怎么做建设茶叶网站的目的
  • 做网站还有前景吗WordPress查看已发送邮件
  • 做网站的前端框架一同看网页打不开
  • 自己做网站卖货多少钱做网站需提供什么资料
  • 2019年 dede网站哪些网站做的不好用
  • 茶网站开发的意义目的网站建设赚钱么
  • 百竞(湘潭)网站建设做机票在线预订网站
  • 教育培训网站抄袭学校网站建设阶段性目标