Giter Site home page Giter Site logo

ai-service's Introduction

0x0 简介

DJL全称deep java library,官网https://djl.ai ,是一个可以让java程序员快速集成深度学习的框架,你无需对神经网络算法有多么深入的了解就可以快速搭建一个ai服务器。

本项目基于DJL+springboot开发,OCR推理引擎使用paddle+pytorch,对象检测推理引擎使用onnx+pytorch; OCR深度学习模型采用百度paddle的ocr模型,支持快速识别和精确识别两种类型;对象检测模型使用yolov5。

项目已发布至github:https://github.com/gx304419380/ai-service

注意:若使用gpu运算,你的电脑需要安装cuda环境,具体方法请自行百度

0x1 项目介绍

项目共有两个模块:ocr和yolo,其中ocr用于文字识别(Optical Character Recognition),yolo模块用于图片对象检测,具体如下图所示:

image.png

项目启动后可以进入swagger进行接口使用 http://localhost:8080/swagger-ui/:

image.png

ocr相关功能测试图如下:

ocr.png

yolo对象检测相关功能测试图如下:

微信截图_20220319151847.png


###2023-05-17 更新:

增加对YOLOv8的支持,djl升级到0.21.0,该版本对应的pytorch为

需要注意的是:这个版本中使用onnx模型可能会报错:

model_load_utils.h:57 onnxruntime::model_load_utils::ValidateOpsetForDomain ONNX Runtime only *guarantees* support for models stamped with official released onnx opset versions. Opset 17 is under development and support for this is limited. The operator schemas and or other functionality may change before next ONNX release and in this case ONNX Runtime will not guarantee backward compatibility. Current official support for domain ai.onnx is till opset 16.

如果想继续使用onnx模型,有两种方案,一种是回退djl到0.19.0版本;

第二种是导出onnx时设置参数opset为16,代码如下:

from ultralytics import YOLO
model = YOLO("pathToYourModel/best.pt")
model.export(format='onnx', opset=16)

自测时发现onnx使用gpu会报错,暂时未找到原因,如果使用gpu执行yolo模型的话,建议采用torchscript格式的模型,导出模型代码如下:

model = YOLO("pathToYourModel/best.pt")
//导出为gpu的模型
model.export(device=0)
//导出为cpu的模型
model.export(device='cpu')

附cuda和djl版本

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 516.94       Driver Version: 516.94       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA T600 Lap... WDDM  | 00000000:01:00.0 Off |                  N/A |
| N/A   56C    P8    N/A /  N/A |      0MiB /  4096MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:59:34_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0

ai-service's People

Contributors

gx304419380 avatar

Stargazers

 avatar Dexter Huang avatar zjie avatar 王京验 avatar  avatar 划水艺术家 avatar 飞鱼 avatar suzg avatar  avatar  avatar study avatar  avatar niko_hxx avatar woods avatar  avatar  avatar  avatar  avatar xwinie avatar  avatar XueLong avatar hpuswl avatar  avatar AOT avatar  avatar  avatar  avatar  avatar 烟花小神 avatar  avatar  avatar  avatar  avatar Da Teng avatar 老猫 avatar 许鑫源 avatar  avatar JungleYang avatar Arthus avatar 益友 avatar Franky avatar Kazusa avatar roger avatar  avatar  avatar 惆怅长岑长 avatar  avatar  avatar jiang avatar Hozoy avatar 郑天航 avatar sgylr avatar

Watchers

James Cloos avatar Liu Yongqiang avatar  avatar

ai-service's Issues

一直无法下载依赖包, 请问怎么解决呢?

=============================================================================
项目的配置文件:
ai.ocr.deviceType=gpu
ai.yolo.device-type=gpu
ai.face.device-type=gpu

有装cuda程序, 不管是gpu 和 cpu 模式, 都无法下载包, 其他是全部没有动过, 和github一样

