实战|基于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同样可以与其他目标检测模型以这种方式进行结合使用,达到分割目标的效果。

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

相关文章
|
机器学习/深度学习 算法 数据挖掘
目标检测算法——YOLOv3
目标检测算法——YOLOv3
385 0
目标检测算法——YOLOv3
|
机器学习/深度学习 编解码 算法
yolo原理系列——yolov1--yolov5详细解释
yolo原理系列——yolov1--yolov5详细解释
1254 0
yolo原理系列——yolov1--yolov5详细解释
|
2月前
|
数据处理 算法框架/工具 计算机视觉
手把手教你使用YOLOV5训练自己的目标检测模型
本教程由肆十二(dejahu)撰写,详细介绍了如何使用YOLOV5训练口罩检测模型,涵盖环境配置、数据标注、模型训练、评估与使用等环节,适合大作业及毕业设计参考。提供B站视频、CSDN博客及代码资源链接,便于学习实践。
309 1
手把手教你使用YOLOV5训练自己的目标检测模型
|
2月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
130 3
|
2月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
571 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
机器学习/深度学习 JSON 数据可视化
YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程
本文介绍了如何将个人数据集转换为YOLO11-pose所需的数据格式,并详细讲解了手部关键点检测的训练过程。内容涵盖数据集标注、格式转换、配置文件修改及训练参数设置,最终展示了训练结果和预测效果。适用于需要进行关键点检测的研究人员和开发者。
475 0
|
6月前
|
存储 API 计算机视觉
实战|YOLOv10 自定义目标检测
实战|YOLOv10 自定义目标检测
288 1
|
7月前
|
算法 数据可视化 数据处理
YOLOv5实现图片内目标检测
本文介绍了如何配置yolov5的运行环境、如何进行数据标注、如何通过yolov5训练数据集实现图片的目标检测。目标检测在计算机视觉领域中具有重要意义,yolov5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。
646 1
YOLOv5实现图片内目标检测
|
编解码 固态存储 数据挖掘
目标检测:YOLO V2思路解读
目标检测:YOLO V2思路解读
219 0
目标检测:YOLO V2思路解读
|
数据挖掘 计算机视觉
目标检测:YOLOV3技术详解
目标检测:YOLOV3技术详解
261 0
目标检测:YOLOV3技术详解

热门文章

最新文章