我目前正致力于使用神经网络进行图像分类。我已经成功地在图像上创建了边界框,并且对于每个边界框,我已经应用了分类算法(W ^ X + B,其中W,B是已经从训练数据中学习的权重和偏差),以获得20个类中的每一个的值。
对于一个边界框,我得到20个类的值:
221.140961 71.6502609 185.005554 14.2860174 177.44928 -20.842535
-16.2324142 -105.940437 -397.505829 132.100311 -12.3567591 262.162872
-243.444672 -198.083984 19.3514423 1.94239163 -75.0622787 -93.7277069
-181.89653 260.002625
预测的类是11级(类的索引从0开始),其最大值为262.162872。我也遇到过一些文章,我发现每个边界框的置信度值通常都是计算出来的,其值的范围是0到1。
如何为每个边界框获取此置信度值?是否只是第11类相对于所有其他类的概率? 在这个数据中我该如何获得它?
答案 0 :(得分:2)
要将神经网络的输出转换为概率,通常使用softmax: https://en.wikipedia.org/wiki/Softmax_function
这确保非常小的值变为接近零的概率,并且非常大的值变为接近一个概率。范围的末端对该值的大小相对不敏感,范围的中间更敏感。它还确保所有概率加起来为1.这适用于多类分类(类不相交)。
请注意,在softmax之前通常不会应用激活功能(例如ReLU)。因此典型的网络是卷积 - > ReLU - > ... - >卷积 - > ReLU - >卷积 - > SOFTMAX。
P.S。你所描述的神经网络真的有一层吗?这通常不会产生良好的效果。