实战|基于YOLOv10与MobileSAM实现目标检测与分割【附完整源码】

简介: 实战|基于YOLOv10与MobileSAM实现目标检测与分割【附完整源码】


实现效果

原始图片

使用YOLOv10检测与MobileSAM分割后的结果如下:

引言

本文基于前沿的YOLOv10目标检测模型与轻量化分割一切的MobileSAM模型实现物体的目标检测与分割效果。本文给出了完整的实现步骤与代码详解,供小伙伴们学习。**所有相关文件、模型及相关资料均已打包,文末可免费获取。**有任何问题的话,欢迎在评论区留言讨论。

实现步骤

首先我们需要下载YOLOv10源码与MobileSAM源码并解压,地址如下:

https://github.com/ChaoningZhang/MobileSAM

https://github.com/THU-MIG/yolov10

环境配置

我们进入到yolov10源码的项目目录,然后使用conda进行项目虚拟环境配置:

conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .

YOLOv10进行目标检测

这里我们直接使用官方提供的yolov10n.pt进行检测,并获取检测框的位置信息,用于后续MobileSAM进行分割,代码如下:

# 读取图像
image = cv2.imread('test1.jpg')
# 加载YOLOv10模型
model = YOLOv10("yolov10_main/yolov10n.pt")
results = model.predict(image)
# 绘制检测结果
results[0].show()
# 获取结果
res = results[0]
# 获取检测框位置信息
box_locations = res.boxes.xyxy.cpu().numpy().astype(int)
print(box_locations)

检测结果如下所示:

MobilseSAM进行分割

我们将上述检测框信息作为提示信息,传入MobileSAM对目标进行分割,具体代码如下:

加载MobileSAM模型:

from mobile_encoder.setup_mobile_sam import setup_model
from segment_anything import SamPredictor
# 加载分割模型
checkpoint = torch.load('MobileSAM-master/weights/mobile_sam.pt',map_location=torch.device('cpu'))
mobile_sam = setup_model()
mobile_sam.load_state_dict(checkpoint,strict=True)
device = "cpu"
mobile_sam.to(device=device)
mobile_sam.eval()
predictor = SamPredictor(mobile_sam)
predictor.set_image(image)

使用模型对目标进行分割:

# 矩形框提示
for box in box_locations:
    input_box = np.array([box[0], box[1], box[2], box[3]])
    masks, _, _ = predictor.predict(
        point_coords=None,
        point_labels=None,
        box=input_box[None, :],
        multimask_output=False,
    )
    # masks为布尔值
    # 显示mask
    image = add_mask(image, masks[0])
    # 显示检测框
    image = show_box(image, box)
cv2.imshow("res", image)
cv2.imwrite("res.jpg", image)
cv2.waitKey(0)

显示结果如下:

可以看到,MobileSAM可以很好的对YOLOv10检测后的结果进行分割。MobileSAM同样可以与其他目标检测模型以这种方式进行结合使用,达到分割目标的效果。

好了,这篇文章就介绍到这里,感谢点赞关注,更多精彩内容持续更新中~

相关文章
|
存储 计算机视觉 开发者
【mobileSam】使用大模型推理赋能标注工作,让标注工作不再困难
【mobileSam】使用大模型推理赋能标注工作,让标注工作不再困难
1057 1
|
机器学习/深度学习 编解码 人工智能
|
4月前
|
人工智能 计算机视觉 测试技术
Meta SAM3开源
Meta发布并开源SAM 3,首个支持文本、点、框等多提示的统一图像视频分割模型,突破性实现开放词汇概念的全实例分割。基于Meta Perception Encoder与DETR架构,结合AI与人工协同数据引擎,构建超400万概念数据集,在SA-Co基准达人类水平75%-80%。支持大规模可提示分割与跟踪,推动视觉基础模型新进展。(239字)
|
编解码 计算机视觉 异构计算
【CV大模型SAM(Segment-Anything)】如何一键分割图片中所有对象?并对不同分割对象进行保存?
【CV大模型SAM(Segment-Anything)】如何一键分割图片中所有对象?并对不同分割对象进行保存?
|
机器学习/深度学习 资源调度 计算机视觉
YOLOv11改进策略【Conv和Transformer】| CVPR-2022 Deformable Attention Transformer 可变形自注意力 动态关注目标区域
YOLOv11改进策略【Conv和Transformer】| CVPR-2022 Deformable Attention Transformer 可变形自注意力 动态关注目标区域
706 6
YOLOv11改进策略【Conv和Transformer】| CVPR-2022 Deformable Attention Transformer 可变形自注意力 动态关注目标区域
YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)
YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)
1117 8
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
25624 3
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
6808 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 数据可视化 自动驾驶
YOLO11-seg分割如何训练自己的数据集(道路缺陷)
本文介绍了如何使用自己的道路缺陷数据集训练YOLOv11-seg模型,涵盖数据集准备、模型配置、训练过程及结果可视化。数据集包含4029张图像,分为训练、验证和测试集。训练后,模型在Mask mAP50指标上达到0.673,展示了良好的分割性能。
6681 4
|
算法 测试技术 异构计算
【SAM模型超级进化】MobileSAM轻量化的分割一切大模型出现,模型缩小60倍,速度提高40倍,效果不减
【SAM模型超级进化】MobileSAM轻量化的分割一切大模型出现,模型缩小60倍,速度提高40倍,效果不减