2025.7.15学习日记

1.训练集微调

1.1 trainer.py

  • run:
    现在介绍training文件夹中的trainer文件,trainer文件中较为重要的方法是run,run_train,run_value。run方法中有一句断言用来表示模型的模式只能是train或者val;run_train中所做的包括获得数据加载器,而后使用train_epoch训练,而后保存模型
  • epoch
    trainer文件中另外两个较为重要的方法是train_epoch和val_epoch。煮啵调试失败也是在这个train_epoch方法里,在dataloader里遍历失败

1.2 co3d.py

1.2.1 line.92

现在介绍co3d.py,首先我想提及一下line.92,有一个super().__init__(common_conf=common_conf)的操作,这个操作具体实现原理煮啵不太清楚,但是根据煮啵之前打印的trainer的数据成员来看,他是直接使用了部分trainer的数据成员
image

1.2.2 line.133

line.133这个循环内主要做的操作如下:

  1. 遍历类别和数据集类型
for c in category:
    for split_name in split_name_list:
        annotation_file = osp.join(self.CO3D_ANNOTATION_DIR, f"{c}_{split_name}.jgz")
  • 外层循环遍历所有类别(如不同物体类别)。
  • 内层循环遍历所有数据集划分(如train/val/test)。
  1. 读取标注文件
with gzip.open(annotation_file, "r") as fin:
    annotation = json.loads(fin.read())
  • 尝试打开并读取每个组合对应的压缩标注文件(.jgz),内容为JSON格式。
  • 如果文件不存在,则记录日志并跳过。
  1. 遍历序列数据
for seq_name, seq_data in annotation.items():
    if len(seq_data) < min_num_images:
        continue
    if seq_name in self.invalid_sequence:
        continue
    total_frame_num += len(seq_data)
    self.data_store[seq_name] = seq_data
  • 遍历标注文件中的每个序列。
  • 如果该序列图片数量小于min_num_images,跳过。
  • 如果该序列在self.invalid_sequence(无效序列列表)里,跳过。
  • 否则,将该序列的数据存入self.data_store,并累计图片数量。

1.3 标注解压

煮啵还没有完全写完,等煮啵先忙完,马上整理
设置vscode打开文件的最大大小,workbench.editorLargeFileConfirmation
解压jgz文件的步骤,我让AI编写了两个脚本去实现,结果如下
image调整1e5次的num_batches怎么调整

2.SAM训练

sam2训练的过程,配置项目的过程中SSH URL+学术加速,依旧给力👍.

2.1 前置概念

图片分类,目标检测,语义分割,实例(语义)分割。图片分类单纯地将图片分类成物体,目标检测为图片上的对象划分出框标注并标注为相应的物体,语义分割检测到图片的进行蒙版标注并标注为相应的物体(蒙版标注的工作量比框标注要大),实例分割为语义分割的升级,不仅标注物体,还标注是哪一个物体。
image

  1. 语义分割的目的是为了从像素级别理解图像的内容,并为图像中的每个像素分配一个对象类。通常最后的处理方法是输出一个二维数组
    【注】当时的全像素级的语义分割是FCN(全卷积神经网络),而后的任务中使用的是U-Net,现在较为先进的语义分割网络是Deeplab
  2. 实例分割的目的是为了理解同一类别的不同物体,回答"图像里有几头牛的问题🐂"。实例分割的算法有两种发展路线。image
    但是这两种发展路线其实都不够简介明了,于是出现了这样的想法,和逐像素的语义类别标注一样,进行逐像素的实例类别标记,提出这个想法的论文的作者认为实例类别标记是位置+尺寸,简单来说就是,两个物体如位置和尺寸都是一样的话,那么这两个物体就是一个物体,
    【注】实例分割最先使用的是MaskRCNN,而后面出现的SOLO使用的mask分支与classifier分支使得整个实例分割的原理变得十分简单
2.1.1 语义分割-FCN

我们知道卷积神经网络可以用于分类任务,主要流程通过不断的下采样与增加通道数,最后进行全连接输出概率;在语义分割的任务中,差别就在于最后进行一个上采样,随机概率图
image

2.1.2 实例分割-SOLO

SOLO提出的实例类别(Instance Category)的概念,作者指出,实例类别就是量化后的物体中心位置(location)和物体的尺寸(size)。

  • 位置:SOLO将图片划分S×S的网格,网格输出两种分支,分别为分类分支与mask分支。分类分支的大小为[S,S,C],C为类别数量(我可以提前规定分类别最多有多少个);mask分支的大小为[H,W,S2],S2为最大预测实例数量,由于网格中每个格子都有可能存在着一个实例,所以类似于遍历的想法,也就是说每个网格都有C种可能,
  • 尺寸:通用的做法为FPN,用于输出特征图
    【注】:Pillow支持的常用图像模式有8bit灰度图,8bitRGB,8bitRGBA,二值图片
posted @ 2025-07-16 01:37  BingUw  阅读(53)  评论(0)    收藏  举报