倒腾日记

Last updated on December 20, 2025 10:08 PM

2025-06-06

  • SSH:把本地的公钥添加到远程的 ~/.ssh/authorized_keys 即可免密登录。

2025-06-07

  • pyplot 可以在浏览器里可视化三维点云。代码如下:

    1
    2
    import plotly.io as pio
    pio.renderers.default = "browser"

    剩下部分让大模型写就好了。

  • 对于三维的任务,每次操作前务必花点时间写一下可视化,不会耗费很久的。

2025-06-20

  • 命名规范:T_a_b 命名,表示 b 在 a 坐标系下的 transform。

2025-07-03

  • ImageMagick

    图片处理,mogrify

2025-07-12

  • RoboTwin 2.0:
    • 现有合成数据面临的三个问题:缺乏自动化质量控制、域随机化不够、忽略了 cross embodiment。
    • 使用三个主要部件进行解决:
      • 利用多模态大模型做自动闭环反馈的自动化数据合成管线
      • 域随机化:language instructions, object clutter, background textures, lighting conditions, and tabletop configurations
      • embodiment-aware adaptation
    • 自动化专家演示代码生成:用一个 Code Agent,合成的是完成任务的 Python 代码。十次仿真执行,若失败概率超过一半,用 VLM 进行诊断(结合 log 和 observation),然后反馈给 Code Agent。

2025-07-18

2025-07-21

  • B 站播放调速:document.querySelector('video').playbackRate = 5

  • 备忘录:记得仔细再看看 BatchNorm 和 LayerNorm 的对比

  • Transformer

    • Autoregressive 的含义

      事实上是在机翻架构中,encoder 和 decoder 的职能区别。

      encoder 只跑一次,负责弄出一组上下文表示 {zi}\{z_i\}

      decoder 是一个词一个词生成输出的,前面的所有输出会作为下一次的输入,所以叫“自回归”,这也是为什么 decoder 的 self-attention 层需要 causal mask

    • Attention 块是“横向”处理,提取 context 信息,而后面的 MLP 是对序列中每个 position 单独做的,相当于做语义空间的一个转换。

    • Attention 弄出来的结果实际是 value 的线性组合,所以不包含位置信息,需要一开始加一个 positional embedding。

  • BERT

    • 纯 encoder 架构,最后弄出来的东西是上下文信息的高维向量,可以是 word 级别的也可以是句子级别的(CLS token),这些东西接到具体下游任务中去做。
    • bidirectional 和 autoregressive 的区别
    • 预训练的时候相当于在做完形填空
  • ViT

    • 非常 naive 地将图片切成 16x16 的 patches,tokenize 之后丢给 transformer。主要是太 tm 有钱了所以 train 出来了
    • inductive bias(归纳偏置):ViT 在中等规模数据集训练且不加强正则化的能力不如 CNN 的原因是缺乏归纳偏置。CNN:locality 和 translation equivariance。相当于 CNN 已经有了这些先验信息(针对图片处理更好)

2025-07-22

  • MAE

    • Masked Autoencoders Are Scalable Vision Learners

      这个标题的 xxx 是好的 xxx 句式可以参考

    • Kaiming 的 story telling 能力确实牛逼,在 Introduction 部分把 BERT 迁移到 CV 领域遇到的问题以及为什么这样设计 MAE 都讲得很清楚了。

    • Encoder 和 decoder 是非对称结构。Encoder 只看到没有被遮住的块,然后生成 latent representation,decoder 则是需要还原出整张图片。Decoder 的规模也远小于 encoder。

  • GPT

    • GPT-1:2018 年,比 BERT 早,decoder-only 架构,自回归,也是 pretrain + 下游任务 fine-tune 的范式,但是被 BERT 打爆了。Generative 的技术路线是比 BERT 的完型填空更难的,当时的数据规模并不够大,所以被暴打也正常。
    • GPT-2:2019 年,用了更大的数据集,主打 zero-shot。也因此开创了 prompt 范式。
    • GPT-3:2020 年,175B,few-shot,主打 in-context learning,预训练好之后不再动模型参数。