================================== error info ========================================

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-10-20 19:18:10.913 ERROR 19232 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ocrController' defined in file [E:\Projects\ai-service-master\target\classes\com\fly\ai\ocr\OcrController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ocrService': Invocation of init method failed; nested exception is ai.djl.engine.EngineException: Failed to load PyTorch native library
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.4.jar:2.6.4]
at com.fly.ai.AiServiceApplication.main(AiServiceApplication.java:10) ~[classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ocrService': Invocation of init method failed; nested exception is ai.djl.engine.EngineException: Failed to load PyTorch native library
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.16.jar:5.3.16]
... 19 common frames omitted
Caused by: ai.djl.engine.EngineException: Failed to load PyTorch native library
at ai.djl.pytorch.engine.PtEngine.newInstance(PtEngine.java:77) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.pytorch.engine.PtEngineProvider.getEngine(PtEngineProvider.java:40) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.engine.Engine.getEngine(Engine.java:177) ~[api-0.15.0.jar:na]
at ai.djl.Model.newInstance(Model.java:98) ~[api-0.15.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:187) ~[api-0.15.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:149) ~[api-0.15.0.jar:na]
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:166) ~[api-0.15.0.jar:na]
at com.fly.ai.ocr.OcrService.init(OcrService.java:208) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.16.jar:5.3.16]
... 32 common frames omitted
Caused by: java.lang.IllegalStateException: Failed to download PyTorch native library
at ai.djl.pytorch.jni.LibUtils.downloadPyTorch(LibUtils.java:423) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.findNativeLibrary(LibUtils.java:266) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.getLibTorch(LibUtils.java:83) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.loadLibrary(LibUtils.java:71) ~[pytorch-engine-0.15.0.jar:na]
at ai.djl.pytorch.engine.PtEngine.newInstance(PtEngine.java:50) ~[pytorch-engine-0.15.0.jar:na]
... 46 common frames omitted
Caused by: java.net.ConnectException: Connection timed out: connect
at java.base/java.net.PlainSocketImpl.connect0(Native Method) ~[na:na]
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:na]
at java.base/java.net.Socket.connect(Socket.java:608) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:287) ~[na:na]
at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173) ~[na:na]
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182) ~[na:na]
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474) ~[na:na]
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569) ~[na:na]
at java.base/sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:265) ~[na:na]
at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:372) ~[na:na]
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:203) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) ~[na:na]
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:189) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1592) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520) ~[na:na]
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250) ~[na:na]
at java.base/java.net.URL.openStream(URL.java:1165) ~[na:na]
at ai.djl.pytorch.jni.LibUtils.downloadPyTorch(LibUtils.java:359) ~[pytorch-engine-0.15.0.jar:na]
... 50 common frames omitted

目标检测太多

使用的yolov8导出为 onnx,直接使用 python 调这个 onnx 推理是正常的。但是迁移到 java 使用 djl 时,检测目标变多。而且检测结果中的 probability 竟然达到了几十万
image
image

yolov5模型识别率低

使用yolov5模型转换成onnx模型,识别率比在python识别率低了大概20%左右,是需要调那些参数么

项目依赖jdk版本是18吗?

A fatal error has been detected by the Java Runtime Environment:

SIGILL (0x4) at pc=0x000000017a85ea63, pid=12146, tid=10755

JRE version: Java(TM) SE Runtime Environment 18.9 (11.0.15.1+2) (build 11.0.15.1+2-LTS-10)

Java VM: Java HotSpot(TM) 64-Bit Server VM 18.9 (11.0.15.1+2-LTS-10, mixed mode, tiered, compressed oops, g1 gc, bsd-amd64)

Problematic frame:

C [libpaddle_inference.dylib+0x1ba63] __cxx_global_var_init.1118+0x93

No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

运行报错,不支持 aarch64 M2芯片

机器: M2 Mac mini
我运行之后报错 不支持
Caused by: java.lang.UnsatisfiedLinkError: /Users/zzx/.djl.ai/paddle/2.3.2-cpu-osx-aarch64/libonnxruntime.dylib: dlopen(/Users/zzx/.djl.ai/paddle/2.3.2-cpu-osx-aarch64/libonnxruntime.dylib, 0x0001): tried: '/Users/zzx/.djl.ai/paddle/2.3.2-cpu-osx-aarch64/libonnxruntime.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/zzx/.djl.ai/paddle/2.3.2-cpu-osx-aarch64/libonnxruntime.dylib' (no such file), '/Users/zzx/.djl.ai/paddle/2.3.2-cpu-osx-aarch64/libonnxruntime.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[na:1.8.0_362]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1950) ~[na:1.8.0_362]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1832) ~[na:1.8.0_362]
at java.lang.Runtime.load0(Runtime.java:783) ~[na:1.8.0_362]
at java.lang.System.load(System.java:1100) ~[na:1.8.0_362]
at ai.djl.paddlepaddle.jni.LibUtils.lambda$loadMacOsDependencies$2(LibUtils.java:143) ~[paddlepaddle-engine-0.21.0.jar:na]
at java.util.Arrays$ArrayList.forEach(Arrays.java:3880) ~[na:1.8.0_362]
at ai.djl.paddlepaddle.jni.LibUtils.loadMacOsDependencies(LibUtils.java:137) ~[paddlepaddle-engine-0.21.0.jar:na]
at ai.djl.paddlepaddle.jni.LibUtils.loadLibrary(LibUtils.java:74) ~[paddlepaddle-engine-0.21.0.jar:na]
at ai.djl.paddlepaddle.engine.PpEngine.newInstance(PpEngine.java:43) ~[paddlepaddle-engine-0.21.0.jar:na]
at ai.djl.paddlepaddle.engine.PpEngineProvider.getEngine(PpEngineProvider.java:40) ~[paddlepaddle-engine-0.21.0.jar:na]
at ai.djl.engine.Engine.getEngine(Engine.java:187) ~[api-0.21.0.jar:na]
at ai.djl.Model.newInstance(Model.java:99) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:191) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:154) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:172) ~[api-0.21.0.jar:na]
at com.fly.ai.ocr.OcrService.init(OcrService.java:207) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_362]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_362]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_362]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_362]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.16.jar:5.3.16]
... 32 common frames omitted

