看sam文件中有多少中type类型,并按照顺序输出

本篇博客介绍了一个简单的Python脚本,该脚本从指定文件中读取每行数据,并提取每行的第二个字段,然后将这些字段转换为整数并进行排序输出。此过程涉及文件操作、字符串处理及基本的数据类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import sys
file1 = sys.argv[1]
filein = open (file1,'r')
a = []
sdick=set()
for i in filein:
        a = i.split()
        sdick.add(a[1])
#ldisk = list(sdick)
#k = set(sorted(ldisk))
j = []
for i in sdick:
        try:
                i = int(i)
                print(i)
                j.append(i)
        except:
                continue
j.sort()
print(j)

### 使用原始 SAM 模型进行图像分割的方法和步骤 #### 1. 安装依赖与环境准备 为了使用原始 SAM 模型完成图像分割任务,首先需要搭建适合的开发环境。这通常涉及下载官方代码库以及安装所需的 Python 包。 - 访问官方 GitHub 存储库 `facebookresearch/segment-anything`[^1] 克隆项目到本地机器。 - 创建一个新的虚拟环境来隔离项目的依赖关系,通过以下命令安装必要组件: ```bash git clone https://github.com/facebookresearch/segment-anything.git cd segment-anything pip install -r requirements.txt ``` 确保所使用的 PyTorch 版本与 CUDA 工具包相匹配以支持 GPU 加速运算能力。 --- #### 2. 获取预训练模型权重 Meta 提供了几种不同大小和复杂度级别的 SAM 预训练模型可供选择。这些模型已经过大量多样化数据集训练从而具备泛化能力强的特点。 可以从这里下载对应版本的 checkpoint 文件[^3]: ```plaintext https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth ``` 根据硬件条件和个人偏好挑选合适尺寸的基础架构(Base/ViT-B、Large/ViT-L 或 Huge/ViT-H)。 加载选定的预训练参数进入内存中等待进一步调用: ```python from segment_anything import sam_model_registry, SamPredictor sam_checkpoint = "sam_vit_h_4b8939.pth" # 更改为你实际下载的位置 model_type = "default" device = "cuda" if torch.cuda.is_available() else "cpu" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint).to(device) predictor = SamPredictor(sam) ``` --- #### 3. 准备输入图片设定提示信息 为了让 SAM 正确识别目标物体所在位置,用户需提供适当形式的引导线索即所谓的 “prompts”。常见的几种方式包括点击交互式界面标记正负样例点位或者是描绘粗略包围盒范围等等。 下面演示了一个简单的例子说明如何读入一幅 RGB 彩色图象同时指定若干兴趣区域中心坐标的集合作为正面指示信号源之一端口传递给预测器对象处理: ```python import cv2 import numpy as np image_path = 'input_image.jpg' image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image) input_point = np.array([[500, 375]]) # 用户定义的兴趣区起点 input_label = np.array([1]) # 对应标签值设为正值表示肯定意义反馈 masks, scores, logits = predictor.predict( point_coords=input_point, point_labels=input_label, multimask_output=True, ) ``` 此处我们仅选取单一像素级定位来进行示范操作;但在实际情况当中可以根据具体应用场景灵活调整策略组合多种类型的辅助指引共同作用提升准确性表现水平。 --- #### 4. 处理输出结果与原图画面对照显示 经过前面几步计算得出的一系列二进制蒙版数组代表了可能存在的候选分割区块选项列表。每一个元素都关联着各自的置信评分用来衡量其可靠性程度高低顺序排列起来便于后续筛选决策过程参考依据制定准则择优录取最佳解答方案呈现出来让用户查看满意与否再做相应修改完善动作直至达成理想效果为止结束整个流程循环往复不断优化改进直到满足业务需求为止停止下来记录成果存档留作日后复查之用即可告一段落转入下一个新课题研究探索阶段去了。 下面是有关于怎样把获得的数据结构转化为易于观察的形式表达出来的实用技巧分享给大家借鉴学习一下吧: ```python import matplotlib.pyplot as plt def 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) plt.figure(figsize=(10,10)) plt.imshow(image) for i, mask in enumerate(masks): show_mask(mask, plt.gca()) score = round(scores[i].item(), 2) print(f'Score of Mask {i+1}:',score) plt.axis('off') plt.show() ``` 这样就可以清楚地看到哪些部分被成功分离出来了! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值