MMDetection-SAM


环境安装

环境搭建

conda create -n mmdetsam python=3.8 -y
conda activate mmdetsam

pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install mmengine -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

git clone https://github.com/open-mmlab/playground.git
cd playground

playground:该项目包含了许多优秀的开源算法,以减轻环境安装的负担

1 开放词汇+SAM

开放词汇+SAM(Open-Vocabulary + SAM)
将开放词汇目标检测器与 SAM 模型结合使用

让SAM在分割一切的基础上,进行分类

mmdetection

依赖安装

pip install -U openmim  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
mim install "mmcv>=2.0.0"  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

# build from source
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection; 
pip install -e .; cd ..

pip install git+https://github.com/facebookresearch/segment-anything.git
pip install git+https://github.com/openai/CLIP.git

验证mmdetection安装成功

①下载配置文件和模型权重文件

pip install -U openmim
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

②推理验证

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth

执行完成后,当前文件夹中的 outputs/vis 文件夹中看到一个新的图像 demo.jpg,图像中包含有网络预测的检测框

image-20231114125942189

Demonstration

cd mmdet_sam

# download weights
mkdir ../models
wget -P ../models/ https://download.openmmlab.com/mmdetection/v3.0/detic/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth
wget -P ../models/ https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

####input a single image
python detector_sam_demo.py ../images/cat_remote.jpg \
    configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \
    ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \
    -t cat \
    --sam-device cpu

image-20231114131856729

补充:

①编辑–test-prompt来检测遥控器。

请注意,您必须使用空白区域并.分隔不同的类别

python detector_sam_demo.py ../images/cat_remote.jpg configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --sam-device cpu
python detector_sam_demo.py ../images/hengxuhe-20190411___1920___1920_24.jpg  configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py  ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth  -t ship

②对文件夹运行推理

# input a folder
python detector_sam_demo.py ../images configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --sam-device cpu

③如果您的 GPU 的显存只能支持运行一种模型,您可以使用以下方法–cpu-off-load来确保每次 GPU 上都只运行一种模型:

# input a folder
python detector_sam_demo.py ../images \
    configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \
    ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \
    -t "cat . remote" \
    --cpu-off-load

④我们还通过使用支持 CPU 推理–det-device cpu 。

由于 Detic 包含掩模结果,因此我们添加了一个附加参数–use-detic-mask。这允许我们只运行 Detic,而不运行 SAM 模型。

# input a folder
python detector_sam_demo.py ../images configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth -t "cat . remote" --det-device cpu --use-detic-mask

⑤如果您只想可视化结果,可以使用 set–only-det来运行而不使用 SAM 模型。

# input a sinle image
python detector_sam_demo.py ../images/cat_remote.jpg \
    configs/Detic_LI21k_CLIP_SwinB_896b32_4x_ft4x_max-size.py \
    ../models/detic_centernet2_swin-b_fpn_4x_lvis-coco-in21k_20230120-0d301978.pth \
    -t "cat" \
    --only-det

参考博客

ubuntu20.04 在pycharm配置mmdetection教程

OpenMMLab MMDetectionV3.1.0-SAM

MMDetection-SAM

MMDetection代码

isuess


文章作者: Ghan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ghan !
  目录