环境安装
环境搭建
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,图像中包含有网络预测的检测框

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

补充:
①编辑–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教程
