Lazy loaded image
Work Record
🔎SAM图像处理流程
字数 446阅读时长 2 分钟
2025-4-3
2025-4-4
password
comment
type
status
date
slug
summary
tags
category
icon
AI custom autofill

SAM图像处理流程

以下数据对应vit_t模型
原始图像尺寸-ori_size: H0,W0
分为三个阶段:
  • ori阶段 - 输入原始图像阶段 = ori_size: H0,W0
  • middle阶段 - 对原始图像进行缩放 = middle_size: H1,W1
  • input阶段 - 将缩放后的图像padding至目标大小(目标大小由image_encoder.input_size决定) = input_szie: H2,W2

图像尺寸变化

Predictor

  • ori: H0,W0
  • middle: H1,W1(长边为1024)
  • input: 1024,1024

Fintuner

  • ori: H0,W0
  • middle: H1,W1(长边为自定义大小,一般为720)
  • input: 1024,1024

代码细节

一个小细节:将数组转换为bool类型并不能得到二值mask。因为负数转变成bool为True。正确的做法应该是使用>0

Predictor

ori-middle-input阶段均在一次性单独推理单张图像过程中完成

Finetuner

ori-middle阶段:在数据集加载阶段完成
middle-input阶段:在Fintuner类中完成
细节如下:
  • ori-middle阶段
    • 先保存图像原始尺寸H0,W0(original_height, original_width)信息
    • 缩放成 H1,W1(长边为自定义大小,一般为720)
    • 保存缩放后的尺寸H1,W1(resized_height, resized_width)信息
    • 从标注文件获得mask,bbox
    • 由mask得到随机point提示
      • 由于mask形状为HW,但规定point的输入形状为XY,因此在获取point的函数中,手动将mask转置
    • 对mask进行缩放,使其与缩放得到的H1,W1图像严格对应
    • 获取center_point(bbox中心的坐标)
    • 得到combined_point_labels,用于表示每个point是前景还是后景的提示
    • 对bbox、center_point、point均完成缩放
    • 对缩放得到的 H1,W1图像进行padding,填充成一个正方形(自定义大小,一般为720)
    • 对缩放得到的 H1,W1 mask 进行padding,填充成一个正方形(自定义大小,一般为720)
 
上一篇
Ⅱ-ES
下一篇
COCO格式数据集RLE到Polygon的转换

评论
Loading...