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使用指南 的相关文章

  • tf-faster-rcnn跑demo.py出现InvalidArgumentError (see above for traceback): Assign requires shapes of bo

    基于tf faster rcnn做图像识别时 xff0c 使用自己的数据集 训练过程没有问题 xff0c 然后跑demo的时候报 xff1a InvalidArgumentError see above for traceback Assi
  • iperf3 使用指南

    iperf3的参数 xff1a s表示做服务器 c表示做客户端 t 表示表示发送时间 i 表示间隔多久报告一次 u 表示UDP xff0c 不加表示tcp R 表示服务器发客户端收 xff0c 不加默认客户端发 xff0c 服务器收 f 表
  • MSCAN:Learning Deep Context-aware Features over Body and Latent Parts for Person ReID阅读笔记

    Learning Deep Context aware Features over Body and Latent Parts for Person Re identification 作者 DangWei Li等人 CVPR 2017 1
  • python opencv cv2在图片中画mask掩码/掩膜

    python opencv cv2在图片中画mask掩膜 import cv2 import numpy as np from PIL import Image import matplotlib pyplot as plt mask th
  • 如何使用 Sprite Kit 在 iOS 中创建 alpha 遮罩

    我想要达到的效果是在黑暗区域中有一个光圈 其效果类似于口袋妖怪游戏中的效果 当你处于黑暗的洞穴中并且周围的视野有限时 根据我的尝试和阅读 我无法在具有 alpha 级别的精灵套件中的节点上创建遮罩 我设法创建的蒙版都有硬边 而且基本上只是裁
  • 将子网掩码“/”符号转换为 Cisco 0.0.0.0 标准

    我已经搜索过寻求帮助 但找不到我的问题的答案 情况 我需要将 NN 子网掩码表示法 例如IPTABLES 转换为0 0 0 0 cisco 表示法 NN 是子掩码中 1 的数量 从最低八位位组到较高八位位组 每个八位位组都是 8 位整数 可
  • Unity 交叉口蒙版

    有没有办法检测具有一定数量顶点的物体是否撞击平面 如果是这样 我想将其以二进制 黑 白 绘制到平面上或用它创建纹理 而且我也不关心这是否只能通过光线投射或一些棘手的物理操作 着色器 等来创建 我只是想知道什么数学算法可以创建这个 Here
  • 如何使用蒙版为圆形图像添加边框

    这是我的尝试 func round let width bounds width lt bounds height bounds width bounds height let mask CAShapeLayer mask path UIB
  • OpenGL ES:如何用颜色对纹理着色

    我有阿尔法纹理 我想用某种颜色给它着色 所以它会根据颜色 alpha 值进行着色 但整体不透明度将仅由纹理 alpha 定义 这与多重纹理类似 但使用颜色而不是第二个纹理 怎么做 更新 我尝试过设置纹理组合器 颜色着色得很好 但 alpha
  • Dask 中的遮罩

    我只是想知道是否有人可以帮助我展示如何使用 dask 在掩码数组上应用 sum 或 mean 等函数 我希望仅计算没有掩码的值的数组的总和 平均值 Code import dask array as da import numpy as n
  • iOS 中 UIImageView 的圆形蒙版动画

    我想知道如何在 uiimageview 上对蒙版的比例进行动画处理 附示例图片 灰色框是我的 uiviewcontroller 的图像背景 不是问题的一部分 我假设创建一个 uiview 子类 并传递图像 半径和中心点 然后 创建一个蒙版
  • 旋转时自动调整 UITableView 标题大小(主要在 iPad 上)

    我觉得这将是一个围绕 AutoResizingMasks 的简单答案 但我似乎无法理解这个主题 我有一个 iPad 应用程序 可以并排显示 2 个 UITableView 当我从纵向旋转到横向并返回时 UITableView 中的单元格会在
  • 是否可以在 Python 图像库 (PIL) 中屏蔽图像?

    我有一些交通摄像头图像 我只想提取道路上的像素 我以前使用过遥感软件 可以指定像这样的操作 img1 img2 img3 其中 img1 是原始图像 img2 是直接的黑白蒙版 本质上 图像的白色部分将评估为 img1 1 img3 黑色部
  • 在 iPhone 应用程序中使用 CoreGraphic 描边作为 Alpha 遮罩

    我基本上希望为不同的目的创建类似于 iSteam iFog alebit 的非常简单版本的东西 实际上 将有两个图像 一个是主题图像 另一个是凝结图像或类似图像 然后 用户可以在屏幕上擦拭手指 它将从顶层 剪切 以显示下层 到目前为止 我已
  • OpenGL - 如果 alpha 则不写深度

    我想使用 C 和 GLSL 在 OpenGL 中做什么 当纹理具有 alpha texture a 1 0 时 该像素不会写入深度缓冲区 对于颜色缓冲区 它是这样写的 仅当像素texture a 1 0时才会发生写入深度 在着色器中丢弃不是
  • pandas 面板中的布尔掩码

    我在以与 DataFrame 相同的方式屏蔽面板时遇到一些麻烦 我想做的事情感觉很简单 但我还没有找到查看文档和在线论坛的方法 我有一个简单的例子如下 import pandas import numpy as np import date
  • Python-将二进制掩码转换为多边形

    给定一个简单的二进制掩码 例如矩形的边界 如何使用多边形获取 x y 坐标 这是我到目前为止所尝试过的 coords np transpose np nonzero mask 然而 这种方法会生成填充的对象 而不是所需的边界 plt plo
  • Abaqus Surface getSequenceFromMask

    我正在 Abaqus 中编写脚本 我用切圆 像奶酪 压碎圆形和正方形 我需要在部件之间放置接触 所以我需要 Surface 宏管理器生成 s1 a instances kolo 1 edges side1Edges1 s1 getSeque
  • SpriteKit:如何使用混合模式在图层中打孔

    我有一个简单的场景 添加了一些元素 现在我想专注于一个带有遮罩的特定元素 在与我想要关注的元素相同的位置切割整个元素 与我们在某些游戏第一次启动时看到的显示某种教程非常相似 基本上我添加了一个全屏层alpha 0 7 因此用户仍然可以看到所
  • Firefox 上的 SVG 图像遮罩

    最近我创建了六边形 SVG 并计划将其实现为 Firefox 的图像遮罩 目前它只适用于 Chrome http jsfiddle net brokeneye WKEbw http jsfiddle net brokeneye WKEbw

随机推荐

  • 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