我正在研究 webbots,这是一个用于建模、编程和模拟移动机器人的环境。基本上我有一个带有 VGA 摄像头的小型机器人,它在小型乐高迷宫的白墙上寻找简单的蓝色图案并相应地移动
我这里使用的方法是</p>
- 从 webbots 获取图案的图像并将其保存在 PC 中的某个位置。
- 检测蓝色图案,形成一个包围图案的正方形,图案的至少2条边缘是正方形边界的一部分。
将其调整为 7x7 矩阵(使用最近邻插值算法)
网络的输入只不过是每个 7x7 图像的红色像素强度(当我通过红色滤镜查看蓝色像素时,它看起来是黑色的)。提取每个像素的强度,然后将 7x7 矩阵转换为一维向量,即 1x49,这是我对神经网络的输入。(我选择这个特征作为我的输入,因为使用 C 和 webbots 访问这些信息“相对”不那么困难。)
我使用 MATLAB 进行这种离线训练方法,并使用较慢的学习率(0.06)来确保参数收敛,并在大型和小型数据集(分别为 1189 和 346)上进行了测试。在我尝试过的无数次中,网络无法对模式进行分类。(它说模式属于所有 4 类!!!!!!)。该程序没有任何问题,因为我在 matlab 的 simpleclass_dataset 上对其进行了测试,并且几乎可以完美运行
神经网络是否有可能因为数据真的很差而无法学习到函数?(通过糟糕的数据,我的意思是对应于一个类的一个样本的数据点非常接近属于另一个类的另一个样本或类似的东西)。或者神经网络会因为非常差的特征描述符而失败?
任何人都可以建议一种更简单的方法来从图像中提取特征(我现在正在转向 MATLAB,因为我现在只关心 webbots 中的模拟而不是真正的机器人)。我可以选择哪些功能?图案非常简单(L,倒 L 及其反射版本是 4 种图案)