机器学习要求我们拥有现有数据——不是我们的应用程序在运行时将使用的数据,而是要学习的数据。你需要大量的真实数据,事实上,越多越好。您提供的示例越多,计算机应该能够更好地学习。这是使算法训练成为可能的最关键方面,并解释了为什么机器学习近年来变得如此流行。
GitHub上的OpenVINO Notebooks存储库是一组随时可以运行的Jupyter Notebooks,用于学习和试验OpenVINO™™工具包。这些笔记本介绍了OpenVINO™基础知识,并教开发人员如何利用我们的API进行优化的深度学习推理。其中一个例子是一个名为301-tensorflow-training-openvino.ipynb的notebook,您可以在其中使用TensorFlow*训练模型,然后在本机TensorFlow中运行它,然后使用OpenVINO™工具包。它演示了一个端到端的深度学习训练教程,该教程借用了TensorFlow图像分类教程中的开源代码,演示了如何训练模型,然后转换为OpenVINO™中间表示(IR)。它利用了tf_flowers数据集,其中包括大约3,700张花卉照片。
但是,如何修改此notebook,请使用不同的数据集重新训练相同的模型。假设,您想使用水果数据集,重新训练相同的模型并在此新数据集上运行推理,而不是鲜花。需要进行哪些更改?
让我们选择一个有趣的新数据集Fruits-360。这是一个包含水果和蔬菜的图像数据集。顾名思义,它不是另一个包含360种水果的数据集,而是131种水果和蔬菜的集合。该数据集是通过将这些水果和蔬菜安装在旋转360度的棍子上创建的,因此得名。查看研究论文,了解这些数据集图像是如何进行后处理和准备的,用于训练和测试目的。
若要设置基线,请使用花卉数据集中的示例启动现有笔记本并运行推理。
# Pre-process the image and get it ready for inference
inp_img_url = "https://upload.wikimedia.org/wikipedia/commons/4/48/A_Close_Up_Photo_of_a_Dandelion.jpg"
file_path = Path("output")/Path("A_Close_Up_Photo_of_a_Dandelion.jpg")
input_image = pre_process_image(file_path)
# Run inference on the input image
res = compiled_model([input_image])[output_layer]
score = tf.nn.softmax(res[0])
# Show the results
image = Image.open(file_path)
plt.imshow(image)
print("This image most likely belongs to {} with a {:.2f} percent confidence.".format(class_names[np.argmax(score)], 100 * np.max(score)))
以下是此花朵样本图像的分类结果:
现在,要使用Fruits-360数据集,Jupyter notebook中会有一些明显的修改,并且很少进行技术调整。此表显示了所需的第一级更改,您会注意到最显着的差异之一是图像大小。Fruits-360数据集由大小为100x100像素的图像组成。
应用所有必要的代码更改,在新训练的模型上运行推理,并在任何水果或蔬菜上尝试分类结果,例如从数据集中选择下面的红薯或花椰菜图像。
要了解所有代码更改并了解完成此操作所需的步骤,请参加一个名为“BYOD-使用数据集重新训练张量流模型”的20分钟免费教程。它托管在英特尔学习门户上,您可以参加大量有关人工智能的课程。只需注册,OpenVINO™新手就会有一个完整的课程,即10部分学习计划,以及许多新推出的培训课程。祝你学习愉快!
资源
https://www.codeproject.com/Articles/5335239/Bring-your-own-dataset-and-retrain-a-TensorFlow-mo