mask rcnn使用指南

2023-05-16

做姿态估计的小伙伴们肯定经常用检测器,为了方便大家,这里给出一个很方便的教程

让大家快速上手,不用再纠结配置环境!

欢迎加入我们的姿态估计群:970029323

 

(0)配置环境

①下载数据集

下载coco数据集(2014或者2017随便你),

比如这里我们保存到

/home/user/datasets/coco

然后解压,把图片解压到

/home/user/datasets/coco/images

把标注解压到

/home/user/datasets/coco

最终形成如下目录结构

/home/user/datasets/coco/images

/home/user/datasets/coco/annotations

 

②下载代码

git clone https://github.com/facebookresearch/maskrcnn-benchmark.git

③配置执行环境

将下列代码保存为prepare_env.sh到maskrcnn-benchmark的目录下

然后执行

这个脚本的功能主要有:

---配置python的虚拟环境

---配置pip源让你安装更快

---下载coco api的源码

---安装mask rcnn到python的虚拟环境

---下载模型

---下载其他文件

---准备数据集

---准备输出结果的目录

 

#!/usr/bin/env bash


COCO_ROOT=/home/user/datasets/coco

# install packages
packages_install(){
    # python.h is needed
    sudo apt install -y python3-dev
    # necessary package
    sudo apt install -y python3-tk
}


# install virtualenv for python3
virtualenv_install(){
    sudo -H pip3 install virtualenv
}


# create virtual environment and install packages
virtualenv_create(){
    virtualenv venv -p python3
    source venv/bin/activate
    pip install pip -U
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    pip install torch==1.0
    pip install torchvision
    pip install opencv-python
    pip install -r requirements.txt
    deactivate
}


# install coco api
coco_install(){
    source venv/bin/activate
    git clone https://github.com/cocodataset/cocoapi.git
    pushd cocoapi/PythonAPI
    python setup.py install
    deactivate
    popd
}


maskrcnn_install(){
    source venv/bin/activate
    python setup.py build develop
    deactivate
}

download_models(){
    mkdir models
    pushd models
    # faster rcnn
    wget https://download.pytorch.org/models/maskrcnn/e2e_faster_rcnn_X_101_32x8d_FPN_1x.pth
    # mask rcnn
    wget https://download.pytorch.org/models/maskrcnn/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth
    popd
}

download_params(){
    mkdir -p ~/.torch/models
    wget -O ~/.torch/models/X-101-32x8d.pkl https://dl.fbaipublicfiles.com/detectron/ImageNetPretrained/20171220/X-101-32x8d.pkl
}

prepare_datasets(){
    mkdir -p datasets/coco
    pushd datasets/coco

    ln -s ${COCO_ROOT}/images/train2017
    ln -s ${COCO_ROOT}/images/val2017
    ln -s ${COCO_ROOT}/images/test2017
    ln -s ${COCO_ROOT}/annotations
    popd
}

prepare_directories(){
    mkdir outputs
}

packages_install
virtualenv_install
virtualenv_create
coco_install
maskrcnn_install
download_models
prepare_datasets
download_params
prepare_directories

 

这里解释一下脚本里面的download_models函数

需要使用什么样的模型可以参考:

https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/MODEL_ZOO.md

然后下载对应的模型

这里我们确定使用两个模型:

faster rcnn和mask的X-101-32x8d-FPN

对应的下载地址为:

https://download.pytorch.org/models/maskrcnn/e2e_faster_rcnn_X_101_32x8d_FPN_1x.pth

https://download.pytorch.org/models/maskrcnn/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth

你只需要替换脚本里掉对应的链接即可。

(1)修改对应的模型的配置文件

maskrcnn-benchmark/configs/e2e_faster_rcnn_X_101_32x8d_FPN_1x.yaml

maskrcnn-benchmark/configs/e2e_mask_rcnn_X_101_32x8d_FPN_1x.yaml

修改其中以下几项:

①数据集设置为coco2017对应的名字

DATASETS:
TRAIN: ("coco_2017_train", "coco_2017_val")
TEST: ("coco_2017_val",)

具体可以参考:

maskrcnn-benchmark/configs/paths_catalog.py

里面给出了各个数据集的路径

②由于是测试,因此需要设置batchsize小一些,方便在笔记本上跑,训练的时候需要设置大一些

IMS_PER_BATCH: 8

