<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jack Pan</title><description>潘杰的技术博客 — 记录数据平台、计算机视觉、工程化实践</description><link>https://jackpan.me/</link><item><title>Phase 1：规范文件名换零配置批跑</title><link>https://jackpan.me/zh/posts/canonical-filenames-zero-config-batching/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/canonical-filenames-zero-config-batching/</guid><description>一个像 `NN_NNN_ego.mp4` 这样的命名约定，能把整批跑的入参压到只剩一个 CLI 参数。为啥这件事便宜，又为啥它逼你**不**写一些代码。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：别用 Label Studio 的 Source Storage 接本地文件</title><link>https://jackpan.me/zh/posts/dont-use-label-studio-source-storage/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/dont-use-label-studio-source-storage/</guid><description>一篇短的警示。LS 的「Cloud Storage → Source Storage」看起来就是为本地数据设计的。用了它，你会得到几万个跟 Import 进去的真任务冲突的幽灵 task。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：review 帧采样的四个信号</title><link>https://jackpan.me/zh/posts/four-signal-frame-sampling/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/four-signal-frame-sampling/</guid><description>「每 N 帧抽一张」的均匀采样浪费标注员时间在模型本来就标得好的帧上。四个信号能挑得更准——段边界、段内均匀、低置信度、bbox 跳变。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：用懒导入把 mediapipe / cv2 关在测试之外</title><link>https://jackpan.me/zh/posts/lazy-imports-pure-python-tests/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/lazy-imports-pure-python-tests/</guid><description>`mediapipe`、`ultralytics`、`cv2` 导入慢、运行时还要模型权重。把这些 import 写在函数体里、不放在模块顶层，测试套件就能跑得又小又快、不下模型。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：一个模块管所有磁盘上的路径</title><link>https://jackpan.me/zh/posts/one-module-owns-every-path/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/one-module-owns-every-path/</guid><description>为什么视频预标注管线会演化出一个独占路径计算的 `layout` 模块，以及当六个不同部分各自拼路径时会静默地坏掉什么。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 2：eval 集**绝不**能见过预标注</title><link>https://jackpan.me/zh/posts/phase-2-clean-eval-set/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/phase-2-clean-eval-set/</guid><description>多数 HITL 项目搞砸的那一个决定。如果 eval 标签的种子是模型自己的预测，那你以后报的所有 F1 数字都对模型有偏。这件事第一天做很便宜，第四十天做很疼。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 2：什么算 ground truth</title><link>https://jackpan.me/zh/posts/phase-2-ground-truth/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/phase-2-ground-truth/</guid><description>把 Label Studio 导出收回去微调下一版模型时，把导出里**所有东西**都当 ground truth 是「用模型自己的预测训模型自己」的快速通道。一个字节进训练集之前应该跑的几道过滤。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 2：别每次导出都重训</title><link>https://jackpan.me/zh/posts/phase-2-retraining-cadence/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/phase-2-retraining-cadence/</guid><description>每批校验完的 episode 从 Label Studio 导出后，最直觉的动作就是立刻微调。为啥别这么干，以及一个真的「这次重训值得」时才触发的便宜节奏闸。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 2：版本号挂在 slice 上，不挂在 snapshot 上</title><link>https://jackpan.me/zh/posts/phase-2-version-the-slice/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/phase-2-version-the-slice/</guid><description>微调出模型 v3 时你得能回答「哪些导出的校验进了这个模型」。把整个训练集快照下来是显眼的答案、也是错的答案。版本化输入和推导过程；训练集是它们的函数。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：为什么一个 episode 要拆成三个 Label Studio project</title><link>https://jackpan.me/zh/posts/three-label-studio-projects/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/three-label-studio-projects/</guid><description>视频预标注多 project 模式深挖——什么逼出了拆分、一个 episode 怎么扇成三种 task、以及别和 Label Studio 的数据模型对着干。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：视频预标注管线里的两套帧率</title><link>https://jackpan.me/zh/posts/two-fps-knobs/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/two-fps-knobs/</guid><description>推理帧率和 review 帧采样看起来是一回事，其实不是。两个旋钮各能换到什么、混在一起会坏掉什么。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1：做一条视频预标注流水线，几个工程取舍</title><link>https://jackpan.me/zh/posts/video-pre-annotation-pipeline/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/video-pre-annotation-pipeline/</guid><description>给一个具身机器人 Pick-and-Place 数据集做的 Phase-1 预标注流水线 —— MediaPipe + YOLO 推理、动作分段、Label Studio 导入，以及那些让它没在半路崩掉的「无聊」决定。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026 · Debug Disaster：调试页带出的 .env 路由</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-debug-disaster/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-debug-disaster/</guid><description>Flask debug=True 暴露的不只是 traceback，把 .env 原文吐出来的路由也跟着一起进来了。</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026 · A Massive Problem：dict.update 撑起的越权</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-mass-assignment/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-mass-assignment/</guid><description>题目名直接拼出 Mass Assignment。register 时 record.update(incoming) 让请求体里的 role 字段把服务端写死的默认值盖掉。</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026：几道印象深的题</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-overview/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-overview/</guid><description>五一假期跟着打了 CIT CTF 2026，把 Web / Crypto / Misc 几道题的解题思路整理成系列。这篇是入口。</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026 · Baby Exponent：e=3 的最朴素 RSA 利用</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-baby-exponent/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-baby-exponent/</guid><description>公开指数 e=3，明文小到 m³ 没溢出 modulus，直接整数开三次方就能拿到。</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026 · Dog Barking：三种长度的狗叫</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-dog-barking/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-dog-barking/</guid><description>一段 78 秒的狗叫音频，三种 bark 时长分别对应比特 0、比特 1 和字节分隔符。不是摩斯，是自创编码。</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item><item><title>CIT CTF 2026 · Server Components：Next.js 15 RSC 反序列化 RCE</title><link>https://jackpan.me/zh/posts/cit-ctf-2026-server-components/</link><guid isPermaLink="true">https://jackpan.me/zh/posts/cit-ctf-2026-server-components/</guid><description>附件里 package.json 钉死 next@15.0.4，刚好命中今年披露的 RSC 反序列化漏洞。</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item></channel></rss>