Machine learning PyTorch模型只能在鸟类靠近摄像机时识别鸟类

Machine learning PyTorch模型只能在鸟类靠近摄像机时识别鸟类,machine-learning,computer-vision,artificial-intelligence,pytorch,fast-ai,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()

更新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()

尺寸=299

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

如何修复它


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

为了克服模型的这一局限性,您需要使其更具伸缩性。

实现这一点的最简单方法是(在裁剪之前)向数据加载器添加扩展。通过对每个训练图像引入随机比例,您可以有效地更改鸟的大小(以像素为单位),因此您的模型可以“看到”大小范围更大(以像素为单位)的鸟。

测试时不要居中裁剪。也许那样会更好help@akshayk07fastai似乎在没有关闭选项的情况下自动进行裁剪……您可以编写一个自定义的
get\u transforms
函数。基本上将输入修改为
ds\u tfms
。在fastai论坛上有一些关于自定义转换的帖子(你可以通过谷歌搜索找到)。你好@akshayk07谢谢你的帮助。我已经找到了停止裁剪的最简单解决方案,但它不能解决问题,但我将更新我的问题,以包括停止裁剪图像的解决方案。由于您使用中心裁剪对其进行了培训,因此它仅适用于那些类型的图像。假设中间修剪通常会使鸟类非常接近(图片的大部分都是鸟)。很漂亮~!我想这就是我想要的答案~!!!谢谢~!您能用代码详细说明一下您的
添加缩放增强
吗?如果代码使用Fast.Ai,那就太棒了。@Franva不幸的是,我对Fast.Ai不熟悉,看起来你需要一些类似的东西。您可以查看源代码以了解它的具体功能。我在Fast.Ai中找到了3个函数,您认为哪一个函数与您所说的接近?@Franva看来
zoom\u crop
的随机变量更合适(它保留了纵横比)。但是,您应该仔细选择
量表
来满足您的实际需要。您需要检查数据集中的“典型”鸟的大小(以像素为单位),以及在测试时希望该范围是什么。然后你需要选择
比例
来反映这个范围。hi@Shai我的数据集有大量的鸟的大小,从“几乎整个图片”到“天空中的一群鸟,非常小”,但我要使用我的鸟模式的地方是在我的后院,所以相机和鱼池之间的距离将是5-7米。我在后院看到了像朱鹭这样的大鸟或小鸟_