准备图像训练数据,有一个容易忽略的问题:物件转了一个角度,告诉模型“物件在哪里”的标注图,也要跟着转到同一位置。
Kornia 可以让图片和标注共享同一组几何变化。我们用它做了两项练习:给同一物件生成几组成对的训练图片,再把已知四角的倾斜卡片展开成矩形。两例都在 CPU 上运行,使用原创模拟图。
图1:原创模拟输入与本次真实输出的裁切合成。每一行是一对数据:左侧绿色物件,右侧白色标注;顺着同一行看位置、方向和轮廓。
先选一个处理目标
准备图像训练数据时,可以用旋转、平移、缩放生成不同样子的图片。这叫数据增强。Kornia 能把图片和标注放在同一次处理中,让物件变化后的“正确位置”继续跟着它走。
整理卡片图像时,则可以给出四个角,让倾斜的四边形展开成矩形。这个步骤叫透视校正,便于接着裁切、归档。
Kornia 提供这些图像处理能力,RepoGo 把本期两项 CPU 练习整理成了中文运行入口。下面先把入口准备好,再分别查看结果。
下载后,从示例开始
从公开中文仓库下载最新版 ZIP,完整解压到可写的文件夹。本期固定 Kornia 0.9.0;启动脚本自动准备运行工具 uv、Python 3.12.14 和固定依赖。
苹果芯片 Mac 在解压后的文件夹打开终端,先运行卡片示例:
bash start.sh rectify
终端显示生成位置后,到同一文件夹的 output/ 打开 rectified.png,应能看到一张480×320像素的矩形卡片。脚本完成后自动退出,结果文件继续保留。
首次运行需要联网,工具和框架文件需预留数GB磁盘;两项练习使用 CPU,可直接处理本地图像。macOS 的 start.command 也会调用卡片示例入口。
图片与标注一起变,结果怎样看
这项练习用一张绿色物件图,配一张黑底白色的标注图。标注图也叫 mask:白色表示物件所在区域,黑色表示背景。输入的两张图已经对齐。
在刚才的文件夹运行:
bash start.sh augment
打开 output/paired/,按编号查看三对文件:
| 图片 | 对应标注 | 核对什么 |
|---|---|---|
image-01.png | mask-01.png | 物件轮廓与白色区域对齐 |
image-02.png | mask-02.png | 位置和方向同步变化 |
image-03.png | mask-03.png | 同一对保持一致,各对可以不同 |
图1把同一对放在同一行,方便比较。Kornia 在每对数据中共享一次几何变化;图片边缘作平滑处理,黑白标注保留原有类别。我们另用绿色区域核对过这三组输出,与相应标注高度重合。
想再生成一组并保留前一组,用新的随机起点和输出目录:
bash start.sh augment --seed 43 --output output/seed43
seed 是随机过程的起点,在本次固定环境中,相同起点可以复现相同结果。选择变化时,以实际任务中可能出现的位置、角度为准,再检查物件是否完整、标注是否跟上。
换自己的数据时,把 my-image.png 和 my-mask.png 放进项目文件夹,再运行:
bash start.sh augment --image my-image.png --mask my-mask.png --output output/my-pairs
两张图须宽高相同、原本对齐;这个入口接收只有0和255两种灰度值的黑白标注。多类别标注、检测框和关键点需要按相应数据类型另作适配。
四角怎样填写,卡片就怎样展开
图2:上方为程序生成的虚构倾斜卡片,四角由样例提供;下方为本次真实校正输出。观察卡片边缘从四边形展开为矩形。
这个入口由你提供四角位置,再交给 Kornia 计算透视变换。随包的 samples/skewed-card.png 对应 samples/corners.json,文件内容为:
[[85,58],[560,92],[524,410],[48,370]]
四组数字依次是左上、右上、右下、左下。每组 [x,y] 表示横向、纵向像素位置,图片左上角是 [0,0];以上数字只对应随包卡片。
可以先明确指定这两个输入,把结果另存一份:
bash start.sh rectify --image samples/skewed-card.png --points samples/corners.json --output output/card-preview.png
打开 output/card-preview.png,检查四条边是否规整、内容朝向是否正确。处理自己的卡片时,把图片保存为 my-card.png,参照上面的格式,将实际四角写进 my-corners.json,两份文件都放在项目文件夹:
bash start.sh rectify --image my-card.png --points my-corners.json --output output/my-card.png
四角需要手动取得并填入文件。顺序沿卡片边缘走一圈;交叉、重合、越界会收到输入错误提示。先用四角清楚的图片练习,输出细节取决于原图清晰度。
运行范围与常见卡点
本期已在 macOS Apple Silicon 实跑两项核心任务,并在隔离 PATH、新解压目录中验证自动准备入口;那次准备复用了已有缓存,完整冷下载仍待验。Linux x86_64 通过 Slurm 验证过同版 CPU 核心,新的自动准备入口待测。Windows 提供 start.cmd,尚未实跑。
- 找不到输出时,回到项目文件夹查看
output/,并核对终端打印的位置。 - 图片与标注错位时,先检查原始输入,再查看同编号文件。
- 卡片形状异常时,按左上、右上、右下、左下检查坐标。
- 需要保留多次结果时,为
--output指定不同目录或文件名,同名结果会被覆盖。
bash start.sh check 可复验配套样例;自己的输入则按上面两项流程打开实际输出检查。
原项目已有简体中文 README,图像处理能力来自 Kornia。RepoGo 补上两种实跑练习、中文运行入口、固定 CPU 依赖、输入检查和排坑说明。上游采用 Apache-2.0,原创脚本与模拟素材采用 MIT,许可随材料保留。
原项目:kornia/kornia;中文运行材料:repogo-kornia。
本文为 AI 辅助编写,配图展示原创模拟输入和本次真实输出。