将该参数设置为1,最小!

③设置好模型的位置

WEIGHT: "models/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth"

(2)跑起demo

将一下代码保存为run_demo.sh,然后放入maskrcnn-benchmark的目录下并执行

#!/usr/bin/env bash

source venv/bin/activate

python demo/webcam.py \
--config-file configs/e2e_mask_rcnn_X_101_32x8d_FPN_1x.yaml \
--min-image-size 300 MODEL.DEVICE cuda
# --show-mask-heatmaps

deactivate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mask rcnn使用指南 的相关文章

  • Detect-and-Track论文:3D Mask R-CNN Caffe2源代码解析——3.RPN&FPN构建

    在第二部分 xff0c 我们对ResNet18的结构进行了分析 当图像经过ResNet18后 xff0c 会产生Feature Map xff08 特征图 xff09 这些特征图将会被送到RPN xff08 Region Proposal
  • 【MATLAB UAV Toolbox】使用指南(二)

    可视化和回放MAVLink飞行日志 这个例子将展示如何将包含MAVLink包的遥测日志 xff08 TLOG xff09 加载进MATLAB 提取的详细信息用来绘图 然后再次仿真飞行 xff0c 这些消息通过MAVLink通信接口重新发布
  • 【MATLAB UAV Toolbox】使用指南(三)

    可视化自定义飞行日志 通过配置flightLogSignalMapping可从自定义的飞行日志中可视化数据 加载自定义的飞行日志 在本例中 xff0c 假设飞行数据已经被解析到MATLAB 中 xff0c 并存储为M文件 本示例重点介绍如何
  • 生成随机mask以及根据mask对两幅图片进行合并

    前言 对图像处理的一些操作还是需要掌握的嘿嘿 随机mask生成 这里代码参考MAT的一份代码 https github com fenglinglwb MAT blob main datasets mask generator 256 py
  • (三)目标检测之 R-CNN系列

    目标检测之 R CNN系列 前言 R CNN系列 一 R CNN https arxiv org abs 1311 2524 二 Fast R CNN https arxiv org abs 1504 08083 三 Faster R CN
  • 深度学习之目标检测与目标识别

    一 目标识别分类及应用场景 目前可以将现有的基于深度学习的目标检测与识别算法大致分为以下三大类 基于区域建议的目标检测与识别算法 如R CNN Fast R CNN Faster R CNN 基于回归的目标检测与识别算法 如YOLO SSD
  • SwiftUI 在圆角矩形内屏蔽一个矩形

    你好呀 我想知道 在 SwiftUI 中 如何屏蔽圆角矩形的内容 以便子矩形剪掉角 在我的示例中 我在 zstack 上有一个白色圆角矩形和一个粉色矩形 我尝试应用剪切 但粉色矩形不符合边角 我尝试将 mask 应用于白色矩形 但它给出了与
  • UIImage 通过选择另一个 UIImage 的一部分

    我有一个 UIImage 和一个 CGPoint 它告诉我应该朝哪个方向移动它来创建另一个图像 背景可以是任何东西 给出初始的 UIImage 我如何创建新的 最有效的方法是什么 这是我正在做的事情 int originalWidth im
  • 从 NumPy 矩阵中的每一行中取出满足条件的前 N ​​个值

    我有一个numpy vector and a numpy array 我需要从矩阵中的每一行中获取小于 或等于 向量中相应行的前 N 个 比方说 3 个 值 所以如果这是我的向量 7 9 22 38 6 15 这是我的矩阵 20 9 7 5
  • 在 javafx 中创建图像覆盖蒙版

    我正在尝试做一件简单的事情 我有一个二值图像 我想要的只是将二值图像叠加在彩色图像上 但是二值图像中的白色像素应该是红色的 黑色像素应该是透明的 我已经习惯了 JavaFx 但我还是坚持使用这个 我知道我可以通过使用 PixelReader
  • 如何在 opencv 2.4.11 python 中调整轮廓大小? (目标:对象提取)

    我对 opencv 非常陌生 所以请原谅我的无知 基本上 我的图像中有一个感兴趣的对象 我想把它提取出来 我的问题是由于缩小原始图像的尺寸以方便处理而产生的 我在较小的图像上找到了物体的轮廓 我真正想做的是使用有关该轮廓的信息从原始全尺寸图
  • 为 ObjectBoundingBox 导出 SVG

    我对 SVG 的经验很少 我正在尝试保存来自 illustrator 的路径 以便它可以用作响应式剪贴蒙版 其大小相对于其父级 使用clipPathUnits objectBoundingBox 但是 Illustrator 似乎不允许我在
  • 在Android中绘画时如何遮盖一个简单的区域?

    下面是一个简化的描述 想象一下 我有一个 View 类 它可以绘制一面墙的图片 并且我想在绘制它时切出一个窗口 假设我扩展该 View 类并重写其dispatchDraw 方法来执行以下操作 首先绘制背景 如果有的话 可以通过窗户看到 接下
  • 是否可以在 Python 图像库 (PIL) 中屏蔽图像?

    我有一些交通摄像头图像 我只想提取道路上的像素 我以前使用过遥感软件 可以指定像这样的操作 img1 img2 img3 其中 img1 是原始图像 img2 是直接的黑白蒙版 本质上 图像的白色部分将评估为 img1 1 img3 黑色部
  • 如何屏蔽 EditText 以显示 dd/mm/yyyy 日期格式

    我怎样才能格式化EditText遵循 dd mm yyyy 格式化的方式与我们使用 a 格式化的方式相同TextWatcher to mask用户输入看起来像 0 05 我不是在谈论限制字符或验证日期 只是屏蔽到以前的格式 我写了这个Tex
  • 蒙版和剪辑 GLSurfaceView

    我使用的 SDK 通过回调提供矩形 glsurfaceview 我希望能够以圆形布局渲染此视图 即 我想在圆形视图上显示视图 我尝试过使用屏蔽布局 例如使用可屏蔽布局https github com christophesmet andro
  • R光栅绘制图像,画一个圆并掩盖圆外的像素

    下面的代码绘制一个图像 然后在该图像上绘制圆圈 我想让该圆圈之外的所有像素都变成黑色 我怎么能这么做呢 library raster library plotrix r1 lt brick system file external rlog
  • 仅将布尔掩码应用于数据帧列的索引部分

    我有一个包含一些列的数据框 gt gt gt np random seed 0xFEE7 gt gt gt df pd DataFrame A np random randint 10 size 10 B np random randint
  • 用于通过 Apple 登录的自定义圆形按钮

    我遵循 Apple 的指南来实施 使用 Apple 登录 按钮 苹果在文档中表示 也可以仅使用徽标来创建 使用Apple登录 的自定义按钮 您也可以更改图像的形状以具有圆形按钮 为了能够编辑图像 它还提供插入蒙版 但我不明白我们必须为按钮或
  • 底部带有三角形的蒙版图像

    我正在尝试找出如何最好地掩盖具有像这样的角度形状的 div 如果在这种情况下顶部 div 将是背景图像 并且两个 div 都是 100 宽度 我看过很多关于如何用圆形遮罩图像的教程 但没有关于如何遮罩红色区域等 div 边框的教程 我知道一

