开源发票识别InvoiceNet项目Windows部署踩坑记(1)

今天安装在github上的InvoiceNet开源项目,准备对它进行测试,安装过程出现了一些问题,做个记录,给遇到兄弟爬坑。
InvoiceNet

第一个问题,conda的问题,

这是另外一个包管理器,不仅仅可以管理python的虚拟环境,还能管理很多其他语言的包或库,主要是科学计算、人工智能领域的开发者用的比较多,(感叹:这个时代的轮子太多了)

第二个问题,执行pip install .的命令时,提示:ERROR: No matching distribution found for tensorflow==2.13.1

在这里插入图片描述

在网上找了半天,大致是说在pypi上找不到对应版本的包,唉~~为啥这包就没有了呢?只放最新的吗?
后来想到别人应该也会遇到,于是到项目的问题列表中找了一下,果不其然,有人遇到https://github.com/naiveHobo/InvoiceNet/issues/117
解决的办法是在setup.py中,去掉指定的tensorflow的版本号,我这就有点奇怪了,既然这个问题早就有了,为啥在setup.py中不修改一下呢?还有那个numpy的版本,而且这两个的版本号在setup.py中还是单独指定的,真是有点不太理解。懂的兄弟可以给解惑一下,谢啦。
在这里插入图片描述

去掉了版本号,终于可以正常执行pip install .了

第三个问题:执行训练工具报错:

执行完成后,运行训练工具,但是报错:

(invoicenet) D:\Projects\AI\InvoiceNet>python trainer.py
2024-07-22 21:33:31.035230: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2024-07-22 21:33:31.035436: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Traceback (most recent call last):File "trainer.py", line 22, in <module>from invoicenet.gui.trainer import TrainerFile "D:\Projects\AI\InvoiceNet\invoicenet\gui\trainer.py", line 36, in <module>from ..acp.acp import AttendCopyParseFile "D:\Projects\AI\InvoiceNet\invoicenet\acp\acp.py", line 24, in <module>import tensorflow as tfFile "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\__init__.py", line 37, in <module>from tensorflow.python.tools import module_util as _module_utilFile "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\python\__init__.py", line 37, in <module>from tensorflow.python.eager import contextFile "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\python\eager\context.py", line 29, in <module>from tensorflow.core.framework import function_pb2File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\core\framework\function_pb2.py", line 16, in <module>from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\core\framework\attr_value_pb2.py", line 16, in <module>from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\core\framework\tensor_pb2.py", line 16, in <module>from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\core\framework\resource_handle_pb2.py", line 16, in <module>from tensorflow.core.framework import tensor_shape_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__shape__pb2File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\tensorflow\core\framework\tensor_shape_pb2.py", line 42, in <module>serialized_options=None, file=DESCRIPTOR),File "C:\Users\Atom\.conda\envs\invoicenet\lib\site-packages\google\protobuf\descriptor.py", line 561, in __new___message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:1. Downgrade the protobuf package to 3.20.x or lower.2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

报错“cudart64_110.dll not found”,dll不存在,搜索资料后发现是nvida的cuda开发工具

2024-07-22 22:41:34.544495: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2024-07-22 22:41:34.544737: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.

没看仔细这个只是个警告信息,不影响,下面的部分才是异常,白搞了半天

根据异常信息搜索,在statckoverflow找到了答案:

https://stackoverflow.com/questions/72441758/typeerror-descriptors-cannot-not-be-created-directly

这个是机翻的截图
这个是原文截图
这是原文