gpu推理报错

使用gpu推理报错,装了cuda11.7,装了cudnn。提示加载torch_cuda_cpp.dll时报错

问一下关于yolov8translator的问题

image
想问一下,上边第一个那里为什么要进行transpose处理,还有后边,在yolov5translator里边是5,但在v8里边变成了4,想了解一下原因,感谢,可以的话能不能加个联系方式,还想咨询一下其他问题

想问一下,大佬的模型是从哪里获取的

,我试着使用DJL官网的教程,去生成djl的模型文件,可是全部失败了,所以想问一下大佬是怎么拿到的模型文件,或者如果大佬也是自己生成的模型文件,有可用的教程吗?

服务器部署启动失败

楼主您好啊,我服务器去部署该的时候,普通启动项目,nohub java -jar 会一直报错Caused by: java.lang.UnsatisfiedLinkError: /root/.djl.ai/pytorch/1.9.1-cpu-linux-x86_64/libtorch_cpu.so: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by /root/.djl.ai/pytorch/1.9.1-cpu-linux-x86_64/libtorch_cpu.so),我centos是GLIBC_2.17,python3.8.1, pytorch1.91,能指教一下嘛,麻烦了,不会python但是想用ocr被环境搞得无语,windows10下您的项目是可以启动起来的。
pip3环境如下:
Package Version


astor 0.8.1
certifi 2021.10.8
charset-normalizer 2.0.12
decorator 5.1.1
easyocr 1.4.1
gast 0.3.3
idna 3.3
imageio 2.9.0
networkx 2.7.1
numpy 1.22.3
opencv-python 4.5.5.64
opencv-python-headless 4.5.4.60
packaging 21.3
paddlepaddle 2.0.0
Pillow 8.2.0
pip 22.0.4
protobuf 3.19.4
pyparsing 3.0.7
python-bidi 0.4.2
PyWavelets 1.3.0
PyYAML 6.0
requests 2.27.1
scikit-image 0.19.2
scipy 1.8.0
setuptools 41.2.0
six 1.16.0
tifffile 2022.3.16
torch 1.9.1+cpu
torchaudio 0.9.1
torchvision 0.10.1+cpu
typing_extensions 4.1.1
urllib3 1.26.9

启动时具体关键错误信息如下:
Caused by: java.lang.ExceptionInInitializerError: null
at ai.djl.paddlepaddle.engine.PpEngine.newBaseManager(PpEngine.java:110) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpEngine.newModel(PpEngine.java:92) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.Model.newInstance(Model.java:98) ~[api-0.15.0.jar!/:na]
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:187) ~[api-0.15.0.jar!/:na]
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:149) ~[api-0.15.0.jar!/:na]
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:166) ~[api-0.15.0.jar!/:na]
at com.example.myocr.ocr.OcrService.init(OcrService.java:207) ~[classes!/:0.0.1-SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.17.jar!/:5.3.17]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.17.jar!/:5.3.17]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.17.jar!/:5.3.17]
... 40 common frames omitted
Caused by: ai.djl.engine.EngineException: Failed to load PyTorch native library
at ai.djl.pytorch.engine.PtEngine.newInstance(PtEngine.java:77) ~[pytorch-engine-0.15.0.jar!/:na]
at ai.djl.pytorch.engine.PtEngineProvider.getEngine(PtEngineProvider.java:40) ~[pytorch-engine-0.15.0.jar!/:na]
at ai.djl.engine.Engine.getEngine(Engine.java:177) ~[api-0.15.0.jar!/:na]
at ai.djl.engine.Engine.getInstance(Engine.java:132) ~[api-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpEngine.getAlternativeEngine(PpEngine.java:54) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.ndarray.BaseNDManager.getAlternativeManager(BaseNDManager.java:372) ~[api-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpNDManager.(PpNDManager.java:36) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpNDManager.(PpNDManager.java:28) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpNDManager$SystemManager.(PpNDManager.java:118) ~[paddlepaddle-engine-0.15.0.jar!/:na]
at ai.djl.paddlepaddle.engine.PpNDManager.(PpNDManager.java:30) ~[paddlepaddle-engine-0.15.0.jar!/:na]
... 54 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: /root/.djl.ai/pytorch/1.9.1-cpu-linux-x86_64/libtorch_cpu.so: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by /root/.djl.ai/pytorch/1.9.1-cpu-linux-x86_64/libtorch_cpu.so)
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[na:1.8.0_191]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) ~[na:1.8.0_191]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) ~[na:1.8.0_191]
at java.lang.Runtime.load0(Runtime.java:809) ~[na:1.8.0_191]
at java.lang.System.load(System.java:1086) ~[na:1.8.0_191]
at ai.djl.pytorch.jni.LibUtils.loadNativeLibrary(LibUtils.java:328) ~[pytorch-engine-0.15.0.jar!/:na]
at ai.djl.pytorch.jni.LibUtils.loadLibTorch(LibUtils.java:144) ~[pytorch-engine-0.15.0.jar!/:na]
at ai.djl.pytorch.jni.LibUtils.loadLibrary(LibUtils.java:72) ~[pytorch-engine-0.15.0.jar!/:na]
at ai.djl.pytorch.engine.PtEngine.newInstance(PtEngine.java:50) ~[pytorch-engine-0.15.0.jar!/:na]
... 63 common frames omitted

