如何使用tenserflow将python项目部署到exe文件?这可能吗



我有一个基于ImageAI的项目(代码直接取自文档(,它使用时态流、keras和其他依赖项,需要打包到一个exe文件中。

问题是,到目前为止,我还没能做到这一点,我一直在使用pyinstaller库。但我的问题是,我不能创建一个工作的exe文件。Exe文件在几分之一秒内关闭。所有的希望都在你身上。

现在更详细地说,这里是代码本身:

from imageai.Detection import ObjectDetection
import easygui
import os

path = easygui.fileopenbox();
print(path);
exec_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath(os.path.join(exec_path, "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()

list = detector.detectObjectsFromImage(
input_image = os.path.join(exec_path, path),
output_image_path= os.path.join(exec_path, "new_objects.jpg"),
minimum_percentage_probability = 60)

我使用虚拟环境";虚拟env";,以便在那里存储所有依赖项,而不需要额外的东西。起初,我尝试这样打包:pyinstaller detect.py,这是最常见的打包,但在这个打包中,我收到了没有找到正确的时态流文件的警告,比如:

166260 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.mixed_precision" not found!
166440 WARNING: Hidden import "tensorflow_core._api.v1.compat.v2.keras.callbacks" not found!
166615 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.estimator" not found!
166626 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.estimator.tpu" not found!
168300 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.estimator" not found!
168307 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.applications.nasnet" not found!
168839 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.activations" not found!
168854 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.preprocessing.text" not found!
169538 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.metrics" not found!
169711 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.applications.inception_v3" not found!
169815 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.datasets.cifar10" not found!

还有库语法中的一些问题(尽管代码工作正常(:

Traceback (most recent call last):
File "<string>", line 21, in walk_packages
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagesnotebookterminal__init__.py", line 4, in <module>
import terminado
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagesterminado__init__.py", line 7, in <module>
from .websocket import TermSocket
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagesterminadowebsocket.py", line 18, in <module>
import tornado.web
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagestornadoweb.py", line 84, in <module>
from tornado.concurrent import Future, future_set_result_unless_cancelled
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagestornadoconcurrent.py", line 28, in <module>
import asyncio
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagesasyncio__init__.py", line 21, in <module>
from .base_events import *
File "c:usersslepingappdatalocalprogramspythonpython37-32libsite-packagesasynciobase_events.py", line 296
future = tasks.async(future, loop=self)
^
SyntaxError: invalid syntax

在这种精神下,我意识到有必要连接隐藏的导入并立即连接模型(yolo.h5(,这实际上就是我所做的:

pyinstaller --paths ..envLibsite-packages --add-data yolo.h5;. --hidden-import=h5py;. --hidden-import=h5py.defs --hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy detect.py

不幸的是,结果仍然令人失望,尽管没有关于时态流缺乏的信息,其他一些错误也消失了,但取而代之的是出现了新的错误,例如:

241397 WARNING: Hidden import "pkg_resources.py2_warn" not found!
241417 WARNING: Hidden import "pkg_resources.markers" not found!

或:

255797 WARNING: lib not found: libopenblas.QVLO2T66WEPI7JZ63PS3HMOHFEY472BC.gfortran-win_amd64.dll dependency of C:bitwisepyinstaller_demoenvLibsite-packagesnumpycore_multiarray_umath.cp37-win_amd64.pyd

无效语法的问题是一样的,和上面完全一样。

总之,很抱歉问题太大了,我为此道歉。但是我非常非常需要这个exe文件。有哪些解决方案?有可能把这样一个项目打包成一个exe文件吗?如果是,通过什么方式可能?或者可以用pyinstaller解决这个问题吗?

以下是我放入的依赖项:tensorflow==2.4.0,keras==2.4.3,numpy==1.19.3,pillow==7.0.0,scipy==1.4.1,h5py==2.10.0,matplotlib==3.3.2,opencv-python,keras resnet==0.2.0,imageai。在项目文件夹中,我有一个模型";yolo.h5";,运行机器学习

1.首先,您需要保存tensorflow模型的权重,即(model.pb(

  1. 将其转换为tensorflowlite(TF.lite(&你可以在安卓手机中使用这个

    负载和节省模型-tensorflow

即使你可以参考这个课程基于设备的tensorflow 模型

最新更新