2025-07-28

  • 对比学习:
    • Pretext task:代理任务,相当于在无监督的情况下“自己造”一个标签来进行监督。一般是人们实际不关心但有助于模型学习表征的任务,比如说 instance discrimination
    • MoCo 就是在用动量学习法。以动量的方式来更新字典的 encoder。

2025-07-30

  • 记录一则:用 rust cargo 下载依赖的时候代理出了问题。经过排查是 git 的代理设置问题(端口号搞错了)。

    1
    2
    git config --global http.proxy http://127.0.0.1:7897
    git config --global https.proxy http://127.0.0.1:7897

    这样设置 git 代理就正常了。

  • 学习 Rust 的一些印象深刻的点:

    • 表达式与语句的区别。

      1
      2
      3
      4
      5
      6
      fn calc_fib(n: u32) -> u32 {
      if n <= 1 {
      return n;
      }
      calc_fib(n - 1) + calc_fib(n - 2)
      }

      甚至循环也可以

      1
      2
      3
      4
      5
      6
      7
      let result = loop {
      counter += 1;

      if counter == 10 {
      break counter * 2;
      }
      };

      然后的话循环可以打标签,这样就可以 break/continue 外层循环了

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      'counting_up: loop {
      loop {
      if remaining == 9 {
      break;
      }
      if count == 2 {
      break 'counting_up;
      }
      }
      }
    • 引用:在写的时候都要加上 & 号。然后可以用 &mut 来创建可变引用。同一时刻只能有一个可变引用,这样可以避免 data race也不能在有不可变引用的时候创建可变引用

2025-08-01

  • Rust 的 let if 和 let else 都很有说法。let else 是在匹配不上的时候直接执行里面的代码(必须返回),否则把匹配的值返回外层定义域。

    1
    2
    3
    4
    5
    6
    7
    fn describe_state_quarter(coin: Coin) -> Option<String> {
    let Coin::Quarter(state) = coin else {
    return None;
    };
    // state 可以在外面被取用
    }

2025-08-03

  • mmdet3d 报错 mmcv 版本问题:直接改包里面的源码。
  • torch 版本选 2.1,不然可能报 implementation for device cuda:0 not found. 错。

2025-08-04

  • 组织项目的时候可以开一个 third_party 文件夹放第三方库,然后用 git submodule 管理之。

    类似于这样:

    1
    2
    sys.path.append('third_party/vggt')
    from third_party.vggt.vggt.models.vggt import VGGT

2025-08-06

2025-08-08

  • Linux 查看文件状态(修改时间等):stat <文件名>

