python 深度学习 项目调试 图像分割 segment-anything

news/2024/10/27 22:14:44/

起因, 目的:

  1. 项目来源: https://github.com/facebookresearch/segment-anything
  2. 项目目的: 图像分割。 提前图片中的某个目标。
  3. facebook 出品, 居然有 47.3k star!

思考一些问题

  1. 我可以用这个项目来做什么?
  2. 给一个图片, 进行分割, 如何提取出自己想要的内容?
  3. 别人用这个项目来做什么?

调试过程:

  1. 下载压缩包。 pip install -e .
  2. pip install opencv-python pycocotools matplotlib onnxruntime onnx
  3. 下载模型。 总共有3个模型。 我选最小的 358 MB
运行示例
  1. 查看 notebooks 里面的3个文件,示例写的很好。
  2. 换成自己的图片,更有趣一些!
  3. 如果图片太大,先进行缩小。 不然内存和显存都不够,很卡!

原始图片:
在这里插入图片描述
简单分割一下:
在这里插入图片描述

画图函数,我修改了示例中的画图函数

这里, take = 10 , 只选取10个即可。
其实,简单的图片, 3个 masks 就够了。

python">def show_anns(anns, take=10):# 检查传入的注释列表是否为空if len(anns) == 0:return# 对注释列表进行排序,按照每个注释的区域大小降序排列sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)[:take]# 获取当前的轴对象,用于绘图ax = plt.gca()# 关闭自动缩放,以确保绘制的图像不会因为数据的变化而改变大小ax.set_autoscale_on(False)# 创建一个全白的图像,其尺寸与第一个注释的分割区域相同# 这里假设所有注释的分割区域尺寸是一致的img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4))# 将图像的 alpha 通道(透明度)设置为 0,表示完全透明img[:,:,3] = 0# 遍历排序后的注释列表for ann in sorted_anns:# 获取当前注释的分割区域m = ann['segmentation']# 为每个注释生成一个随机颜色的遮罩,透明度设置为 0.35color_mask = np.concatenate([np.random.random(3), [0.35]])# 将遮罩应用到图像上,覆盖对应的分割区域img[m] = color_mask# 在轴对象上显示图像ax.imshow(img)

结论 + todo

图像相关的项目,需要显存。

masks = mask_generator.generate(image) # 运行这一步, gpu 用了 5.6G / 8.7G


老哥留步,支持一下。

请求支持


http://www.ppmy.cn/news/1542448.html

相关文章

⭐ Unity 序列帧播放脚本

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class FrameImgControl : MonoBehaviour {private Image img;[Header("序列帧")] [SerializeField] private Sprite[] sprites;/// <summary>//…

Spark和MapReduce场景应用和区别

Spark和MapReduce都是处理大数据的工具&#xff0c;但在数据处理方式及速度上存在显著差异&#xff0c;以下进行详细对比&#xff1a; Spark与MapReduce的主要差异点&#xff1a; Spark是基于内存处理数据的&#xff0c;而MapReduce则是基于磁盘。MapReduce将中间结果保存在磁…

【Docker命令】日常使用的Docker命令

Docker常用命令 1、基础命令2、容器管理3、镜像管理推送镜像 4、网络管理5、数据管理 1、基础命令 - docker run&#xff1a;运行一个容器,--name 指定容器的名称&#xff0c;-i 获取标准输入输出&#xff0c;-t显示在终端&#xff0c;-d放到后台运行&#xff0c;--rm容器停止…

深度学习-31-基于keras的十大经典算法之Transformer

文章目录 1 Transformer简介2 模型应用2.1 加载数据2.2 定义Transformer层2.3 定义嵌入层2.4 定义模型2.5 训练模型2.6 整体代码2.7 模型预测3 参考附录1 Transformer简介 一、背景 在深度学习的早期阶段,卷积神经网络(CNN)在图像识别和自然语言处理领域取得了显著的成功。…

【数据结构与算法】之链表经典算法大集合

本文主要内容是几个关于链表的初级经典算法的分享&#xff0c;都采用Java语言实现&#xff0c;话不多说&#xff0c;立马开始&#xff01; 注意&#xff1a;以下代码有关链表的算法实现均基于以下链表节点类&#xff1a; //链表节点类 public class ListNode {int val;ListNo…

Spring Boot框架:论坛网站开发的新选择

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Python小游戏9——天天酷跑

安装Pygame库。如果你还没有安装&#xff0c;可以使用以下命令&#xff1a; bash pip install pygame 游戏代码&#xff1a; python import pygame import random # 初始化Pygame pygame.init() # 屏幕尺寸 SCREEN_WIDTH 800 SCREEN_HEIGHT 600 screen pygame.display.set_m…

JavaCV 之均值滤波:图像降噪与模糊的权衡之道

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…