-
Notifications
You must be signed in to change notification settings - Fork 693
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
🎃Linux下配置lite.ai.toolkit库教程 #185
Comments
用cmake+make来编译试试?可以看一下build.sh, 我是用CMake来管理的。或者你在编译完liblite.ai.toolkit.so后,可以把库单独拿出来,同时把test_lite_yolox.cpp拿出来,通过CMakeLists.txt来指定依赖。你可以参考我写的YOLOX示例工程: 如果是通过 build.sh编译的,应该会顺便把 测试examples都编译了才对。链接lite.ai.toolkit动态库,可以参考这个写法: cmake_minimum_required(VERSION 3.17)
project(yolox.lite.ai.toolkit)
set(CMAKE_CXX_STANDARD 11)
# setting up lite.ai.toolkit
set(LITE_AI_DIR ${CMAKE_SOURCE_DIR}/lite.ai.toolkit)
set(LITE_AI_INCLUDE_DIR ${LITE_AI_DIR}/include)
set(LITE_AI_LIBRARY_DIR ${LITE_AI_DIR}/lib)
include_directories(${LITE_AI_INCLUDE_DIR})
link_directories(${LITE_AI_LIBRARY_DIR})
set(OpenCV_LIBS
opencv_highgui
opencv_core
opencv_imgcodecs
opencv_imgproc
opencv_video
opencv_videoio
)
# add your executable
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/examples/build)
add_executable(lite_yolox examples/test_lite_yolox.cpp)
target_link_libraries(lite_yolox
lite.ai.toolkit
onnxruntime
MNN # need, if built lite.ai.toolkit with ENABLE_MNN=ON, default OFF
ncnn # need, if built lite.ai.toolkit with ENABLE_NCNN=ON, default OFF
TNN # need, if built lite.ai.toolkit with ENABLE_TNN=ON, default OFF
${OpenCV_LIBS}) # link lite.ai.toolkit & other libs. 然后编译: #!/bin/bash
if [ ! -d ./examples/build ]; then
mkdir ./examples/build
else
rm -rf ./examples/build/*
fi
cd ./examples/build && cmake -DCMAKE_BUILD_TYPE=Realese ../.. && make -j1
echo "Testing Start ..."
./lite_yolox
echo "Testing Successful !" |
谢谢您,我试一下 |
我是使用了 |
这很明显是你没指定要链接 lite ai toolkit 的 library。建议这种依赖比较复杂的项目不要手写编译参数,用 cmake 更省事。 |
所以我得写一个像您给我示例的 CMakeLists.txt 文件,然后再编译
这一段吗?可是我的 lite.ai.toolkit 目录下已经有一个 CMakeLists.txt 文件和 build 文件夹了。那我应该在哪个目录操作呢? |
cd lite.ai.toolkit && sh ./build.sh 运行后的log贴出来看一下?看看测试工程有没有被编译。另外,如果你已经编译成功了lite.ai.toolkit,那么逻辑上来讲,你只需要把build/lite.ai.toolkit拷贝出来,当成普通的库来用就可以,想办法链接上就行。头文件都在,lite.ai.toolkit/include中,动态库都在 lite.ai.toolkit/lib中,特别是检查一下 build/lite.ai.toolkit/lib 有没有包含了编译好的liblite.ai.toolkit.so以及其他必要的依赖库,比如libonnxruntime.so和opencv的动态库,如果没有,就找到这些库,拷贝到build/lite.ai.toolkit/lib中来。然后新建一个cpp工程,比如: 把你编译的build/lite.ai.toolkit 拷贝 来 替换 YOLOX.lite.ai.toolkit中的lite.ai.toolkit. |
另外,关于cmake,建议可以看一下我在知乎专栏整理的学习资料哈~ 希望能帮到你 |
哇,万分感谢,必须点赞 |
@FL77N 说的是最开始那张图 |
这些测试工程都编译成功了呀,你 cd bulid/lite.ai.toolkit/bin && ls -lh | grep yolox ,应该已经有编译好的lite_yolox可执行文件了。说明测试工程是没问题的。直接 在 /lite.ai.toolkit/bin 下 跑一下 ./lite_yolox试试呗。repo本身自带了yolox的s和nano版本的onnx模型文件,在hub/onnx/cv里面。只能帮你到这里了。逻辑应该很清楚了 |
十分感谢,我明天再到实验室试一试! |
可能是图片没找到吧,你看看examples/lite/cv/test_lite_yolox.cpp中指定的图片是不是正常的。 应该就是图片的问题 |
@FL77N 测试通过后,欢迎同学来写个Linux下的lite.ai.toolkit入门教程(写在docs/build/Linux.zh.md),成为contributor哈,不妨考虑提个PR啥的到dev分支,我会merge进lite.ai.toolkit 🤔 |
哈哈哈哈哈,我走通了后,看能不能写个流程吧,主要是我平时都是用 python,用 cpp 太少了,很多知识还很薄弱。 |
大佬,这个对 opencv 的版本有要求吗?我安装的应该是最新版的 4.5.5,图片应该没有要求吧,会 resize 到需要的尺寸哈 |
没有要求啊,你测试工程编译通过了,说明各个依赖库的链接是没问题的。图片也没要求啊,剩下的我就不太清楚了。或者把图片路径改成绝对路径试试吧,我看你把模型的路径也修改了。把你的test_lite_yolox.cpp源码贴出来看看? |
基本是都是opencv出的问题,看看是不是你的图片太大了?我用的是opencv-4.5.2 |
可是,yolov5 就完全是您的设置,我用的图片应该也算正常吧,就是 coco 数据集里面的。 |
那就不是很清楚问题了,我这边的电脑测试是没有问题的。按理说opencv应该也是兼容的。😂 比较建议你在yolox->detect之前加一些log,比如在cv::imread(test_img_path)的前后加,来确认一下是不是opencv在图片加载的问题,还是说,进入detect之后才出的问题。你这模型初始化都是没有问题的。但是似乎图片读取进来的时候有问题。多在一些地方在log,这样才能判断具体在什么地方出问题。 |
嗯嗯,好的,我再找找 |
使用 |
是啊,这不是C++的基础么😂,如果打印不出信息,我就帮不了你了😂,靠你自己了 |
添加完之后别忘了重新编译呀 |
@FL77N great ~ |
大佬,我还有两个问题想要请教您~
|
|
好滴~谢谢大佬 |
@FL77N 添加模型的步骤,请参考: |
哇,十分感谢,不过不知道 onnx 支不支持 RoIPooling 这个算子,我先优化好模型,看能不能转 |
@FL77N 可以看看我整理的资料哈~ |
@DefTruth tql!您是哆啦A梦吗?怎么啥都有😂,要学的好多呀,多谢大佬! |
🤓 |
大佬我今天写实时检测,又出现了 opencv 的问题: |
@FL77N 不太了解你的环境,建议你用cmake进行工程管理。这些链接的问题一般都是和你具体的工程配置相关的,只能你自己看看咋解决了。cmake+clion+mac/linux 真香 ~ |
大佬,那如果我想让 yolox 在编译的时候执行 |
@FL77N 这个问题其实我很难回答你。
至于CMakelists.txt可以参考这个写法: cmake_minimum_required(VERSION 3.17)
project(yolox.lite.ai.toolkit)
set(CMAKE_CXX_STANDARD 11)
# setting up lite.ai.toolkit
set(LITE_AI_DIR ${CMAKE_SOURCE_DIR}/lite.ai.toolkit)
set(LITE_AI_INCLUDE_DIR ${LITE_AI_DIR}/include)
set(LITE_AI_LIBRARY_DIR ${LITE_AI_DIR}/lib)
include_directories(${LITE_AI_INCLUDE_DIR})
link_directories(${LITE_AI_LIBRARY_DIR})
set(OpenCV_LIBS
opencv_highgui
opencv_core
opencv_imgcodecs
opencv_imgproc
opencv_video
opencv_videoio
)
# add your executable
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/examples/build)
add_executable(lite_yolox examples/test_lite_yolox.cpp)
target_link_libraries(lite_yolox
lite.ai.toolkit
onnxruntime
${OpenCV_LIBS}) # link lite.ai.toolkit & other libs. 然后编译: #!/bin/bash
if [ ! -d ./examples/build ]; then
mkdir ./examples/build
else
rm -rf ./examples/build/*
fi
cd ./examples/build && cmake -DCMAKE_BUILD_TYPE=Realese ../.. && make -j1
echo "Testing Start ..."
./lite_yolox
echo "Testing Successful !"
|
谢谢您,按道理说不应该出现这个错误才对,因为 |
great~ |
大佬,我用 yolox_v0.1.1 的 s 和 tiny 版本基本实时检测不到东西,但是用 yolox 的对应版本就可以。 |
你要把模型也对应上,他们的权重文件不一样的,你要从lite.ai.toolkit里面的Model Zoo下载对应的模型文件,不可能检测不到东西的。要么就是类没对上,要么就是模型没对上,YoloX对应的是旧的yolox模型文件,YoloX_V_1_1对应的是新的1.1版本,他们的前后处理是不一样的。看看这个issue吧: |
是的,我是对应cpp 中修改对应权重的,权重也是从百度云上下载的。但 yolox_v0.1.1 的 m 版本可以正常检测。 |
我不知道你是怎么测的,你要不放一下你的代码吧。我的测试工程里面用的就是yolox_v0.1.1的s版本跑的,结果很正常的。 |
嗯嗯,我也是用的这个 cpp,可能是我的输入有点问题,我用的自己的输入。 |
也可以直接下载YOLOX官方提供的模型试试,v0.1.1的模型,官方已经提供了onnx: s和tiny的准确率是会比m低的,另外就是,detect接口有个score_threshold的阈值参数,你可以设置低一点的阈值看看。可以看我的API说明。 |
谢谢您,太有心了。 |
您好!已经在 Linux 系统下成功编译 lite.ai.toolkit 但是进 g++ 编译 yolox 的时候出现了如下错误:
如果不用 -I ,由于都是相对路径,又会找不到头文件,出现例如:
fatal error: lite/ort/core/ort_core.h: No such file or directory
The text was updated successfully, but these errors were encountered: