Faster RCNN提取图片中的object feature

这篇博客介绍了如何在conda环境中使用Facebook的MMF库来实现Faster R-CNN对象特征提取。首先,创建conda环境并安装所需的python、pytorch和torchvision。接着,通过git clone和pip安装MMF和maskrcnn-benchmark。在安装和运行过程中可能会遇到torch._six.PY3错误、缺少apex模块以及GPU支持问题,博主提供了详细的解决办法。最后,给出了执行特征抽取代码的参考链接。

第一次使用FasterRCNN,尝试使用开源的代码来实现object feature extraction。看了网上有很多的博文都是复现和介绍FasterRCNN,或者直接使用torchvision里面的包,这里我介绍下使用Facebook MMF实现的FasterRCNN,包括安装和使用。

第一步,建立conda环境并安装python、pytorch和torchvision,MMF要求python>=3.7,pytorch>=1.6。如果有同学不了解conda的环境构建,可以参考我的另一篇文章。此外,安装时注意各软件版本之间的匹配,否则容易出错。

第二步,执行一下命令,在conda环境下安装MMF。主要还是参考官网

git clone https://github.com/facebookresearch/mmf.git
cd mmf
pip install --editable .

第三步,在conda环境下安装maskrcnn,按照如下命令。记住,这里的maskrcnn是较新版本,避免了很多问题。

conda install ipython

pip install ninja yacs cython matplotlib

conda install pycocotools

# 安装maskrcnn
git clone https://gitlab.com/vedanuj/vqa-maskrcnn-benchmark.git
cd vqa-maskrcnn-benchmark/
python setup.py build develop # 该命令执行前需要删除build/文件夹,否则会遇到GPU编译问题

# 安装cv2
pip install opencv-python  -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

第四步,执行特征抽取代码。详见参考

如果执行过程中,出现了如下问题,我们需要进一步解决:

if torch._six.PY3:AttributeError: module ‘torch._six‘ has no attribute ‘PY3‘

则,我们需要进入相应的文件,并修改内容 torch._six.PY3 为 torch._six.PY37:

vi maskrcnn-benchmark/utils/imports.py

# 修改:
if torch._six.PY3:
    import importlib
    import importlib.util
    import sys

# 修改后:
if torch._six.PY37:
    import importlib
    import importlib.util
    import sys

② 如果没有apex模块

ModuleNotFoundError: No module named 'apex'

则我们需要安装该模块,通过以下方式:

git clone https://github.com/NVIDIA/apex
cd apex
python3 setup.py install

③  无法使用GPU进行支持:

这时候的问题很可能是你的CUDA环境地址没有配置,导致使用GPU时无法寻找到CUDA。我们使用以下命令进行验证:

import torch
from torch.utils.cpp_extension import CUDA_HOME
print(torch.cuda.is_available(), CUDA_HOME)

# 输出应该是True, XXXX/cudaXXX。如果是别的信息,就是错误。

当典型的输出CUDA_HOME=None时,说明CUDA环境没有配置。此时,我们需要将其加到系统中:命令行输入vim ~/.bashrc,然后在末尾加入:

export PATH=/usr/local/cuda-XXX/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-XXX/lib64:$LD_LIBRARY_PATH

# XXX是指你的CUDA版本,如我的CUDA版本是10.2,此时输入
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

然后,命令行输入source ~/.bashrc使之有效。接着,重新安装maskrcnn,(记住安装之前删掉build/文件夹)。之后,我们就可以愉快的使用了。

或者下载后送入相应的文件夹进行安装。

参考文献:

https://github.com/facebookresearch/maskrcnn-benchmark/blob/main/INSTALL.md

https://gitlab.com/vedanuj/vqa-maskrcnn-benchmark/-/tree/master/
https://github.com/facebookresearch/mmf/blob/main/tools/scripts/features/extract_features_vmb.py
https://github.com/ronghanghu/vqa-maskrcnn-benchmark-m4c
https://blog.youkuaiyun.com/weixin_42782150/article/details/109820615
https://blog.youkuaiyun.com/u013679159/article/details/104288338

### Fast R-CNN 代码实现教程 #### 实现框架概述 Fast R-CNN 是一种用于对象检测的方法,它通过引入多任务损失函数来提高速度和准确性[^2]。该算法允许端到端的训练,并能有效地处理不同尺度的目标。 #### 安装依赖库 为了运行 Fast R-CNN 的 Python 版本,通常需要安装一些必要的软件包: ```bash pip install numpy opencv-python matplotlib cython scipy ``` 对于更复杂的模型架构,则可能还需要 PyTorch 或 TensorFlow 这样的深度学习框架支持。 #### 数据集准备 大多数开源项目会提供预处理过的数据集链接,比如 Pascal VOC 或 COCO 等标准测试集合。如果要使用自己的图片文件夹作为输入源的话,应该按照特定格式整理好图像路径以及对应的标注信息。 #### 训练过程概览 在开始之前先加载配置参数并初始化网络结构。接着定义损失函数与优化器,在每次迭代过程中计算预测框位置偏差及类别概率分布之间的差异值,最后反向传播调整权重直至收敛为止。 #### 示例代码片段 下面给出一段简单的伪代码表示如何构建一个基本版的 Fast R-CNN 模型: ```python import torch.nn as nn from torchvision import models class FastRCNN(nn.Module): def __init__(self, num_classes=20): super().__init__() self.backbone = models.vgg16(pretrained=True).features # ROI Pooling Layer... def forward(self,x,bboxes): features=self.backbone(x) rois_output=[] for bbox in bboxes: roi_feature=roi_pool(features,[bbox]) rois_output.append(roi_feature.view(-1)) return torch.stack(rois_output), ... ``` 这段代码展示了怎样利用 VGG16 提取特征图谱,并针对每一个候选区域执行感兴趣区域池化操作 (ROI Pooling),从而获得固定大小的特征向量供后续分类回归任务所用。 #### 可参考的具体GitHub仓库 - [pytorch-faster-rcnn](https://github.com/jwyang/faster-rcnn.pytorch):此仓库提供了完整的 Faster R-CNN 和 Fast R-CNN 的实现方式。 - [fasterrcnn-pytorch-tutorial](https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Object-Detection):这是一个详细的PyTorch版本的对象检测教程,涵盖了从基础概念到实际应用的内容。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值