Learn-to-Cluster中的置信度与连通性估计:CVPR 2020论文解读
Learn-to-Cluster中的置信度与连通性估计CVPR 2020论文解读【免费下载链接】learn-to-clusterLearning to Cluster Faces (CVPR 2019, CVPR 2020)项目地址: https://gitcode.com/gh_mirrors/le/learn-to-cluster在计算机视觉领域人脸聚类是一个极具挑战性的任务它需要将大量未标记的人脸图像自动分组到不同的身份类别中。传统方法往往依赖于手工设计的相似度阈值和聚类算法但这些方法在面对复杂的人脸变化时表现有限。CVPR 2020论文《Learning to Cluster Faces via Confidence and Connectivity Estimation》提出了一种创新的人脸聚类方法通过学习置信度和连通性估计实现了更准确的人脸聚类效果。 核心创新双网络架构Learn-to-Cluster的核心创新在于提出了一个双网络架构分别负责置信度估计和连通性估计。这两个网络协同工作共同解决了人脸聚类中的关键挑战1. 置信度估计网络 (GCN-V)置信度估计网络用于评估每个节点人脸图像作为聚类中心的可能性。该网络基于图卷积神经网络GCN构建通过学习节点特征与其邻居节点的关系来预测置信度分数。在代码实现中GCN-V模型位于vegcn/models/gcn_v.py其核心架构包括图卷积层GraphConv(feature_dim, nhid, MeanAggregator, dropout)分类器多层感知机输出置信度分数损失函数均方误差损失2. 连通性估计网络 (GCN-E)连通性估计网络负责预测图中节点之间的连接概率。这个网络同样基于GCN但具有更深的结构包含四个图卷积层能够更好地捕捉节点间的复杂关系。在vegcn/models/gcn_e.py中GCN-E模型采用更深的网络结构四个图卷积层逐步提取特征分类器输出连接概率支持二元分类连接/不连接或回归任务 置信度估计的四种度量方法论文中定义了四种置信度度量方法这些方法在vegcn/confidence.py中实现s_nbr方法基于邻居节点的监督置信度定义计算每个节点与其邻居节点的正负相似度差异。def s_nbr(dists, nbrs, idx2lb, **kwargs): num, _ dists.shape conf np.zeros((num, ), dtypenp.float32) for i, (nbr, dist) in enumerate(zip(nbrs, dists)): lb idx2lb[i] pos, neg 0, 0 for j, n in enumerate(nbr): if idx2lb[n] lb: pos 1 - dist[j] else: neg 1 - dist[j] conf[i] pos - neg conf / np.abs(conf).max() return confs_nbr_size_norm方法在s_nbr基础上进行归一化处理考虑了邻居节点数量的影响。s_avg方法使用同一类别内节点间的平均相似度作为置信度度量。s_center方法计算每个节点与其类别中心的相似度作为置信度。 置信度到峰值转换算法置信度估计完成后需要将置信度转换为峰值聚类中心。confidence_to_peaks函数实现了这一关键转换def confidence_to_peaks(dists, nbrs, confidence, max_conn1): num, _ dists.shape dist2peak {i: [] for i in range(num)} peaks {i: [] for i in range(num)} for i, nbr in tqdm(enumerate(nbrs)): nbr_conf confidence[nbr] for j, c in enumerate(nbr_conf): nbr_idx nbr[j] if i nbr_idx or c (confidence[i] - conf_eps): continue dist2peak[i].append(dists[i, j]) peaks[i].append(nbr_idx) if len(dist2peak[i]) max_conn: break return dist2peak, peaks这个算法确保每个节点只连接到置信度更高的邻居节点从而形成有向的峰值指向关系。 数据准备与处理流程数据加载在vegcn/datasets/gcn_v_dataset.py中数据加载过程包括读取特征和标签数据构建K近邻图计算对称邻接矩阵生成置信度标签特征归一化if self.is_norm_feat: self.features l2norm(self.features)图构建使用FAISS库高效构建K近邻图然后转换为稀疏邻接矩阵并进行行归一化。⚙️ 训练配置与超参数训练配置文件位于vegcn/configs/cfg_train_gcnv_ms1m.py关键配置包括数据配置K近邻数量k80相似度阈值th_sim0.0置信度度量方法conf_metrics_nbr模型配置特征维度feature_dim256隐藏层维度nhid512输出类别nclass1回归任务Dropout率dropout0.0训练参数优化器SGD学习率0.1总训练轮数80000学习率调度在总轮数的50%、80%、90%处衰减 算法流程详解阶段一置信度估计输入人脸特征和K近邻图使用GCN-V网络预测每个节点的置信度分数置信度分数反映了节点作为聚类中心的可能性阶段二连通性估计基于置信度分数构建有向图使用GCN-E网络预测节点间的连接概率连接概率反映了节点是否属于同一聚类阶段三聚类生成根据置信度和连接概率构建最终聚类每个节点连接到置信度更高的邻居形成聚类树状结构 性能优势与实验结果在MS-Celeb-1M数据集上的表现根据论文结果GCN-V GCN-E组合在584K测试集上取得了成对F分数87.93%BCubed F分数86.09%NMI96.41%与其他方法的对比相比传统聚类方法Learn-to-Cluster具有显著优势相比Chinese WhispersF分数提升34%相比KNN DBSCANF分数提升20%相比CDP方法F分数提升12.9% 技术亮点1. 端到端学习整个系统可以端到端训练无需手工设计阈值参数。2. 可扩展性基于图卷积网络的设计使得算法能够处理大规模数据集。3. 鲁棒性双网络架构提高了对噪声和异常值的鲁棒性。4. 通用性方法不仅适用于人脸聚类还可扩展到其他图聚类任务。️ 实际应用指南快速开始克隆仓库git clone https://gitcode.com/gh_mirrors/le/learn-to-cluster安装依赖pip install -r requirements.txt下载预训练模型运行测试脚本训练自定义模型# 训练GCN-V模型 sh scripts/vegcn/train_gcn_v_ms1m.sh # 训练GCN-E模型 sh scripts/vegcn/train_gcn_e_ms1m.sh测试模型性能# 测试GCN-V模型 sh scripts/vegcn/test_gcn_v_ms1m.sh # 测试GCN-E模型 sh scripts/vegcn/test_gcn_e_ms1m.sh 未来发展方向多模态融合结合人脸特征以外的其他模态信息如姿态、表情、光照等。增量学习支持在线增量学习适应动态变化的数据集。无监督学习探索完全无监督的置信度和连通性估计方法。实时处理优化算法效率支持实时人脸聚类应用。 总结Learn-to-Cluster通过创新的置信度与连通性估计方法为人脸聚类任务提供了全新的解决方案。其双网络架构不仅提高了聚类精度还增强了算法的鲁棒性和可扩展性。该方法的成功证明了学习型聚类算法相对于传统方法的优势为计算机视觉领域的聚类问题开辟了新的研究方向。通过深入理解置信度估计和连通性估计的核心原理研究人员和开发者可以更好地应用这一技术并在其基础上进行改进和创新推动人脸聚类技术向更高水平发展。【免费下载链接】learn-to-clusterLearning to Cluster Faces (CVPR 2019, CVPR 2020)项目地址: https://gitcode.com/gh_mirrors/le/learn-to-cluster创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考