You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

回归模型无法拟合原因排查:3D旋转角度预测任务问题

回归模型无法拟合3D旋转角度的问题

任务与数据背景

我需要构建一个回归模型,输出3个数值——3D模型的三个旋转角度。所有初始模型的旋转方式一致,为每个模型生成5组随机旋转(角度范围-15到15度)的图像,颜色代表与“相机”的距离,图像尺寸为[150,150],像素值0-255,包含Top、Side、Front三个视角。

训练数据集包含30个模型,每个生成5种旋转,共150个样本,其中105个用于训练,45个用于验证。

模型与训练配置

我构建了对应的卷积神经网络模型,训练配置如下:

  • 训练轮次:100个epochs
  • 批次大小:batch size=40
  • 优化器:Adam(初始学习率0.1,后续尝试过0.01和0.001)
  • 损失函数:平均绝对误差(MAE)
  • 自定义指标:真实角度与预测角度的绝对误差之和

训练与预测结果

训练过程中loss及指标始终处于稳定状态,最后几个epoch的输出如下:

Epoch 95/100 3/3 [==============================] - 4s 1s/step - loss: 6.8082 - metr: 25.7488 - val_loss: 7.8395 - val_metr: 16.2496
Epoch 96/100 3/3 [==============================] - 4s 1s/step - loss: 6.8203 - metr: 28.0160 - val_loss: 7.8005 - val_metr: 16.1032
Epoch 97/100 3/3 [==============================] - 4s 1s/step - loss: 6.7898 - metr: 21.8611 - val_loss: 7.8166 - val_metr: 15.6580
Epoch 98/100 3/3 [==============================] - 4s 1s/step - loss: 6.7806 - metr: 18.9963 - val_loss: 7.8766 - val_metr: 15.1825
Epoch 99/100 3/3 [==============================] - 4s 1s/step - loss: 6.7973 - metr: 21.3751 - val_loss: 7.8581 - val_metr: 14.8261
Epoch 100/100 3/3 [==============================] - 4s 1s/step - loss: 6.7750 - metr: 19.1987 - val_loss: 7.8100 - val_metr: 14.2220

模型预测结果(上为预测值,下为真实角度):

[[-2.9442613  -0.54196733  2.4832273 ]
[-4.1728406  -0.60556126  1.6946273 ]
[-4.727777   -1.2003385   0.9080634 ]
[-3.125803    0.2552796   1.7383668 ]
[-5.6989026   0.5544905   1.539639  ]
[-3.6019537   0.29354924  1.2323818 ]]

[[ -4.  -8.   2.]
[-12.  -7.   4.]
[-13.  -4.  -3.]
[ -7.   2.  -4.]
[-13.   8. -12.]
[-15. -11. -11.]]

多次重建模型后,预测值始终接近固定值,无法有效拟合真实角度。尝试过在每个Conv2D层后添加SeparableConv2D、更换损失函数、调整学习率至0.01和0.001,但均无改善。请问该回归模型为何无法拟合?


可能的原因及解决方向

1. 数据层面核心问题

(1)样本量严重不足

150个样本对于CNN回归任务来说太少,尤其是要学习3个连续角度的复杂映射关系。小样本下模型极易陷入统计偏差,直接输出训练集角度的均值来最小化损失,而非学习有效特征映射。
解决建议:至少扩充到500+样本;或对现有图像做轻量数据增强(如微调亮度、添加高斯噪声,注意不能破坏旋转角度对应的特征)。

(2)输入特征与标签相关性弱

你使用的距离编码颜色图像,可能存在小角度旋转(-15~15度)下视觉特征变化极细微的问题,不同角度对应的图像特征重叠度极高,模型无法区分。
解决建议:

  • 可视化不同旋转角度的图像差异,确认是否存在可区分的特征;
  • 改用深度图的梯度、边缘特征作为输入,或把三个视角的图像拼接成多通道输入,强化特征维度。

(3)标签分布引导模型输出均值

从预测结果看,模型输出的固定值大概率是训练集角度的均值。如果训练集角度分布不均匀,MAE损失会引导模型输出均值来最小化整体误差。
解决建议:统计训练集三个角度的均值,对比预测值是否吻合;若分布不均,重新生成覆盖-15~15度区间的均匀分布旋转样本。

2. 模型结构适配问题

(1)模型容量不匹配

如果CNN结构过于简单,无法捕捉复杂的视觉特征;若结构过复杂,小样本下又会过拟合(你的情况更偏向欠拟合,即容量不足)。另外,回归任务的输出层必须用线性激活,否则会限制输出范围。
解决建议:

  • 调整模型容量:增加Conv2D的通道数,或添加1-2个全连接层;
  • 确保输出层为Dense(3, activation='linear')。

(2)特征提取方向偏差

如果模型的特征提取模块关注的是背景、噪声等无关特征,而非3D模型旋转带来的结构变化(如边缘位置、对称结构偏移),就无法拟合角度。
解决建议:

  • 用Grad-CAM等工具可视化模型关注的图像区域,确认是否聚焦在3D模型主体上;
  • 尝试迁移学习,用预训练的CNN(如ResNet50)作为特征提取器,利用通用视觉特征提升性能。

3. 训练配置优化不足

(1)学习率调整不到位

初始学习率0.1过大,会导致模型在训练初期就跳过最优解区域,后续调整到0.01、0.001也难以恢复。固定学习率也无法适配训练后期的收敛需求。
解决建议:

  • 从极小学习率(如1e-5)开始尝试,配合学习率衰减策略(如ReduceLROnPlateau);
  • 尝试SGD优化器,在小样本回归任务中有时比Adam更稳定。

(2)损失函数选择的局限性

MAE在小样本下容易引导模型输出均值,因为均值能最小化整体绝对误差。可以尝试MSE(对偏离大的样本惩罚更重)或Huber损失(结合MAE和MSE的优点)。


内容的提问来源于stack exchange,提问作者DemO-O-On

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:17:55