位置: IT常识 - 正文

【图像分割】Meta分割一切(SAM)模型环境配置和使用教程(图像分割最新算法)

编辑:rootadmin
【图像分割】Meta分割一切(SAM)模型环境配置和使用教程

推荐整理分享【图像分割】Meta分割一切(SAM)模型环境配置和使用教程(图像分割最新算法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:图像分割ncut,图像分割csdn,图像分割unet,图像分割实现,图像分割实现,图像分割otsu,图像分割otsu,图像分割miou,内容如对您有帮助,希望把文章链接给更多的朋友!

注意:python>=3.8, pytorch>=1.7,torchvision>=0.8

Feel free to ask any question. 遇到问题欢迎评论区讨论.

官方教程:

https://github.com/facebookresearch/segment-anything1 环境配置1.1 安装主要库:

(1)pip:

有可能出现错误,需要配置好Git。

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

(2)本地安装:

有可能出现错误,需要配置好Git。

git clone git@github.com:facebookresearch/segment-anything.gitcd segment-anything; pip install -e .

(3)手动下载+手动本地安装:

 zip文件:

链接:https://pan.baidu.com/s/1dQ--kTTJab5eloKm6nMYrg提取码:1234

解压后运行: 

cd segment-anything-mainpip install -e .1.2 安装依赖库:pip install opencv-python pycocotools matplotlib onnxruntime onnx

matplotlib 3.7.1和3.7.0可能报错

如果报错:pip install matplotlib==3.6.2

1.3 下载权重文件:

下载三个权重文件中的一个,我用的第一个。

default or vit_h: ViT-H SAM model.vit_l: ViT-L SAM model.vit_b: ViT-B SAM model.

 如果下载过慢:

链接:https://pan.baidu.com/s/11wZUcjYWNL6kxOH5MFGB-g 提取码:1234 2 使用教程2.1 根据在图片上选择的点扣出物体【图像分割】Meta分割一切(SAM)模型环境配置和使用教程(图像分割最新算法)

原始图像:

 导入依赖库和展示相关的函数:

import cv2import matplotlib.pyplot as pltimport numpy as npfrom segment_anything import sam_model_registry, SamPredictordef show_mask(mask, ax, random_color=False): if random_color: color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0) else: color = np.array([30 / 255, 144 / 255, 255 / 255, 0.6]) h, w = mask.shape[-2:] mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1) ax.imshow(mask_image)def show_points(coords, labels, ax, marker_size=375): pos_points = coords[labels == 1] neg_points = coords[labels == 0] ax.scatter(pos_points[:, 0], pos_points[:, 1], color='green', marker='*', s=marker_size, edgecolor='white', linewidth=1.25) ax.scatter(neg_points[:, 0], neg_points[:, 1], color='red', marker='*', s=marker_size, edgecolor='white', linewidth=1.25)

确定使用的权重文件位置和是否使用cuda等:

sam_checkpoint = "F:\sam_vit_h_4b8939.pth"device = "cuda"model_type = "default"

模型实例化:

sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)sam.to(device=device)predictor = SamPredictor(sam)

读取图像并选择抠图点:

image = cv2.imread(r"F:\Dataset\Tomato_Appearance\Tomato_Xishi\images\xs_1.jpg")image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)predictor.set_image(image)input_point = np.array([[1600, 1000]])input_label = np.array([1])plt.figure(figsize=(10,10))plt.imshow(image)show_points(input_point, input_label, plt.gca())plt.axis('on')plt.show()

 扣取图像(会同时提供多个扣取结果):

masks, scores, logits = predictor.predict( point_coords=input_point, point_labels=input_label, multimask_output=True,)# 遍历读取每个扣出的结果for i, (mask, score) in enumerate(zip(masks, scores)): plt.figure(figsize=(10,10)) plt.imshow(image) show_mask(mask, plt.gca()) show_points(input_point, input_label, plt.gca()) plt.title(f"Mask {i+1}, Score: {score:.3f}", fontsize=18) plt.axis('off') plt.show()

     

 尝试扣取其他位置:

 

2.2 扣取图像中的所有物体

官方教程:

https://github.com/facebookresearch/segment-anything/blob/main/notebooks/automatic_mask_generator_example.ipynb

依赖库和函数导入:

