论文阅读:Detecting and Recognizing Human-Object Interactions

InteractNet是一种用于人类-物体交互检测的模型,采用RPN获取proposal,通过RoIAlign提取特征。模型包含object detection和human-centric分支,前者进行box regression和分类,后者评估动作及定位目标物体。此外,利用object特征计算动作得分,与human-centric得分结合,通过Cascaded Inference降低计算复杂度。
部署运行你感兴趣的模型镜像

InteractNet(CVPR2018)

文章链接

V-COCO :40.0%


InteractNet

首先用RPN得到proposal,然后用RoIAlign提取每个proposal的特征。接下来:
- object detection分支,进行box regression和classification;
- human-centric分支,判断box内人的动作,每个动作给一个score,并且尝试定位target物体的位置,我想应该是每个动作都有一个target位置,给出一个可能在的位置的高斯分布,感觉和LiFeifei她们那篇referring relationship的论文有点像,这样做有一个很强的假设:box内的特征表明了动作的受体的位置;
- 利用object的特征,也计算得到关于动作的score,然后将其和第二步得到的分数相加并过sigmoid。

这里写图片描述

上式代表对于某对human-object是关系a的分数,前两项分别是human和object的类别分数,第三项是human-centric branch或者interaction branch产生的动作分数,第四项是由h和a推断的target的位置和o的位置的近似程度,值越大越好,我感觉是判断是否有关系的一种手段,另一种手段是直接用h和o的特征进行计算。 Cascaded Inference:由于这种从单个h或者o得到a的计算方式,计算复杂度只有O(n),许多别的方法是两两concat计算,计算复杂度是O(n^2)。即便选择进行interaction branch,虽然时间复杂度也是O(n^2),但由于是简单的加法,所以计算时间依然非常地少!

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