随机推荐

  • AudioChannelManipulation

    Manipulating audio channels with ffmpeg Contents stereo mono streamstereo 2 mono filesstereo 2 mono streamsmono stereo2
  • sklearn数据集随机切分(train_test_split)

    sklearn学习 给定数据集X和类别标签y xff0c 将数据集按一定比例随机切分为训练集和测试集 代码 span class hljs comment usr bin env python span span class hljs co
  • 音频节奏检测(Onset Detection)

    1 前言 最近市场上出现一些多个视频拼接而成MV xff0c 其原理是根据音频的节拍变换切换视频 我在这里讲述下如何进行音频节拍检测 2 音频检测一般流程 3 3 1 原始音频频谱 以1024为窗口 xff08 即每次读取1024个采样点
  • 金融时间序列分析:6. AR模型实例(R语言)

    0 目录 金融时间序列分析 xff1a 9 ARMA自回归移动平均模型 金融时间序列分析 xff1a 8 MA模型实例 xff08 Python xff09 金融时间序列分析 xff1a 7 MA滑动平均模型 金融时间序列分析 xff1a
  • 比特率,帧率,分辨率对视频画质的影响

    0 前言 前几天和别人讨论视频编码参数对视频清晰度影响 xff0c 今日查查文献在此记录总结下 对最终用户而言 xff0c 其只关心视频的文件大小和画面质量 其中画面质量包括 xff1a 分辨率 xff0c 清晰度和流畅度 流畅度 xff1
  • 搭建Android Camera项目工程

    0 前言 这块内容非常简单 xff0c 需要注意的有两个 xff1a 需要申请相机权限需要一个Surface用来预览 1 申请相机权限 1 1 申请Camera权限 span class hljs tag lt span class hlj
  • 获取webshell权限的45种方法

    1 到GoogLe 搜索一些关键字 edit asp 韩国肉鸡为多 多数为MSSQL数据库 2 到Google site cq cn inurl asp 3 利用挖掘鸡和一个ASP木马 文件名是login asp 路径组是 manage 关
  • EGLContext: eglMakeCurrent详解

    1 前言 在完成EGL的初始化之后 xff0c 需要通过eglMakeCurrent 函数来将当前的上下文切换 xff0c 这样opengl的函数才能启动作用 boolean eglMakeCurrent EGLDisplay displa
  • UART串口通信 Verilog实现代码

    串行通信分为两种方式 xff1a 同步串行通信和异步串行通信 同步串行通信需要通信双方在同一时钟的控制下 xff0c 同步传输数据 xff1b 异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程 UART 是一种采用异步串行通信
  • pytorch: 四种方法解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB

    Bug xff1a RuntimeError CUDA out of memory Tried to allocate MiB 解决方法 xff1a 法一 xff1a 调小batch size xff0c 设到4基本上能解决问题 xff0c
  • Linux打开txt文件乱码的解决方法

    今天发现打开windows下的txt文本出现问题 xff0c 主要是编码问题 xff0c 所以这里我记录下这个问题的解决方法 Linux显示在 Windows 编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致 Linux下使用的
  • ubuntu14.04安装cuda

    首先验证你是否有nvidia的显卡 xff08 http developer nvidia com cuda gpus这个网站查看你是否有支持gpu的显卡 xff09 xff1a lspci grep i nvidia 查看你的linux发
  • debian安装无线网卡驱动

    最近安装了debian8 xff0c 但是安装好了后发现不能连wifi 能连有线的 xff0c 笔记本不能连WIFI是个悲剧 xff0c 于是就度百度 xff0c 最后在一篇文章看到方法 xff0c 原文地址 xff1a https wik
  • 魔改Cmake系列:cmake中Boost找不到库的解决方法

    Begin finding boost libraries FindBoost cmake文件中 xff0c 在CMake share cmake 3 4 Modules 找到下面这几行代码 xff08 你可以搜索 xff09 messag
  • 关于softmax损失函数的推导

    关于softmax损失函数的推导 某人问我softamx损失函数的推导 索性就写一下 定义softmax损失函数的输入为 X N C 和 Y N C 其中N代表输入的数据的个数 C代表类别的个数 X指的是神经网络的输出 Y代表的是0 1矩阵
  • 手把手教你数据恢复编程(二)基础知识篇

    好了 接上一篇 xff0c 本篇 xff0c 我们将详细讲解NTFS文件系统的一些重要的数据结构 xff0c 闲话少叙 xff0c 咱们开讲 NTFS文件系统 一 NTFS简介 NTFS xff08 New Technology File
  • 数字图像基本处理算法

    数字图像基本处理算法 xizero00 常熟理工学院 xff08 CIT xff09 计算机科学与工程学院 下一代互联网实验室 NGIL Lab Email xizero00 64 163 com 由于SIFT算法需要用到很多算法 xff0
  • PyOpenPose编译与使用

    PyOpenPose编译 前言 PyOpenPose是一个OpenPose的python绑定 xff0c 你可以使用python来实现人体的姿态估计 用上python的openpose xff0c 想想就有点小激动呢 哈哈 PyOpenPo
  • torch系列:如何在torch内使用tensorboard

    torch也是可以使用tensorboard的 xff0c 通过安装crayon就可以 下面以ubuntu下的安装为例进行讲解 其实安装的过程还是会碰到不少曲折的过程的 主要为 安装crayon会提示找不到libssl so文件 xff0c
  • mask rcnn使用指南

    做姿态估计的小伙伴们肯定经常用检测器 xff0c 为了方便大家 xff0c 这里给出一个很方便的教程 让大家快速上手 xff0c 不用再纠结配置环境 xff01 欢迎加入我们的姿态估计群 xff1a 970029323 xff08 xff1