我开发了一个Android应用程序,任何人都可以将百科全书的图片(桥梁、博物馆、盘子、风景、绘画等)上传到维基共享网站。
不幸的是,5%的用户觉得上传自己的自拍很有趣。所以我想以编程的方式检查这张照片是否是自拍,如果可能的话,警告他们自拍是不主题的。
作为一个数据集,我有:
所有的图片都是用智能手机拍摄的(数百种不同的型号),它们是2MB到5MB的JPG文件,大小和比例各不相同,都是纵向或横向模式。
我必须只使用开放源码,由此产生的检测代码必须在低端Android手机上运行不到一秒。
这个任务需要什么方法和步骤?
发布于 2019-12-09 07:37:18
我要去转学。我们的想法是以网络为基础,它已经接受了大数据集的训练,并且开发了许多conv过滤器,这些过滤器可以重用。在tensorflow中有几个是可用的。你在ImageNet上接受了网络预训练,把负责分类的最后一层分门别类,然后用你自己的来代替它。这样你就不需要有那么多的数据才能达到开创性的分数了。
请查看以下链接:
你也可以提供你自己的顶层来改变输入的形状。
base_model = MobileNetV2(
weights="imagenet",
include_top=False,
input_shape=(HEIGTH, WIDTH, DEPTH)
)
你可以选择是否重新训练网络。
base_model.trainable = False
现在,只需使用基本模型实例化一个新模型,并添加最后的层即可。
model = Sequential(base_model)
model.add(Flatten())
model.add(Dense(units=1024))
model.add(Activation('relu'))
model.add(BatchNormalization())
model.add(Dropout(rate=0.25))
model.add(Dense(units=1024))
model.add(Activation('relu'))
model.add(BatchNormalization())
model.add(Dropout(rate=0.25))
model.add(Dense(units=len(encoder.classes_)))
model.add(Activation('softmax'))
然后像往常一样编译模型。
model.compile(
loss='categorical_crossentropy',
optimizer=Adam(
learning_rate=0.0001
),
metrics=['accuracy']
)
请注意,您必须选择正确的最后密集层的数目和它们的形状。你仍然需要微调它:使用什么激活函数,如果你做重量衰减,以什么速度,什么优化器,什么学习速率,等等。
发布于 2021-06-05 16:56:20
为此,您不需要经历自己创建模型所带来的痛苦。用MTCNN检测脸部,然后继续。
对于后人,比较脸部大小和位置。对图像进行最优决策。
发布于 2018-09-13 12:34:08
图像识别技术的实现有很多开源库可用于图像识别和分类。您可以使用"TensorFlow“库进行图像识别,并可以与您的安卓应用程序集成。
https://datascience.stackexchange.com/questions/38189
复制相似问题