使用Tensorflow + Keras的对象检测项目(根架构)。图像样本大小是否可以精确训练模型?

时间:2018-09-27 23:51:14

标签: tensorflow image-processing keras deep-learning object-detection

我目前正在大学的一个项目上工作,我们正在使用python + tensorflow和keras训练图像对象检测器,以检测拟南芥根系统的不同部分。

我们目前的研究结果非常糟糕,因为目前我们只有大约100张图像来训练模型,但是我们目前正在培育更多的植物以获取更多图像(更多数据)来训练张量流。模型。

我们已经实现了以下Mask_RCNN模型:Github- Mask_RCNN tensorflow 我们正在寻找检测三个对象分类:茎,主根和次生根。 但是该模型在次要根所在的位置错误地检测到主要根。 它应该能够检测到以下内容:Root detection example

训练我们目前正在使用的根数据集:training images

用于训练神经网络准确结果的通常样本量是多少?

1 个答案:

答案 0 :(得分:1)

首先,我认为没有简单的规则可以估算样本量,但至少取决于:

1。图片质量

我下载了图像,我认为您需要对其进行预处理,然后才能使用它来减少“问题的复杂性”。在一些我处理生物学数据的项目中,背景去除(图像-低通滤波器)是获得更好结果的关键。但是,您绝对应该删除/裁剪您感兴趣区域之外的区域(例如胶带和尺子)。我将尝试获取尽可能干净的数据集(包括手动调整 cv2 / gimp /等),以使网络集中精力解决“正确的问题”。之后,您可以应用一些随机失真使其也可以用于模糊/不良/真实图像。

2。数据处理方式

有一些技巧可以使您“扩展”数据集。 有时候让生成器方法从您的输入数据中裁剪随机的小补丁非常有用。这样一来,您可以处理更多批次的产品(在小型GPU上),并为您的网络带来更多的“多样性”(请考虑一下conv2d任务:如果不使用随机裁剪,则过滤器会一遍又一遍地滑过相同区域(在同一张图片上)。由于相同的原因:应用随机失真,翻转和旋转图像

3。网络架构

在您的情况下,我希望使用U-Net架构,其最后的conv2d输出为3个(您的类)特征图,最终的softmax激活和categorical_crossentropy,这使您能够发挥深度,因为有时您会需要复杂的架构来解决问题(接近100%),但是在您的情况下,您只想看到第一个工作结果。因此,更少的层数和简单的体系结构也可以帮助您使工作正常进行。也许有一些经过培训的U-Net网络权重可以满足您的要求(例如,在kaggle上搜索)。因为使用“ 转移学习”也很有帮助(以减少所需的数据)->使用已经训练的网络的第一层(权重)。使用语义分割,第一个过滤器将变得像针对大多数给定问题/图像的边缘检测。

4。您的“准确结果”的心理模型

这是最难的部分。因为它在您的项目过程中不断发展。例如。在您的网络在预处理的输入图像上开始表现良好的同时,您将开始考虑架构/数据更改以使其也适用于模糊图像。这就是为什么您应该从一个可行的问题开始,但始终要改进数据集(包括稀有种类的根)并逐步调整网络架构的原因。