在训练卷积神经网络(DenseNet)时,是否可以更改任何选项或参数以减少训练时间?

时间:2019-04-10 18:32:01

标签: python conv-neural-network training-data

我正在使用以下python代码'ImageAI'将DenseNet用于我的研究。

ImageAI github:https://github.com/OlafenwaMoses/ImageAI

ImageAI示例:https://towardsdatascience.com/train-image-recognition-ai-with-5-lines-of-code-8ed0bdd8d9ba

我目前正在使用CNN方法(DenseNet)进行与符号识别(2D建筑图纸符号)有关的研究。 VAV框符号的一个示例是:https://ibb.co/cyhwRvf

我正在尝试对39个类别(在这种情况下为对象的数量,即符号的数量)进行分类,并为每个类别提供2,000张图像作为训练数据(2,000 x 39 = 78,000)。我每个测试数据都有1,000张图像(1,000 x 39 = 39,000)。数据集的总大小为1.82 GB(我认为这是一个相对较小的大小,但是如果我写错了,请纠正我的意思。)

但是问题是训练时间要花很多时间。

我已经尝试过使用GPU(Nvidia Geforce RTX 2080 Ti),并且将历元(实验次数)设置为200时需要3天的训练时间。

我想知道是否有减少训练时间的方法。有没有可以更改的参数或其他选项?

还是考虑到我使用的数据集和GPU的大小,这被认为是正常的消耗时间?

用于培训的五行代码如下:

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()

model_trainer.setModelTypeAsDenseNet()

model_trainer.setDataDirectory("mechsymbol")
model_trainer.trainModel(num_objects=39, num_experiments=200, enhance_data=True, batch_size=32, show_network_summary=True)

1 个答案:

答案 0 :(得分:0)

我对ImageAI / Tensorflow并不陌生,但仍在学习中。

关于使用参数更快地学习,我认为 enhance_data 可以通过将其设置为False来使您更快地学习。 如果您没有大量要训练的图像(小于1000),则应将此参数设置为True。此参数将从现有样本中获取更多样本。

enhance_data = False

还值得一提的是,如果由于模型过拟合,例如在50个时期之后没有得到任何更好的结果,则不必全部进行200代培训。

听说过使用FP16而不是FP32进行“混合精度转换”吗?

我自己没有尝试过,因为它没有张量核心,因此在Nvidia GTX 1080 Ti上将是一个微不足道的区别。但您可以在此处了解更多信息 https://medium.com/tensorflow/automatic-mixed-precision-in-tensorflow-for-faster-ai-training-on-nvidia-gpus-6033234b2540

供参考:

当我对62个类(26GB)的图像数据集进行ResNet训练时,其中包含1000到2000幅图像用于训练,而200幅图像用于验证,每个时期大约需要10分钟。

200代培训大约需要33个小时。

这是我的imageAi python代码行

model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory('.')
model_trainer.trainModel(num_objects=classes_in_train, num_experiments=100, 
enhance_data=False, batch_size=32)

Found 81086 images belonging to 62 classes.
Found 13503 images belonging to 62 classes.

Epoch 38/100
231/2533 [=>............................] - ETA: 10:00 - loss: 2.9065e-04 - acc: 0.9999

希望它会为您提供有用的信息。