-
Notifications
You must be signed in to change notification settings - Fork 61
编译手册 v1.2.0
taotianran edited this page Mar 27, 2023
·
37 revisions
大家可以在本机编译,我们也提供了部分平台的docker环境,也可以下载docker镜像进行编译:Docker安装(可选)
步骤1:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤2:设置NDK路径
export ANDROID_NDK=${NDK_PATH}
例如:export ANDROID_NDK=/Users/flycv/Library/Android/sdk/ndk/17.2.4988734/
步骤3:编译
cd FlyCV
// 脚本参数说明
// 0:编译armv7架构;1:编译armv8架构;2:同时编译两种架构
// y:编译时清除上一次编译缓存(全量编译);n:编译时不清除上一次编译缓存(增量编译)
./scripts/android/build.sh 2 y
默认编译产出路径:build/install/flycv
。
步骤1:拉取docker镜像
docker pull flycv/x86_64:android
步骤2:建立交互终端
// 建立交互终端,指定挂载目录(将FlyCV的源码目录挂载到容器中)
docker run --name=flycv_android -i -t -v [本机挂载目录]:/io flycv/x86_64:android /bin/bash
// 示例:
docker run --name=flycv_android -i -t -v /Users/flycv/WorkSpace/FlyCV:/io flycv/x86_64:android /bin/bash
注意: 如果是第二次启动容器,无需执行上述命令,只需要启动容器并进入即可:
docker ps -a // 查看之前创建的容器ID
docker start [容器ID] // 启动容器
docker attach [容器ID] // 建立交互界面
步骤3:编译
source /etc/ndk/r17c.env // 激活环境变量
cd /io/ // 进入源码目录
./scripts/android/build.sh 2 y // 两种架构同时编译
默认编译产出路径:build/install/flycv
步骤1:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤2:编译
cd FlyCV
// 脚本参数说明
// 0:编译armhf架构;1:编译aarch64架构
// y:编译时清除上一次编译缓存(全量编译);n:编译时不清除上一次编译缓存(增量编译)
./scripts/armlinux/build.sh 1 y
默认编译产出路径:build/install/flycv/
。
步骤1:拉取docker镜像
docker pull quay.io/pypa/manylinux_2_24_aarch64
步骤2:建立交互终端
// 建立交互终端,指定挂载目录(将FlyCV的源码目录挂载到容器中)
docker run --name=flycv_aarch64 -i -t -v [本机挂载目录]:/io quay.io/pypa/manylinux_2_24_aarch64:latest /bin/bash
// 示例
docker run --name=flycv_aarch64 -i -t -v /Users/flycv/WorkSpace/FlyCV:/io quay.io/pypa/manylinux_2_24_aarch64:latest /bin/bash
注意: 如果是第二次启动容器,无需执行上述命令,只需要启动容器并进入即可:
docker ps -a // 查看之前创建的容器ID
docker start [容器ID] // 启动容器
docker attach [容器ID] // 建立交互界面
步骤3:编译
cd /io/ // 进入源码目录
./scripts/armlinux/build.sh 1 y // 编译aarch64架构
默认编译产出路径:build/install/flycv/
。
步骤1:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤2:编译
# 如果你的机器是X86架构,执行下面的编译脚本
cd FlyCV
./scripts/macos/build_x86.sh
# 如果你的机器是arm架构,执行下面的编译脚本
./scripts/macos/build_arm.sh
默认编译产出路径:build/Release/flycv
。
步骤1:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤2:生成solution
// 在build目录下会生成project32和project64两个sln方案,使用visual studio进行编译
./scripts/windows/build.sh
步骤3:使用Visual Studio打开解决方案,编译INSTALL方案
默认编译产出位于Release/flycv
目录下。
步骤1:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤2:编译
./scripts/linux/build.sh
默认编译产出路径:build/install/flycv
。
步骤1:拉取镜像
docker pull ubuntu:18.04
步骤2:建立交互终端
// 建立交互终端,指定挂载目录(将FlyCV的源码目录挂载到容器中)
docker run --name=flycv_ubuntu -i -t -v [本机挂载目录]:/io ubuntu:18.04 /bin/bash
// 示例
docker run --name=flycv_ubuntu -i -t -v /Users/flycv/WorkSpace/FlyCV:/io ubuntu:18.04 /bin/bash
注意: 如果是第二次启动容器,无需执行上述命令,只需要启动容器并进入即可:
docker ps -a // 查看之前创建的容器ID
docker start [容器ID] // 启动容器
docker attach [容器ID] // 建立交互界面
步骤3:安装编译工具
apt-get update
apt-get install build-essential
apt-get install cmake
步骤4:编译
cd /io
./scripts/linux/build.sh
默认编译产出路径:build/install/flycv
。
步骤1:安装编译环境
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
# 在 Linux 或者 Mac macOS 上
./emsdk install latest
./emsdk activate latest
# 在 Windows 上
emsdk install --build=Release sdk-incoming-64bit binaryen-master-64bit
emsdk activate --global --build=Release sdk-incoming-64bit binaryen-master-64bit
# 注意:Windows 版本的 Visual Studio 2017 已经被支持,但需要在 emsdk install 需要追加 --vs2017 参数。
步骤2:克隆代码
git clone git@github.com:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
步骤3:编译
export EMSCRIPTEN_DIR=[emscripten路径]
emscripten路径为上一步emsdk下载的绝对路径,加上upstream/emscripten目录。
举例:export EMSCRIPTEN_DIR=/Users/flycv/workspace/emsdk/upstream/emscripten
./scripts/js/build.sh
默认编译产出路径:build/output/flycv
。
编译选项 | 默认值 | 描述 |
---|---|---|
📃 FLYCV_NAMESPACE | flycv | 可以自定义命名空间,在cmake编译选项里加上 -DFLYCV_NAMESPACE=xxx 即可 |
编译选项 | 默认值 | 描述 |
---|---|---|
🗂️ BUILD_FCV_IMG_TRANSFORM | ON | 图像转换模块 |
📃 WITH_FCV_COLOR_CONVERT | ON | 颜色空间转换功能 |
📃 WITH_FCV_RESIZE | ON | 图像缩放 |
📃 WITH_FCV_WARP_AFFINE | ON | 仿射变换 |
📃 WITH_FCV_WARP_PERSPECTIVE | ON | 透视变换 |
📃 WITH_FCV_ROTATION | ON | 图像旋转 |
📃 WITH_FCV_FLIP | ON | 图像翻转 |
📃 WITH_FCV_SUBTRACT | ON | 图像相减 |
📃 WITH_FCV_COPY_MAKE_BORDER | ON | 边界填充 |
📃 WITH_FCV_CROP | ON | 抠图 |
📃 WITH_FCV_REMAP | ON | 重映射 |
📃 WITH_FCV_ADD_WEIGHTED | ON | 图像融合 |
📃 WITH_FCV_EXTRACT_CHANNEL | ON | 特定通道提取 |
🗂️ BUILD_FCV_IMG_CALCULATION | ON | 图像计算模块 |
📃 WITH_FCV_MATRIX_MUL | ON | 矩阵乘 |
📃 WITH_FCV_NORM | ON | 范数计算 |
📃 WITH_FCV_MEAN | ON | 均值计算 |
📃 WITH_FCV_MIN_AREA_RECT | ON | 最小外接矩形 |
📃 WITH_FCV_MIN_MAX_LOC | ON | 获取最小、最大点坐标 |
📃 WITH_FCV_CONNECTED_COMPONENTS | ON | 计算连通域 |
📃 WITH_FCV_FIND_HOMOGRAPHY | ON | 计算二维点对映射 |
🗂️ BUILD_FCV_FUSION_API | ON | 融合算子模块 |
📃 WITH_FCV_BGR_TO_RGBA_WITH_MASK | ON | bgr合并mask转rgba |
📃 WITH_FCV_NORMALIZE_TO_SUBMEAN_TO_REORDER | ON | 图像减均值,归一化,通道顺序变换 |
📃 WITH_FCV_SPLIT_TO_MEMCPY | ON | 通道分离和拷贝 |
📃 WITH_FCV_Y420SP_TO_RESIZE_TO_BGR | ON | yuv数据缩放且转换为BGR数据 |
📃 WITH_FCV_BGRA_TO_RESIZE_TO_BGR | ON | bgra缩放和转换位bgr |
🗂️ BUILD_FCV_MATH_OPERATOR | ON | 基本数学运算 |
📃 WITH_FCV_VECTOR_OPERATOR | ON | 向量计算 |
🗂️ BUILD_FCV_MEDIA_IO | ON | 多媒体IO操作 |
📃 WITH_FCV_IMGCODECS | ON | 图像编解码 |
📃 WITH_LIB_JPEG_TURBO | ON | 支持jpg |
📃 WITH_LIB_PNG | ON | 支持png |
🗂️ BUILD_FCV_IMG_DRAW | ON | 图形绘制 |
📃 WITH_FCV_FILL_POLY | ON | 多边形绘制和填充 |
📃 WITH_FCV_POLY_LINES | ON | 多边形绘制 |
📃 WITH_FCV_CIRCLE | ON | 圆形绘制 |
📃 WITH_FCV_LINE | ON | 线绘制 |
编译选项 | 默认值 | 描述 |
---|---|---|
🚀 ENABLE_SSE | ON | 开启SSE指令集优化(仅支持x86架构) |
🚀 ENABLE_AVX | ON | 开启AVX指令集优化(仅支持x86架构) |
🚀 ANDROID_ARM_NEON | ON | 开启neon指令集优化(仅支持arm架构) |
🚀 ENABLE_NEON | ON | 开启neon指令集优化(仅支持arm架构) |
🚀 ENABLE_SVE2 | OFF | 开启SVE2指令集优化(仅支持arm架构) |
编译选项 | 默认值 | 描述 |
---|---|---|
BUILD_C | OFF | 开启C接口支持 |
BUILD_JS | OFF | 编译js版本 |
编译选项 | 默认值 | 描述 |
---|---|---|
🔖 BUILD_TEST | ON | 开启单元测试编译 |
🔖 BUILD_BENCHMARK | ON | 开启性能测试编译 |
🔖 BUILD_SAMPLES | ON | 开启demo编译 |