from segment_anything import sam_model_registry, SamAutomaticMaskGenerator, SamPredictorimport cv2import matplotlib.pyplot as pltimport numpy as npdef show_anns(anns): if len(anns) == 0: return sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True) ax = plt.gca() ax.set_autoscale_on(False) polygons = [] color = [] for ann in sorted_anns: m = ann['segmentation'] img = np.ones((m.shape[0], m.shape[1], 3)) color_mask = np.random.random((1, 3)).tolist()[0] for i in range(3): img[:,:,i] = color_mask[i] ax.imshow(np.dstack((img, m*0.35)))

读取图片:

image = cv2.imread(r"F:\Dataset\Tomato_Appearance\Tomato_Xishi\images\xs_1.jpg")image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

实例化模型:

sam_checkpoint = "F:\sam_vit_h_4b8939.pth"model_type = "default"device = "cuda"sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)sam.to(device=device)

 分割并展示(速度有点慢):

mask_generator = SamAutomaticMaskGenerator(sam)masks = mask_generator.generate(image)plt.figure(figsize=(20,20))plt.imshow(image)show_anns(masks)plt.axis('off')plt.show()

2.3 根据文字扣取物体

配置另外一个库:

https://github.com/IDEA-Research/Grounded-Segment-Anything

后续更新细节

本文链接地址:https://www.jiuchutong.com/zhishi/288855.html 转载请保留说明!

上一篇:【Java基础】一个Java文件可以有多个类(外部类、内部类)(java基础教程)

