YOLOv5新手求助:如何判断检测目标是否倒置?
YOLOv5判断目标朝向(是否倒置)的实用方法
1. 改数据集加朝向标签,转成联合任务
- 重新标注你的数据集,给每个目标加个朝向标签(比如就分“正常”“倒置”两类),把原来单纯的检测任务变成“检测+朝向分类”一起做的任务。
- 训练的时候不用大改YOLOv5结构,只需要调整输出层的类别数,把朝向类别加进去就行。推理的时候每个检测框除了告诉你是什么目标,还会输出它的朝向状态。
2. 加关键点检测分支,靠点的位置判断
- 参考YOLOv5-Pose的结构,给YOLOv5加个关键点检测分支,标注目标的关键特征点——比如人脸的眼睛和嘴巴,或者瓶子的瓶盖和瓶底。
- 推理时看这些关键点的相对位置:比如人脸眼睛在嘴巴上面就是正常,反过来就是倒置;瓶子瓶盖在瓶底下面的话,那肯定是倒过来了。
3. 新增朝向分类头,分开优化损失
- 保留原有的YOLOv5检测分支,额外加一个朝向分类头,输入用检测框裁剪出来的目标图像。
- 训练的时候同时优化检测损失和分类损失,推理时先检测出目标,再把裁剪后的图丢去分类头判断朝向。
4. 不重训模型,用后处理判断
- 要是不想重新训练,推理后可以对检测到的目标区域做后处理:
- 提取目标的HOG特征或者SIFT特征,和正常朝向的目标特征做匹配,匹配度低就判定是倒置。
- 对有明显纹理或对称特征的目标,算一下图像的垂直投影直方图,对比正常和倒置状态下的直方图差异就能判断。
内容的提问来源于stack exchange,提问作者Mina Samir
相关产品推荐
相关产品推荐