(invoicenet) D:\Projects\AI\InvoiceNet>pip install protobuf==3.20.*
Collecting protobuf==3.20.*Downloading protobuf-3.20.3-cp37-cp37m-win_amd64.whl.metadata (699 bytes)
Downloading protobuf-3.20.3-cp37-cp37m-win_amd64.whl (905 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 905.1/905.1 kB 1.8 MB/s eta 0:00:00
Installing collected packages: protobufAttempting uninstall: protobufFound existing installation: protobuf 4.24.4Uninstalling protobuf-4.24.4:Successfully uninstalled protobuf-4.24.4

终于成功了

安装完成后重新运行:python trainer.py,启动成功
终于启动成功了!
终于启动成功了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui+thymeleaf+jquery实现多图片,多视频的上传、预览、放大、编辑功能

layuithymeleafjquery实现多图片&#xff0c;多视频的上传、预览、放大、编辑功能 html: <!--多图片上传--> <div class"layui-row layui-col-space10"><div class"layui-form-item"><div class"layui-form-item layui-form-te…

mybatis xml 文件中引用Java类的静态方法

MyBatis-Plus 支持在 XML 映射文件中使用 ${} 来直接嵌入字符串&#xff0c;以及使用 #{} 来引用传入参数。但是&#xff0c;$ 的使用需要小心&#xff0c;因为它会直接将参数内容嵌入到 SQL 语句中&#xff0c;这可能会导致 SQL 注入问题。 在 MyBatis-Plus 中&#xff0c;如果…

Android 防止重复点击

1.第一种方式&#xff1a; private static final int MIN_DELAY_TIME 2000; // 两次点击间隔不能少于2000ms private static long lastClickTime System.currentTimeMillis(); public static boolean isFastClick() { boolean flag true; long currentClickTime …

苹果电脑怎么清理缓存和垃圾 mac如何关闭正在运行的程序 苹果电脑怎么清理后台

苹果电脑以其出色的性能和用户友好的界面而广受好评&#xff0c;但在使用过程中&#xff0c;后台程序的堆积可能会影响到系统的运行效率。太多应用和进程在后台默默运行&#xff0c;就像是无形的背包&#xff0c;让你的Mac背负了太多不必要的重量。不过&#xff0c;别担心&…

08、Tomcat 部署及优化

8.1 Tomcat概述 8.1.1 Tomcat介绍 自从 JSP 发布之后,推出了各式各样的 JSP 引擎。Apache Group 在完成 GNUJSP1.0的开发以后&#xff0c;开始考虑在 SUN 的 JSWDK 基础上开发一个可以直接提供 Web 服务的 JSP服务器&#xff0c;当然同时也支持 Servlet, 这样 Tomcat 就诞生…

使用LSTM完成时间序列预测

c 在本教程中&#xff0c;我们将介绍一个简单的示例&#xff0c;旨在帮助初学者入门时间序列预测和 PyTorch 的使用。通过这个示例&#xff0c;你可以学习如何使用 LSTMCell 单元来处理时间序列数据。 我们将使用两个 LSTMCell 单元来学习从不同相位开始的正弦波信号。模型在…

MYSQL 七、mysql 日志与备份

一、其他数据库日志 千万不要小看日志。很多看似奇怪的问题&#xff0c;答案往往就藏在日志里。很多情况下&#xff0c;只有通过查看日志才 能发现问题的原因&#xff0c;真正解决问题。所以&#xff0c;一定要学会查看日志&#xff0c;养成检查日志的习惯&#xff0c;对提升你…

重复图片查找:巧用Python和OpenCV进行图像哈希与汉明距离检测以从海量图片中找出重复图片

重复图片查找&#xff1a;巧用Python和OpenCV进行图像哈希与汉明距离检测以从海量图片中找出重复图片 1. 导言2. 环境准备3. 图像哈希&#xff08;pHash&#xff09;原理4. 汉明距离原理5. 代码实现导入必要的库图像哈希计算函数汉明距离计算函数查找重复图片函数示例使用 在处…

乐鑫AWS IoT ExpressLink方案,简化物联网设备连接AWS IoT服务

在现代科技迅速发展的今天&#xff0c;物联网&#xff08;IoT&#xff09;已经成为连接物理世界与数字世界的重要桥梁&#xff0c;越来越多的设备开始接入网络&#xff0c;实现智能化控制。 在这个大背景下&#xff0c;乐鑫携手亚马逊&#xff0c;推出了AWS IoT ExpressLink方…

Linux:Linux发展史

大家好&#xff01;此篇文章并非技术博文&#xff0c;而是简单了解Linux的时代背景和发展史&#xff0c;只有知其所以然才能让我们更好地让走进Liunx的世界&#xff01; 一、计算机的发展历史背景 首先我们要知道&#xff0c;早期大多数科技的进步都是以国家的对抗为历史背景的…

Java语言程序设计基础篇_编程练习题**15.17 (几何问题:寻找边界矩形)

**15.17 (几何问題:寻找边界矩形) 请编写一个程序&#xff0c;让用户可以在一个二维面板上动态地增加和移除点&#xff0c;如图15-29a所示。当点加入和移除的时候&#xff0c;一个最小的边界矩形更新显示。假设每个点的半径是 10 像素 解题思路&#xff1a; 这道题可以从编程…

数学建模(4)——支持向量机算法

一、代码示例 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from sklearn.metrics import clas…

1-如何挑选Android编译服务器

前几天&#xff0c;我在我的星球发了一条动态&#xff1a;入手洋垃圾、重操老本行。没错&#xff0c;利用业余时间&#xff0c;我又重新捣鼓捣鼓代码了。在接下来一段时间&#xff0c;我会分享我从服务器的搭建到完成Android产品开发的整个过程。这些东西之前都是折腾过的&…

站在资本投资领域如何看待分布式光纤传感行业?

近年来&#xff0c;资本投资领域对于分布式光纤传感行业并不十分敏感。这主要是由于分布式光纤传感技术是一个专业且小众的领域&#xff0c;其生命周期相对较长&#xff0c;缺乏爆发性&#xff0c;与消费品或商业模式创新产业有所不同。此外&#xff0c;国内的投资环境也是影响…

谷粒商城实战笔记-42-前端基础-Vue-生命周期和钩子函数

下面是Vue官网关于生命周期及不同阶段的钩子函数的图示。 Vue 实例生命周期是指从一个组件被创建到最终被销毁的整个过程。 在这一过程中&#xff0c;Vue 提供了一系列的“钩子”函数&#xff0c;在生命周期的不同阶段执行自定义的代码。 以下是 Vue 对象生命周期的主要阶段…

图片转换之heic转jpg(使用ImageMagick)

缘由&#xff1a;iphone的图库&#xff0c;用jpg拍照保存后内存占比较大&#xff0c;heic格式会微缩不少。问题来了&#xff0c;电脑不能直接小图预览heic。 分析&#xff1a;现在就是解决小图预览的问题&#xff08;大图用wps可以看&#xff09; 解决&#xff1a;查找了一些…

Vue中的diff算法

文章目录 diff算法是什么比较方式源码分析patchpatchVnodeupdateChildren小结Vue3中diff算法优化diff算法是什么 diff算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行,不会跨层级比较在dff比较的过程中,循环从两边向中间比较(首位交叉…

基于神经网络的聚类分析

神经网络是一种非常有用的机器学习模型&#xff0c;具有无数的应用。今天&#xff0c;我们将分析一个数据集&#xff0c;看看我们是否可以通过应用无监督聚类技术来查找数据中的模式和隐藏分组&#xff0c;从而获得新的见解。 我们的目标是对复杂数据进行降维&#xff0c;以便…

mysql面试(一)

前言 从今天开始&#xff0c;更新一些mysql的基础知识&#xff0c;面试会遇到的知识点之类的内容。比如四个隔离级别&#xff0c;mvcc机制&#xff0c;三大日志&#xff0c;索引&#xff0c;B树的形成等等&#xff0c;从数据库的底层来剖析索引和树是怎么形成的&#xff0c;以…

接口自动化测试框架实战-0-项目功能概览

熟悉我CSDN的朋友们应该知道&#xff0c;之前已经更新了requests、pytest、allure2、yaml、jenkins、postman等基础知识的合集。相信大家对接口测试已经有了全面的认识&#xff0c;现在应该迫不及待地想要一个实战项目了。接下来的文章中&#xff0c;我们将把这些知识点串联起来…