下一篇:被翡翠湾环绕的芬尼特岛,太浩湖,加利福尼亚 (© Rachid Dahnoun/Tandem Stills + Motion)(翡翠湾攻略)

  • 华为手机密码锁屏忘了密码怎么开锁 (华为手机密码锁怎么设置)

    华为手机密码锁屏忘了密码怎么开锁 (华为手机密码锁怎么设置)

  • opporeno4电池容量多大(opporeno4电池容量多e)

    opporeno4电池容量多大(opporeno4电池容量多e)

  • 苹果手机手电筒快捷键在哪里设置(苹果手机手电筒打不开)

    苹果手机手电筒快捷键在哪里设置(苹果手机手电筒打不开)

  • 微博怎么查看登录邮箱(微博怎么查看登陆设备)

    微博怎么查看登录邮箱(微博怎么查看登陆设备)

  • 哈罗单车退骑行卡可以退吗(哈罗单车怎样退车)

    哈罗单车退骑行卡可以退吗(哈罗单车怎样退车)

  • iphonex的耳机怎么用(iphonex耳机怎么使用)

    iphonex的耳机怎么用(iphonex耳机怎么使用)

  • 申请微信号逻辑错误怎么办?(微信号申请条件)

    申请微信号逻辑错误怎么办?(微信号申请条件)

  • 微信视频是镜像的吗(微信视频是镜像的吗华为)

    微信视频是镜像的吗(微信视频是镜像的吗华为)

  • 2rx8是几代内存(2rx8是几代内存条10600s)

    2rx8是几代内存(2rx8是几代内存条10600s)

  • 加域的电脑上网很慢(加域后无法上网)

    加域的电脑上网很慢(加域后无法上网)

  • 卸载qq重新下载会不会没有记录(卸载qq重新下载查得到登录时间吗)

    卸载qq重新下载会不会没有记录(卸载qq重新下载查得到登录时间吗)

  • findx2pro和findx2区别(findx2pro和findx2哪个好)

    findx2pro和findx2区别(findx2pro和findx2哪个好)

  • 手机微博如何看最近访客(手机微博如何看在线)

    手机微博如何看最近访客(手机微博如何看在线)

  • 乐视2怎么改日历日期(乐视2设置锁屏时间设置在哪里)

    乐视2怎么改日历日期(乐视2设置锁屏时间设置在哪里)

  • 手机怎么更改软件名字(手机怎么更改软件默认打开的浏览器)

    手机怎么更改软件名字(手机怎么更改软件默认打开的浏览器)

  • OPPO k5的语音助手有哪些功能(oppok7手机语音助手)

    OPPO k5的语音助手有哪些功能(oppok7手机语音助手)

  • 抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

    抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

  • 红米4x悬浮球开关在哪里(红米手机悬浮窗口)

    红米4x悬浮球开关在哪里(红米手机悬浮窗口)

  • 三星note10 防水么(三星note10+5g防水)

    三星note10 防水么(三星note10+5g防水)

  • 抖音如何判断自己被拉黑(抖音如何判断自然流量和消费流量)

    抖音如何判断自己被拉黑(抖音如何判断自然流量和消费流量)

  • 三星s10需要贴膜吗(三星s10需要贴膜不)

    三星s10需要贴膜吗(三星s10需要贴膜不)

  • 全民k歌如何去掉小程序(全民k歌如何去水印)

    全民k歌如何去掉小程序(全民k歌如何去水印)

  • 美拍如何加文字(美拍怎么在视频打字)

    美拍如何加文字(美拍怎么在视频打字)

  • 企业会议app开发有何优势(会议系统开发)

    企业会议app开发有何优势(会议系统开发)

  • win10玩游戏fps低怎么办 手把手教你利用windows功能提高FPS(win10玩游戏fps低怎么办)

    win10玩游戏fps低怎么办 手把手教你利用windows功能提高FPS(win10玩游戏fps低怎么办)

  • win10更新KB5003214导致系统托盘无法正常工作的两种方法(win10更新kb5005033)

    win10更新KB5003214导致系统托盘无法正常工作的两种方法(win10更新kb5005033)

  • 怎样让绿萝疯长,掌握这三点,让你的绿萝快速疯长!(让绿萝疯长的妙招)

    怎样让绿萝疯长,掌握这三点,让你的绿萝快速疯长!(让绿萝疯长的妙招)

  • php使用header()禁止缓存的方法(php headers)

    php使用header()禁止缓存的方法(php headers)

  • 资管产品增值税由谁承担
  • 印花税的申报依据是什么
  • 增值税专用发票使用规定 最新
  • 公户的钱能买股票怎么处理
  • 政府补助是否可以加计抵扣
  • 个人公积金计入什么会计科目
  • 水果销售公司账务怎么做
  • 技术服务费怎么结转成本
  • 房地产企业的预收账款包括什么
  • 买什么样的房子可以贷款
  • 长期股权投资权益法下初始投资成本
  • 客户能把货款打给个人吗
  • 物业公司需要向哪个部门缴费
  • 诉讼管辖分为
  • 小规模企业是否需要备案登记
  • 加工企业如何降成本
  • 进销项税额的会计分录
  • 支付境外销售佣金增值税扣缴
  • 信托公司如何投资
  • 资本结构理论有哪些类型
  • 上月开的销项专票如何做废?
  • 未开票收入如何确认
  • 未开票收入纳税
  • 修叉车这个工作怎么样
  • 小规模纳税人亏损要交税吗
  • 增值税发票跨年了还能用吗
  • 背书转让银行承兑汇票会计分录
  • php实现基数排序函数
  • 怎么修改wifi密码视频教程
  • 免单产品是什么意思
  • 出口退税一般退什么税
  • 计提减值后折旧年限怎么算
  • modelist模型
  • PHP:mcrypt_enc_get_block_size()的用法_Mcrypt函数
  • 十大网页游戏
  • chart.js教程
  • 我一定要用自己的双手拼出来
  • 数学建模回归模型例题
  • vue项目兼容ie9以上浏览器
  • 公司进项不够怎么开发票
  • python中np.array用法
  • Python打开文件的代码
  • 企业资产盘亏的定性依据
  • 保理属于什么行业分类
  • 汽车租赁属于有形动产融资租赁服务?
  • 公司举办活动方案
  • 应付职工薪酬的会计科目
  • 旅游业营改增怎么报税
  • 吊车租赁有限公司
  • 坏账准备计提要求
  • 现金日记账的结账方法
  • 收款人是否应当承担还款责任
  • 过桥贷款有什么风险
  • 确认代销手续费怎么做账
  • 投资性房地产公允价值模式转为成本模式
  • 主播收钱违法吗
  • 冲减上年度多计提所得税
  • 差旅费记入哪个费用
  • 收到微信公众号反诈骗风险提示
  • 库存商品盘点流程
  • 历年案例分析题及答案
  • csv数据量太大怎么拆分
  • win8.1 multiple edition
  • 怎么检测u盘是否扩容
  • windows无法打开此文件
  • 如何隐藏与显示元素
  • mac上的
  • linux操作系统b
  • win10安装字体的操作步骤
  • 前端获取http状态码400的返回值实例
  • 天天数链是做什么的
  • dos强制删除文件命令
  • js == ===区别
  • python迭代器生成器
  • 税务稽查总队
  • 如何电子税务局缴纳社保费用
  • 安徽省渔业管理办法第十条规定
  • 如何填写财产申报表
  • 广西电票科技有限公司
  • 廉政谈话什么是廉政?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设