我了解如何训练神经网络来识别图像中的某些特征(人脸、汽车……),其中输入是图像的像素,输出是一组布尔值,指示在图像中识别出哪些对象图像,哪些不是。
我真正没有得到的是,当使用这种方法检测特征并且我们检测到人脸时,我们如何回到原始图像并确定检测到的人脸的位置或边界。这是如何实现的?这可以基于识别算法来实现,还是使用单独的算法来定位人脸?这似乎不太可能,因为要再次找到人脸,需要在图像中识别它,这就是首先使用 NN 的原因。
我了解如何训练神经网络来识别图像中的某些特征(人脸、汽车……),其中输入是图像的像素,输出是一组布尔值,指示在图像中识别出哪些对象图像,哪些不是。
我真正没有得到的是,当使用这种方法检测特征并且我们检测到人脸时,我们如何回到原始图像并确定检测到的人脸的位置或边界。这是如何实现的?这可以基于识别算法来实现,还是使用单独的算法来定位人脸?这似乎不太可能,因为要再次找到人脸,需要在图像中识别它,这就是首先使用 NN 的原因。
您在此处列出的方法并不是真正的方法,这是关于某人如何完成某些任务的非常模糊的想法。你基本上告诉我们有一个算法f(image) = result
,可以有无数种真正的方法来解决这个问题。
在大多数 CNN 方法中,图像通过卷积/池化层,这减少了每个当前层的维度。最后你会得到一个小得多的层,它通过 softmax 并获得不同类别的概率。这种类型的网络不会告诉您在哪里找到了某些东西,它只是告诉您在原始图像的某个地方找到了某些东西。
为了补充@BlindKungFuMaster 的答案,NN 上下文中的对象检测问题不一定通过使用产生与输入大小相同的输出的网络来解决。实际上,这种方法 - 为每个像素分配对象概率 - 更适合实例/语义分割问题。
简要回顾一下最常见的物体检测器,主要有两个系列:
此处发布了关于对象识别、检测和分割的精彩总结- 强烈推荐。