项目启动不起来,大神忙看一下原因

2023-08-14 11:43:52.609 INFO 22580 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1543 ms
2023-08-14 11:43:52.728 INFO 22580 --- [ main] com.fly.ai.face.FaceDetectService : 开始加载人脸检测模型
2023-08-14 11:43:55.711 DEBUG 22580 --- [ main] com.fly.ai.common.ModelUrlUtils : model uri of /model/face/retinaface.zip is file:/E:/tplan/ocr/ai-service/target/classes/model/face/retinaface.zip
Loading: 100% |========================================|
2023-08-14 11:43:58.810 WARN 22580 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'faceCompareService' defined in file [E:\tplan\ocr\ai-service\target\classes\com\fly\ai\face\FaceCompareService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'faceDetectService': Invocation of init method failed; nested exception is ai.djl.engine.EngineException: Failed to save pytorch index file
2023-08-14 11:43:58.815 INFO 22580 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2023-08-14 11:43:58.829 INFO 22580 --- [ main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-08-14 11:43:58.851 ERROR 22580 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'faceCompareService' defined in file [E:\tplan\ocr\ai-service\target\classes\com\fly\ai\face\FaceCompareService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'faceDetectService': Invocation of init method failed; nested exception is ai.djl.engine.EngineException: Failed to save pytorch index file
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java:41002) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:42008) ~[spring-context-5.3.16.jar:5.3.16]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.4.jar:2.6.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.4.jar:2.6.4]
at com.fly.ai.AiServiceApplication.main(AiServiceApplication.java:10) ~[classes/:na]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'faceDetectService': Invocation of init method failed; nested exception is ai.djl.engine.EngineException: Failed to save pytorch index file
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.16.jar:5.3.16]
... 21 common frames omitted
Caused by: ai.djl.engine.EngineException: Failed to save pytorch index file
at ai.djl.pytorch.jni.LibUtils.downloadPyTorch(LibUtils.java:403) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.findNativeLibrary(LibUtils.java:286) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.getLibTorch(LibUtils.java:89) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.loadLibrary(LibUtils.java:77) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.pytorch.engine.PtEngine.newInstance(PtEngine.java:53) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.pytorch.engine.PtEngineProvider.getEngine(PtEngineProvider.java:40) ~[pytorch-engine-0.21.0.jar:na]
at ai.djl.engine.Engine.getEngine(Engine.java:187) ~[api-0.21.0.jar:na]
at ai.djl.Model.newInstance(Model.java:99) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.createModel(BaseModelLoader.java:191) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.BaseModelLoader.loadModel(BaseModelLoader.java:154) ~[api-0.21.0.jar:na]
at ai.djl.repository.zoo.Criteria.loadModel(Criteria.java:172) ~[api-0.21.0.jar:na]
at com.fly.ai.face.FaceDetectService.init(FaceDetectService.java:70) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.16.jar:5.3.16]
... 34 common frames omitted
Caused by: java.net.SocketException: Connection reset
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:323) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:350) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:803) ~[na:na]
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:966) ~[na:na]
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478) ~[na:na]
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472) ~[na:na]
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160) ~[na:na]
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1505) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1420) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426) ~[na:na]
at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:580) ~[na:na]
at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[na:na]
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224) ~[na:na]
at java.base/java.net.URL.openStream(URL.java:1161) ~[na:na]
at ai.djl.util.Utils.openUrl(Utils.java:461) ~[api-0.21.0.jar:na]
at ai.djl.util.Utils.openUrl(Utils.java:445) ~[api-0.21.0.jar:na]
at ai.djl.pytorch.jni.LibUtils.downloadPyTorch(LibUtils.java:398) ~[pytorch-engine-0.21.0.jar:na]
... 52 common frames omitted

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.