From 72cc0b84fc87681a959a42542dc83f63d62058a1 Mon Sep 17 00:00:00 2001 From: wupingyuan Date: Wed, 10 May 2023 15:19:34 +0800 Subject: [PATCH] add libsvm Signed-off-by: wupingyuan --- thirdparty/libsvm/HPKBUILD | 65 +++++++++++++ thirdparty/libsvm/README.OpenSource | 11 +++ thirdparty/libsvm/README_zh.md | 12 +++ thirdparty/libsvm/SHA512SUM | 1 + thirdparty/libsvm/docs/hap_integrate.md | 88 ++++++++++++++++++ .../libsvm/docs/pic/libsvm_install_dir.jpg | Bin 0 -> 16321 bytes thirdparty/libsvm/docs/pic/libsvm_test.jpg | Bin 0 -> 40229 bytes thirdparty/libsvm/docs/pic/libsvm_usage.jpg | Bin 0 -> 25958 bytes 8 files changed, 177 insertions(+) create mode 100644 thirdparty/libsvm/HPKBUILD create mode 100644 thirdparty/libsvm/README.OpenSource create mode 100644 thirdparty/libsvm/README_zh.md create mode 100644 thirdparty/libsvm/SHA512SUM create mode 100644 thirdparty/libsvm/docs/hap_integrate.md create mode 100644 thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg create mode 100644 thirdparty/libsvm/docs/pic/libsvm_test.jpg create mode 100644 thirdparty/libsvm/docs/pic/libsvm_usage.jpg diff --git a/thirdparty/libsvm/HPKBUILD b/thirdparty/libsvm/HPKBUILD new file mode 100644 index 00000000..8c415dcd --- /dev/null +++ b/thirdparty/libsvm/HPKBUILD @@ -0,0 +1,65 @@ +# Contributor: wupingyuan +# Maintainer: wupingyuan +pkgname="libsvm" +pkgver="v331" +pkgrel=0 +pkgdesc="Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It solves C-SVM classification, nu-SVM classification, one-class-SVM, epsilon-SVM regression, and nu-SVM regression. It also provides an automatic model selection tool for C-SVM classification. This document explains the use of libsvm." +url="https://github.com/cjlin1/libsvm" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD") +depends=() +makedepends=() +install= +source="https://github.com/cjlin1/$pkgname/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +buildtools="make" +builddir=$pkgname-${pkgver:1} +packagename=$builddir.tar.gz +cxx= + +prepare() { + cp -rf $builddir $builddir-$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + cxx=${OHOS_SDK}/native/llvm/bin/arm-linux-ohos-clang++ + fi + if [ $ARCH == "arm64-v8a" ] + then + cxx=${OHOS_SDK}/native/llvm/bin/aarch64-linux-ohos-clang++ + fi +} + +build() { + cd $builddir-$ARCH-build + make CXX=${cxx} all lib -j4 > `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir-$ARCH-build + # 由于没有install命令需要手动拷贝到安装目录 + mkdir -p $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + mkdir -p $LYCIUM_ROOT/usr/$pkgname/$ARCH/lib/ + cp svm.h $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + cp libsvm.so.3 $LYCIUM_ROOT/usr/$pkgname/$ARCH/lib/ + ret=$? + cd $OLDPWD + unset cxx + return $ret +} + +check() { + echo "The test must be on an OpenHarmony device!" + # 在OpenHarmony开发板中执行用例 + # ./svm-scale test.data > test.scale + # ./svm-train test.scale test.model + # ./svm-predict test.scale test.model test.predict +} + +cleanbuild(){ + rm -rf ${PWD}/$builddir $builddir-armeabi-v7a-build $builddir-arm64-v8a-build #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/libsvm/README.OpenSource b/thirdparty/libsvm/README.OpenSource new file mode 100644 index 00000000..06929735 --- /dev/null +++ b/thirdparty/libsvm/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "libsvm", + "License": "BSD", + "License File": "COPYRIGHT", + "Version Number": "v331", + "Owner": "wupingyuan@huawei.com", + "Upstream URL": "https://github.com/cjlin1/libsvm/archive/refs/tags/v331.tar.gz", + "Description": "Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It solves C-SVM classification, nu-SVM classification, one-class-SVM, epsilon-SVM regression, and nu-SVM regression. It also provides an automatic model selection tool for C-SVM classification. This document explains the use of libsvm." + } +] diff --git a/thirdparty/libsvm/README_zh.md b/thirdparty/libsvm/README_zh.md new file mode 100644 index 00000000..5c914a1a --- /dev/null +++ b/thirdparty/libsvm/README_zh.md @@ -0,0 +1,12 @@ +# libsvm三方库说明 +## 功能简介 +libsvm是一个支持向量机的库。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:v331 +- 当前适配的功能:支持向量机 +- [BSD](https://github.com/cjlin1/libsvm) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/libsvm/SHA512SUM b/thirdparty/libsvm/SHA512SUM new file mode 100644 index 00000000..8af706ac --- /dev/null +++ b/thirdparty/libsvm/SHA512SUM @@ -0,0 +1 @@ +78d3241fbf0286da077b8e612604feee13946b551888dcd8f47d23b4791f2a1daf516f3871e9a02d1b70cb58e12705603af8ef3c2ff0aac4211423d5053c7083 libsvm-331.tar.gz \ No newline at end of file diff --git a/thirdparty/libsvm/docs/hap_integrate.md b/thirdparty/libsvm/docs/hap_integrate.md new file mode 100644 index 00000000..986ae4da --- /dev/null +++ b/thirdparty/libsvm/docs/hap_integrate.md @@ -0,0 +1,88 @@ +# libsvm集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/libsvm #三方库libsvm的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将libsvm拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/libsvm tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh libsvm + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + libsvm/arm64-v8a libsvm/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 拷贝动态库到`\\entry\libs\${OHOS_ARCH}\`目录: + 动态库需要在`\\entry\libs\${OHOS_ARCH}\`目录,才能集成到hap包中,所以需要将对应的so文件拷贝到对应CPU架构的目录 +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/libsvm_install_dir.jpg) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libsvm.so.3) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libsvm/${OHOS_ARCH}/include) + ``` + ![libsvm_usage](pic/libsvm_usage.jpg) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +- 将编译生成的svm-train、svm-scale、svm-predict可执行文件及音频测试文件test.data准备好 + +- 将准备好的文件推送到开发板,在windows命令行进行如下操作 + + ``` + hdc_std shell mount -o remount,rw / #修改系统权限为可读写 + hdc_std file send svm-train /data #将可执行文件推入开发板data目录 + hdc_std file send svm-scale /data + hdc_std file send svm-predict /data + hdc_std file send libc++_shared.so /system/lib64 + hdc_std file send libsvm.so.3 /system/lib64 + hdc_std file send test.data /data #将测试文件推入开发板data目录 + hdc_std shell #进入开发板 + chmod 777 svm-train #添加权限 + chmod 777 svm-scale #添加权限 + chmod 777 svm-predict #添加权限 + ./svm-scale /data/test.data > /data/test.scale # 执行测试用例 + ./svm-train /data/test.scale /data/test.model + ./svm-predict /data/test.scale /data/test.model /data/test.predict + ``` + + ![libsvm_test](pic/libsvm_test.jpg) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg b/thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67bb1ca747303f4cff5958d5a992f67ea42102b3 GIT binary patch literal 16321 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 literal 0 HcmV?d00001 diff --git a/thirdparty/libsvm/docs/pic/libsvm_test.jpg b/thirdparty/libsvm/docs/pic/libsvm_test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7814ebbaeba85e675e42f577225e50d6cd0cb140 GIT binary patch literal 40229 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 JTA&UF{|`Wg0T%!O literal 0 HcmV?d00001 diff --git a/thirdparty/libsvm/docs/pic/libsvm_usage.jpg b/thirdparty/libsvm/docs/pic/libsvm_usage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..198e1446d551fec52dc7080a15a21601f6fa8288 GIT binary patch literal 25958 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