PyTorch模型只能在鸟类接近相机时识别鸟类

时间:2019-12-28 07:39:39

标签: machine-learning computer-vision artificial-intelligence pytorch fast-ai

更新1

停止裁剪图像的最简单方法是:将元组传递给size参数。

所以看起来像这样:

size=(299,299)

很遗憾,它不能解决我的问题。因此问题仍然存在。


我刚刚训练了我的鸟类模型。当我用细密的图片对其进行测试时,效果很好。

但是当我将照片移到相机更远的地方时,模型无法检测到鸟类。

我的猜测是在这行代码中

data = ImageDataBunch.from_folder(path=path_img, bs=48, valid_pct= 0.2, ds_tfms=get_transforms(), size=299, classes=['birds', 'others'])

  

get_transforms()

  

size = 299

功能和尺寸参数裁剪我的训练图像以使图像居中,从而使图像中的鸟类看起来更靠近相机。

如何解决?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

您的数据集在一定比例上偏向鸟类,即它们的大小(以像素为单位)跨很小的范围(您可以验证这一点)。
中心裁剪图像不会改变-鸟的大小(以像素为单位)不会改变。
因此,您的模型无法处理比例​​更改。

为了克服模型的这一局限性,您需要使其更具规模鲁棒性。
实现此目的最简单的方法是在数据加载器中添加 scale 扩充(在裁剪之前)。通过将随机比例尺引入每个训练图像,您可以有效地更改鸟类的大小(以像素为单位),从而模型可以“看到”具有更大范围的鸟类(以像素为单位)的鸟类。