-- The C compiler identification is GNU 7.5.0 -- The CXX compiler identification is GNU 7.5.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Using ccache: /usr/bin/ccache -- System processor: x86_64 -- Performing Test CXX_SUPPORTS_SSE4_2 -- Performing Test CXX_SUPPORTS_SSE4_2 - Success -- Performing Test CXX_SUPPORTS_AVX2 -- Performing Test CXX_SUPPORTS_AVX2 - Success -- Performing Test CXX_SUPPORTS_AVX512 -- Performing Test CXX_SUPPORTS_AVX512 - Success -- Arrow build warning level: PRODUCTION -- Using ld linker -- Build Type: release -- CMAKE_C_FLAGS: -Wall -fno-semantic-interposition -msse4.2 -fdiagnostics-color=always -fno-omit-frame-pointer -Wno-unused-variable -Wno-maybe-uninitialized -- CMAKE_CXX_FLAGS: -Wno-noexcept-type -Wall -fno-semantic-interposition -msse4.2 -fdiagnostics-color=always -fno-omit-frame-pointer -Wno-unused-variable -Wno-maybe-uninitialized -- Generator: Unix Makefiles -- Build output directory: /tmp/pip-install-ccnxvmf3/pyarrow_eb3cbbe6d8bb4a1099e522394e0af370/build/temp.linux-x86_64-cpython-310/release -- Found Python3: /user/yangyifan/miniconda3/envs/det/bin/python3.10 (found version "3.10.18") found components: Interpreter Development.Module NumPy -- Found Python3Alt: /user/yangyifan/miniconda3/envs/det/bin/python3.10 -- Found NumPy version: 2.2.6 -- NumPy include dir: /tmp/pip-build-env-8vcdp0nc/overlay/lib/python3.10/site-packages/numpy/_core/include -- Found Cython version: 3.2.1 CMake Error at CMakeLists.txt:289 (find_package): By not providing "FindArrow.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Arrow", but CMake did not find one. Could not find a package configuration file provided by "Arrow" with any of the following names: ArrowConfig.cmake arrow-config.cmake Add the installation prefix of "Arrow" to CMAKE_PREFIX_PATH or set "Arrow_DIR" to a directory containing one of the above files. If "Arrow" provides a separate development package or SDK, be sure it has been installed. -- Configuring incomplete, errors occurred! error: command '/user/yangyifan/cmake-3.27.4-linux-x86_64/bin/cmake' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pyarrow ERROR: Failed to build installable wheels for some pyproject.toml based projects (pyarrow)
最新发布
11-15
<think> 根据用户的问题,他在使用CMake构建pyarrow时出现了找不到Arrow包配置文件(ArrowConfig.cmake或arrow-config.cmake)的问题。结合用户提供的引用内容,特别是引用[1]、[3]、[5]中提到的类似问题,我们可以知道这类问题通常是由于CMake无法定位到所需的库配置文件。 解决思路: 1. 确保Arrow库已经正确安装(包括开发包)。 2. 如果Arrow库安装在非标准路径,需要设置环境变量或CMake变量(如CMAKE_PREFIX_PATH、Arrow_DIR)来指示配置文件的位置。 3. 在构建pyarrow时,确保CMake能够找到这些路径。 具体步骤: 步骤1:确认Arrow库的安装 首先,确保已经安装了Arrow库及其开发文件。如果未安装,需要先安装。安装方式可能包括: - 从源码编译安装 - 使用包管理器安装(如apt、yum等) - 使用conda安装 例如,在Ubuntu上可以使用: ```bash sudo apt install libarrow-dev libparquet-dev ``` 步骤2:查找ArrowConfig.cmake文件 安装完成后,需要找到ArrowConfig.cmake或arrow-config.cmake文件的位置。通常,这些文件会放在Arrow库的安装路径下的某个目录中,例如: - /usr/lib/cmake/arrow/ - /usr/local/lib/cmake/arrow/ - 或者自定义安装路径下的lib/cmake/arrow/ 可以通过以下命令来查找: ```bash sudo find / -name "ArrowConfig.cmake" 2>/dev/null ``` 或者 ```bash sudo find / -name "arrow-config.cmake" 2>/dev/null ``` 步骤3:设置CMake查找路径 找到配置文件所在的目录后,需要将该目录添加到CMake的搜索路径中。有以下几种方法: 方法A:在CMake命令行中指定路径 在运行CMake时,通过`-D`选项设置`Arrow_DIR`变量为包含配置文件的目录: ```bash cmake -DArrow_DIR=/path/to/arrow/config/directory ... ``` 方法B:设置环境变量`CMAKE_PREFIX_PATH` 将包含配置文件的目录(或者其上级目录,通常是lib/cmake/arrow的上级目录,即安装路径)添加到`CMAKE_PREFIX_PATH`环境变量中: ```bash export CMAKE_PREFIX_PATH=/path/to/arrow/install:$CMAKE_PREFIX_PATH ``` 然后重新运行CMake。 方法C:在CMakeLists.txt中设置变量 如果用户有权修改构建pyarrow的CMakeLists.txt文件,可以在其中添加: ```cmake set(Arrow_DIR "/path/to/arrow/config/directory") ``` 步骤4:重新构建 设置好路径后,重新运行CMake构建命令。 步骤5:如果仍找不到,考虑检查版本兼容性 确保安装的Arrow库版本与pyarrow要求的版本兼容。 步骤6:使用conda环境(可选) 如果用户使用的是conda环境,可以尝试在conda环境中安装arrow,这样通常可以自动解决依赖问题: ```bash conda install -c conda-forge arrow ``` 参考用户提供的引用[5]中解决glog问题的方法:在CMakeLists.txt中指定路径。类似地,我们可以为Arrow指定路径。 示例:假设通过查找发现配置文件位于`/usr/local/lib/cmake/arrow`,那么在运行cmake时: ```bash cmake -DArrow_DIR=/usr/local/lib/cmake/arrow ... ``` 或者,如果使用环境变量: ```bash export Arrow_DIR=/usr/local/lib/cmake/arrow cmake ... ``` 注意:有时可能需要设置`CMAKE_PREFIX_PATH`为Arrow的安装前缀(即包含`lib`、`include`等目录的路径),例如: ```bash export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH ``` 总结:关键是要让CMake找到Arrow的配置文件,通过设置正确的路径变量。 如果上述方法都不行,可能需要重新安装Arrow库,并确保安装时启用了CMake配置文件的生成(通常默认是启用的)。 根据引用[3]中解决OpenCVConfig.cmake找不到的方法,同样可以手动指定路径。 另外,引用[4]提到pkg-config的问题,如果Arrow库提供了.pc文件,也可以通过设置PKG_CONFIG_PATH来帮助CMake找到,但通常CMake的find_package机制与pkg-config是独立的,所以主要关注find_package的配置。 因此,解决步骤概括为: 1. 确认Arrow已正确安装。 2. 定位ArrowConfig.cmake或arrow-config.cmake文件。 3. 通过设置Arrow_DIR或CMAKE_PREFIX_PATH来指示该文件所在目录。 4. 重新运行CMake。 下面给出一个完整的示例: 假设通过源码编译安装了Arrow到目录`/opt/arrow`,那么配置文件通常位于`/opt/arrow/lib/cmake/arrow`。在构建pyarrow之前,设置: ```bash export Arrow_DIR=/opt/arrow/lib/cmake/arrow # 或者 export CMAKE_PREFIX_PATH=/opt/arrow:$CMAKE_PREFIX_PATH ``` 然后在pyarrow的构建目录中运行: ```bash cmake ... [其他参数] ... ``` 这样,CMake就能找到Arrow的配置文件了。 如果用户没有系统权限,可以将Arrow安装在用户目录下,然后设置上述变量指向用户目录下的路径。 注意:在构建pyarrow时,可能还需要其他依赖(如Parquet、Plasma等),同样需要确保这些依赖的配置文件也能被找到,方法类似。 最后,如果问题依然存在,可以检查CMake输出的详细错误信息,可能会有更具体的提示。 根据引用[1]和[2]中关于catkin_make找不到cmake_modules的问题,我们可以借鉴其解决方案:将缺失包的安装前缀添加到CMAKE_PREFIX_PATH。因此,对于Arrow,我们同样可以这样做。 综上所述,请用户按照上述步骤尝试解决。 注意:在运行cmake命令时,如果使用pip安装pyarrow,可能需要设置环境变量,因为pip在构建时也会调用cmake。可以尝试: ```bash export Arrow_DIR=/path/to/arrow/config/dir pip install pyarrow --no-cache-dir ``` 或者使用pip安装时指定构建选项(如果支持的话)。 希望这些方法能够解决用户的问题。 </think> 在构建 PyArrow 时遇到找不到 Arrow 包配置文件的问题,通常是由于 CMake 无法定位 Arrow 库的安装路径。以下是系统化的解决方案: ### 原因分析 1. **Arrow 库未正确安装**:缺少核心库文件 2. **环境变量未配置**:CMake 无法自动发现安装路径 3. **版本不匹配**:PyArrow 与 Arrow C++ 库版本不一致 4. **多版本冲突**:系统存在多个 Arrow 版本 --- ### 解决方案(逐步操作) #### 步骤 1:验证 Arrow 安装 ```bash # 检查 Arrow 核心库是否安装 ls /usr/local/lib | grep libarrow # 确认配置文件是否存在 find /usr -name "*ArrowConfig.cmake" 2>/dev/null ``` #### 步骤 2:手动指定路径(最有效方案) 在 CMake 命令中**显式指定 Arrow 路径**: ```bash cmake -DCMAKE_PREFIX_PATH=/path/to/arrow/install .. ``` 或设置环境变量: ```bash # 临时生效 export Arrow_DIR=/path/to/arrow/install/lib/cmake/arrow # 永久生效(添加到 ~/.bashrc) echo 'export Arrow_DIR=/path/to/arrow/install/lib/cmake/arrow' >> ~/.bashrc source ~/.bashrc ``` > 📌 路径查找技巧: > 使用 `find / -name "*ArrowConfig.cmake" 2>/dev/null` 定位实际路径 #### 步骤 3:源码编译 Arrow(推荐) ```bash # 1. 下载源码 git clone https://github.com/apache/arrow.git cd arrow/cpp # 2. 创建构建目录 mkdir build && cd build # 3. 配置安装到用户目录 cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local \ -DARROW_PARQUET=ON \ -DARROW_PYTHON=ON .. # 4. 编译安装 make -j$(nproc) make install # 5. 设置环境变量 echo 'export CMAKE_PREFIX_PATH=$HOME/.local:$CMAKE_PREFIX_PATH' >> ~/.bashrc source ~/.bashrc ``` #### 步骤 4:安装依赖(关键) ```bash # Ubuntu/Debian sudo apt install libboost-all-dev libbrotli-dev liblz4-dev libzstd-dev # CentOS/RHEL sudo yum install boost-devel brotli-devel lz4-devel zstd-devel ``` #### 步骤 5:验证配置 创建测试文件 `FindArrow.cmake`: ```cmake find_package(Arrow REQUIRED) message(STATUS "Arrow found at: ${Arrow_DIR}") ``` 运行: ```bash cmake -P FindArrow.cmake ``` 成功输出应显示:`Arrow found at: /your/path/...` --- ### 高级调试技巧 1. **检查版本兼容性**: ```bash # 查看已安装 Arrow 版本 arrow --version ``` 确保 PyArrow 与 Arrow C++ 库版本匹配 2. **强制 CMake 搜索路径**: ```cmake # 在 CMakeLists.txt 中添加 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/custom/path/to/cmake/modules") ``` 3. **使用 pkg-config 辅助**: ```bash # 安装 pkg-config 支持 sudo apt install pkg-config # 验证 pkg-config --modversion arrow ``` --- ### 典型错误解决 错误提示: ```text Could not find a package configuration file provided by "Arrow" ``` 解决方案: 1. 确认文件存在:`ls /your/path/lib/cmake/arrow/ArrowConfig.cmake` 2. 设置环境变量:`export Arrow_DIR=/your/path/lib/cmake/arrow` 3. 重新生成构建缓存:`rm -rf build && mkdir build && cd build` > 💡 参考引用[3][5]的方案:手动指定包含 *Config.cmake 文件的目录路径[^3][^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值