使用 Tensorflow 进行图像分类

Image Classification using Tensorflow

我正在 transfer-learning/retraining 使用 Tensorflow Inception V3 模型。我有 6 个标签。给定的图像只能是一种类型,即不需要多次 class 检测。我有三个问题:

  1. 哪种激活函数最适合我的情况?目前tensorflow提供的retrain.py文件使用softmax?还有哪些其他方法可用? (比如 sigmoid 等)

  2. 我应该使用哪个优化器功能? (GradientDescent、Adam..等)

  3. 我想识别超出范围的图像,即如果用户输入随机图像,我的算法应该说它不属于所描述的 classes。目前有 6 个 classes,它给出一个 class 作为确定的输出,但我不希望那样。对此有哪些可能的解决方案?

此外,我们还可以在 tensorflow 中调整哪些其他参数。我的基线准确率为 94%,我正在寻找接近 99% 的准确率。

  1. 由于您正在进行单标签分类,因此 softmax 是最好的损失函数,因为它将您的最终层 logit 值映射到概率分布。多标签分类时使用Sigmoid。

  2. 与香草梯度下降相比,使用基于动量的优化器总是更好。有很多这样修改过的优化器,比如 Adam 或 RMSProp。与他们一起试验,看看什么最有效。亚当可能会给你最好的表现。

  3. 您可以添加一个额外的标签no_class,因此您的任务现在将是一个 6+1 标签分类。您可以输入一些带有 no_class 作为标签的随机图像。但是,您的随机图像分布必须与测试图像分布相匹配,否则它不会泛化。