NOAI 2025 复赛题解|第4题:标签是假的,你发现了吗?
NOAI复赛 计算机视觉 / 无监督学习
需要真题、资料,请拉到文末添加艾斯老师微信。
题目回顾
判断一张图片是不是"宫格图"——把多张图拼成格子效果的电商展示图。训练集 1,000 张,RGB,256×256。train.csv 里有标签。
这道题最大的坑
先看标签。train.csv 里的 label 标的是"女装"还是"美妆"。
不是"宫格图"还是"非宫格图"。直接拿这个标签训练,你训的是一个"女装 vs 美妆"的分类器,跟宫格图没有半点关系。
这是一道无监督学习题。没有有效标签,你得自己想办法区分宫格图。
发现这个坑 = 及格,没发现 = 0 分 ⚠️
思路一:手动打标签
最朴素的做法:自己看 1,000 张图,手动标注。然后就变成标准的有监督二分类。
宫格图有明显的网格线/拼接痕迹,快速过一遍不难。标注 500 张可能就够训一个不错的模型。比赛时间有限,权衡标注时间和调模型时间。
思路二:边缘检测 + 规则
宫格图最明显的视觉特征:有规则的横线和竖线把图片分成几个区块。
用 Canny 边缘检测 + 霍夫变换找直线,统计横线和竖线的数量。多条横线 + 多条竖线 → 大概率宫格图。
优势:不需要训练,速度极快。劣势:有些宫格图分隔线不明显,有些非宫格图有大量直线。可以作为快速 baseline,或辅助手动打标签。
思路三:无监督特征聚类
用预训练 ResNet18 提取每张图的 512 维特征 → PCA 降维 → KMeans 聚成 2 类 → 看哪个簇是宫格图。
model = models.resnet18(pretrained=True) model.fc = nn.Identity() # 输出512维特征 # 提取特征 → PCA降维 → KMeans聚2类 features = extract_features(dataset, model) pca_features = PCA(n_components=50).fit_transform(features) labels = KMeans(n_clusters=2).fit_predict(pca_features)
理论上优雅,但聚类结果不一定完美对应"宫格/非宫格"。
实战建议:组合方案
比赛时间有限,最稳的策略:
1先用边缘检测快速初筛
2挑 100~200 张人眼核实,纠正错误
3用半自动标签训练一个简单 CNN
4accuracy 不够高再补标注
不要在"纯无监督"上死磕。题目允许手动打标签——如果无监督搞了很久效果不好,切换到手动标注是更务实的选择。
容易踩的坑
坑 1直接用 train.csv 的标签训练
最致命的坑。标签是"女装/美妆",不是"宫格/非宫格"。方向完全错误。
坑 2假设宫格图一定有黑色网格线
有些宫格图的分隔是白色间隙、渐变过渡、甚至没有分隔线。不能只检测黑线。
坑 3验证集没标签,没法本地评估
只能提交到 A 榜看分数。每次提交前多想一步。
区分度在哪
第一道分水岭不是技术,是有没有发现标签是假的。
• 手动打标签 + 简单 CNN → 稳拿不错的分数
• 边缘检测规则法 → 快速但天花板有限
• 无监督特征聚类 → 理论优雅但实践不一定好
这道题从审题到解题,每一步都要自己判断——标签能不能用、方法怎么选、时间怎么分配。