深度学习已成功应用于几个大型数据集,用于分类少数类(猫,狗,汽车,飞机等),其性能优于简单的描述符,例如SIFT上的特征包,颜色直方图等.
然而,培训这样的网络需要每个班级有大量的数据和大量的培训时间.然而,在花费时间设计和训练这样的设备并收集训练数据之前,通常一个人没有足够的数据或只是想知道卷积神经网络可能做得多好.
在这种特殊情况下,使用现有技术出版物使用的某些基准数据集来配置和训练网络可能是理想的,并且只需将其应用于您可能作为特征提取器的某些数据集.
这导致每个图像的一组特征,其可以馈送到经典分类方法,如SVM,逻辑回归,神经网络等.
特别是当一个人没有足够的数据来训练CNN时,我可以预期这会超过CNN在少数样本上训练的管道.
我正在查看tensorflow教程,但他们似乎总是有一个明确的培训/测试阶段.我找不到带有预先配置的CNN特征提取器的pickle文件(或类似文件).
我的问题是:这些预先训练好的网络是否存在,我在哪里可以找到它们.另外:这种方法有意义吗?我在哪里可以找到CNN +权重?
编辑
WRT @约翰的评论我试着用'DecodeJpeg:0'和'DecodeJpeg/contents:0',并检查了输出,这是不同的(:S)
import cv2, requests, numpy
import tensorflow.python.platform
import tensorflow as tf
response = requests.get('https://i.stack.imgur.com/LIW6C.jpg?s=328&g=1')
data = numpy.asarray(bytearray(response.content), dtype=np.uint8)
image = cv2.imdecode(data,-1)
compression_worked, jpeg_data = cv2.imencode('.jpeg', image)
if not compression_worked:
raise Exception("Failure when compressing image to jpeg format in opencv library")
jpeg_data = jpeg_data.tostring()
with open('./deep_learning_models/inception-v3/classify_image_graph_def.pb', 'rb') as graph_file:
graph_def = tf.GraphDef()
graph_def.ParseFromString(graph_file.read())
tf.import_graph_def(graph_def, name='')
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('pool_3:0')
arr0 = numpy.squeeze(sess.run(
softmax_tensor,
{'DecodeJpeg:0': …Run Code Online (Sandbox Code Playgroud)