2025-08-09

  • Rust 解析命令行可以用 clap 包。在 cargo run 的时候用 -- 来跟参数,比如说 cargo run -- -koopa hello.c -o hello.koopa。可以用宏的形式写出非常健壮且简洁的命令行解析。
  • Rust 的 Box<T> 是一种智能指针,将值放在堆上,然后在栈上保留指向堆的指针。非常适合大小不能确定的递归类型(比如编译器中的 Exp

2025-08-25

  • Powershell 的输入重定向没有 LInux 中 < InputFile 的格式,可以用 Get-Content input.txt | command

2025-08-26

  • 善用 Jupyter Notebook 进行调试,极大提高效率,不用每次都重新 load 之类的了。

    .gitignore 里面直接忽略掉所有 *.ipynb 即可。

  • 目前需要做的几件事:

    • 等数据集下载好之后测试一下 mesh 的效果、
      • 可能需要再多调一下 Qwen-VL 2.5 的 prompt
      • 如果这个数据集 8 太行的话考虑一下 RealEState
    • 写一个用 blender 渲染 mesh 的接口,目前能想到可能需要解决的一些问题:
      • mesh 的坐标是没有和世界坐标系对齐的,光照的方向需要想办法怎么弄
        • 目前这个是最难搞的
          • 因为确实就是很难搞啊x
        • 笑嘻了,全是相机坐标系下的,根本无所谓好吧
      • 重建出来的 mesh 只有一半,怎么进行 masking(目前不是很明白细节)
        • 参考 sketch3dve 里面的处理方法
    • 一些需要明确的细节:
      • FPS 问题:数据集的帧率,数据集里每条视频抽几帧出来,生成轨迹以供 blender 渲染
      • blender 渲染出来的东西的分辨率?以及要用什么样不同的 proxy materials?
        • 分辨率:480*832
        • proxy materials:diffuse+3个不同roughness的GGX就行
  • X11 图形界面转发配置:

    • 编辑 /etc/ssh/sshd_config

      1
      2
      3
      X11Forwarding yes
      X11DisplayOffset 10
      X11UseLocalhost no
    • 云容器上没法 sudo systemctl restart sshd,但是可以 service ssh restart,这样就可以用 MobaXterm 连接了。

  • 现在最头疼的还是数据集的问题,明天必须得仔细想想办法解决这个

2025-08-28

  • Huggingface 不知道为什么抽风,hf-mirror 报错。

    可以 apt install aria2 然后用 hfd 来解决。

    1
    2
    3
    4
    wget https://hf-mirror.com/hfd/hfd.shchmod a+x hfd.sh
    chmod a+x hfd.sh
    export HF_ENDPOINT=https://hf-mirror.com
    ./hfd.sh [MODEL_NAME]
  • 对于 github ssh 22 端口超时错误,可以编辑 ~/.ssh/config 将端口改成 443:

    1
    2
    3
    4
    5
    6
    Host github.com
    Hostname ssh.github.com
    User git
    Port 443
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_ed25519

    改到 443 后有概率能解决。

2025-09-03

  • tmux 的 UTF-8 字符问题:启动的时候加一个 -u 参数就行了。

2025-09-17

  • set -g mouse on 即可启用 tmux 鼠标滚轮

2025-10-04

  • CineMaster:
    • 用物体的 3d bbox 来精确指定物体 motion 和 camera motion。
    • 渲染 3d bbox 的深度图,和 bbox 的语义信息一起注入到 ControlNet 里面。
    • 他们的局限性:
      • 光照不可控
      • bbox 终归具有局限性,无法精准表征 3d 位姿
    • 比我们强(?)的地方
      • 物体的 motion 是可以指定的,我们是默认物体静止
      • 也不知道他们怎么就能把 bbox 弄出来而我们就没弄出来。。。

2025-10-06

  • Lumen:
    • 视频重光照的一篇工作
    • 我觉得亮点在于数据集的处理。用 UR5 渲染了 20000 条数据。同时辅以真实数据 ~100k 条。
      • 合成数据前景严格对齐,物理一致性强
      • 真实数据外观分布更广,更真实,但 preservation 不够强。
    • 训练:
      • backbone 用的 Wan 2.1
      • 引入了一个用 LoRA 实现的 style adapter 来吸收 3D 渲染的风格信息,从而解耦域分布,并通过两阶段训练让模型既学到物理光照效果又能 generalize 到真实域。
      • 分 stage 训练,先只用合成数据对 adapter 专门训练,然后 mix 训练。

2025-10-15

  • Typst 合并单元格:table.cell(rowspan: 2)[内容] 这样就可以了。
  • Typst 表格对齐的时候可以 center + horizon,二者用加号连接

2025-10-29

  • huggingface 的缓存默认会在 ~/.cache/huggingface 下,可以通过指定 HF_HOME 环境变量来把他改到数据盘而不是用户盘。
  • CONDA_PKGS_DIRS=/input0/conda_pkgs PIP_CACHE_DIR=/input0/pip_cache 指定 conda 和 pip 的缓存路径(同样针对用户盘空间不足的问题)

2025-12-11

  • .gitignore 必须是 UTF-8 编码
  • Acrobat 会有很多乱七八糟的安装补丁 .mcp 文件在 C:\Windows\Installer 下,已严肃卸载省空间。

倒腾日记
https://blog.imyangty.com/tech-diary/
Author
YangTY
Posted on
June 6, 2025
Licensed under