- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面是我的多图像分类代码。我收到错误;我认为这是因为加载和其他地方尺寸不匹配。
错误消息从代码结束处开始。有人能看出问题所在吗?
#importing necessary packages
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from PIL import Image
import tflearn
import tensorflow as tf
import tflearn
#for writing text files
import glob
import os
import random
#reading images from a text file
from tflearn.data_utils import image_preloader
import math
IMAGE_FOLDER = 'C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/Train'
TRAIN_DATA = 'C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/training_data.txt'
TEST_DATA = 'C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/test_data.txt'
VALIDATION_DATA = 'C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/validation_data.txt'
train_proportion=0.7
test_proportion=0.2
validation_proportion=0.1
#read the image directories
filenames_image = os.listdir(IMAGE_FOLDER)
#shuffling the data is important otherwise the model will be fed with a single class data for a long time and
#network will not learn properly
random.shuffle(filenames_image)
#total number of images
total=len(filenames_image)
## *****training data********
fr = open(TRAIN_DATA, 'w')
train_files=filenames_image[0: int(train_proportion*total)]
for filename in train_files:
if filename[0:4] == 'Mark':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
elif filename[0:5] == 'lucas':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')
elif filename[0:3] == 'Ann':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 2\n')
elif filename[0:5] == 'Henry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 3\n')
elif filename[0:5] == 'Hanna':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 4\n')
elif filename[0:4] == 'Jack':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 5\n')
elif filename[0:5] == 'Harry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 6\n')
elif filename[0:3] == 'Lui':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 7\n')
elif filename[0:6] == 'Karlos':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 8\n')
elif filename[0:4] == 'Guan':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 9\n')
fr.close()
## *****testing data********
fr = open(TEST_DATA, 'w')
test_files=filenames_image[int(math.ceil(train_proportion*total)):int(math.ceil((train_proportion+test_proportion)*total))]
for filename in test_files:
if filename[0:4] == 'Mark':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
elif filename[0:5] == 'lucas':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')
elif filename[0:3] == 'Ann':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 2\n')
elif filename[0:5] == 'Henry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 3\n')
elif filename[0:5] == 'Hanna':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 4\n')
elif filename[0:4] == 'Jack':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 5\n')
elif filename[0:5] == 'Harry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 6\n')
elif filename[0:3] == 'Lui':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 7\n')
elif filename[0:6] == 'Karlos':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 8\n')
elif filename[0:4] == 'Guan':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 9\n')
fr.close()
## *****validation data********
fr = open(VALIDATION_DATA, 'w')
valid_files=filenames_image[int(math.ceil((train_proportion+test_proportion)*total)):total]
for filename in valid_files:
if filename[0:4] == 'Mark':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
elif filename[0:5] == 'lucas':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')
elif filename[0:3] == 'Ann':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 2\n')
elif filename[0:5] == 'Henry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 3\n')
elif filename[0:5] == 'Hanna':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 4\n')
elif filename[0:4] == 'Jack':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 5\n')
elif filename[0:5] == 'Harry':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 6\n')
elif filename[0:3] == 'Lui':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 7\n')
elif filename[0:6] == 'Karlos':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 8\n')
elif filename[0:4] == 'Guan':
fr.write(IMAGE_FOLDER + '/'+ filename + ' 9\n')
fr.close()
#Importing data
X_train, Y_train = image_preloader(TRAIN_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)
X_test, Y_test = image_preloader(TEST_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)
X_val, Y_val = image_preloader(VALIDATION_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)
print ("Dataset")
print ("Number of training images {}".format(len(X_train)))
print ("Number of testing images {}".format(len(X_test)))
print ("Number of validation images {}".format(len(X_val)))
print ("Shape of an image {}" .format(X_train[1].shape))
print ("Shape of label:{} ,number of classes: {}".format(Y_train[1].shape,len(Y_train[1])))
#Sample Image
plt.imshow(X_train[1])
plt.axis('off')
plt.title('Sample image with label {}'.format(Y_train[1]))
plt.show()
print(type(X_test))
#input image
x=tf.placeholder(tf.float32,shape=[None,56,56,3] , name='input_image')
#input class
y_=tf.placeholder(tf.float32,shape=[None, 10] , name='input_class')
input_layer=x
print("Hiiiiiiii No error till this point")
#convolutional layer 1 --convolution+RELU activation
conv_layer1=tflearn.layers.conv.conv_2d(input_layer, nb_filter=64, filter_size=5, strides=[1,1,1,1],
padding='same', activation='relu', regularizer="L2", name='conv_layer_1')
#2x2 max pooling layer
out_layer1=tflearn.layers.conv.max_pool_2d(conv_layer1, 10)
#second convolutional layer
conv_layer2=tflearn.layers.conv.conv_2d(out_layer1, nb_filter=128, filter_size=5, strides=[1,1,1,1],
padding='same', activation='relu', regularizer="L2", name='conv_layer_2')
out_layer2=tflearn.layers.conv.max_pool_2d(conv_layer2, 10)
# third convolutional layer
conv_layer3=tflearn.layers.conv.conv_2d(out_layer2, nb_filter=128, filter_size=5, strides=[1,1,1,1],
padding='same', activation='relu', regularizer="L2", name='conv_layer_2')
out_layer3=tflearn.layers.conv.max_pool_2d(conv_layer3, 10)
#fully connected layer1
fcl= tflearn.layers.core.fully_connected(out_layer3, 4096, activation='relu' , name='FCL-1')
fcl_dropout_1 = tflearn.layers.core.dropout(fcl, 0.8)
#fully connected layer2
fc2= tflearn.layers.core.fully_connected(fcl_dropout_1, 4096, activation='relu' , name='FCL-2')
fcl_dropout_2 = tflearn.layers.core.dropout(fc2, 0.8)
#softmax layer output
y_predicted = tflearn.layers.core.fully_connected(fcl_dropout_2, 10, activation='softmax', name='output')
#loss function
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y_predicted+np.exp(-10)), reduction_indices=[1]))
#optimiser -
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
#calculating accuracy of our model
correct_prediction = tf.equal(tf.argmax(y_predicted,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# session parameters
sess = tf.InteractiveSession()
#initialising variables
init = tf.global_variables_initializer()
sess.run(init)
saver = tf.train.Saver()
save_path="C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/mark2.ckpt"
g = tf.get_default_graph()
# every operations in our graph
[op.name for op in g.get_operations()]
epoch=5000
batch_size=20
previous_batch=0
for i in range(epoch):
#batch wise training
if previous_batch >= len(X_train) :
previous_batch=0
current_batch=previous_batch+batch_size
x_input=X_train[previous_batch:current_batch]
x_images=np.array(x_input)
x_images=np.reshape(x_images,[batch_size,56,56,3])
y_input=Y_train[previous_batch:current_batch]
y_label=np.reshape(y_input,[batch_size,10])
previous_batch=previous_batch+batch_size
_,loss=sess.run([train_step, cross_entropy], feed_dict={x: x_images,y_: y_label})
if i%500==0:
n=50 #number of test samples
X_test=np.array(X_test)
x_test_images=np.reshape(X_test[0:n],[n,56,56,3])
y_test_labels=np.reshape(Y_test[0:n],[n,10])
Accuracy=sess.run(accuracy,feed_dict={x: x_test_images ,y_: y_test_labels})
print("Iteration no :{} , Accuracy:{} , Loss : {}" .format(i,Accuracy,loss))
saver.save(sess, save_path, global_step = i)
elif i % 100 ==0:
print("Iteration no :{} Loss : {}" .format(i,loss))
x_input=X_val
x_images=np.reshape(x_input,[len(X_val),56,56,3])
y_input=Y_val
y_label=np.reshape(y_input,[len(Y_val),10])
Accuracy_validation=sess.run(accuracy,feed_dict={x: x_images ,y_: y_label})
Accuracy_validation=round(Accuracy_validation*100,2)
print("Accuracy in the validation dataset: {} %".format(Accuracy_validation))
Test_FOLDER = 'C:/Users/kdeepshi/Desktop/PyforE/Face-Detection/Test'
filenames_image = os.listdir(Test_FOLDER)
total=len(filenames_image)
print(total)
test_files=filenames_image[0: int(total)]
for filename in test_files:
marty=Image.open(Test_FOLDER+'/'+filename)
marty_resize=marty.resize((56,56),Image.ANTIALIAS)
marty_resize=np.array(marty_resize)
marty_test=marty_resize/np.max(marty_resize).astype(float)
marty_test=np.reshape(marty_test,[1,56,56,3])
c=sess.run(y_predicted, feed_dict={x: marty_test})
d= np.argmax(c)
#test your own images
#test_image=Image.open('/path to file')
#test_image= process_img(test_image)
#predicted_array= sess.run(y_predicted, feed_dict={x: test_image})
#predicted_class= np.argmax(predicted_array)
if d==0:
print("This is Mark\n")
elif d==1:
print("This is lucas\n")
elif d==2:
print("This is Ann")
elif d==3:
print("This is Henrry\n")
elif d==4:
print("This is Hanna\n")
elif d==5:
print("This is Jack")
elif d==6:
print("This is Harry\n")
elif d==7:
print("This is Lui")
elif d==8:
print("This is Karlos\n")
elif d==9:
print("This is guan\n")
这是错误:
C:\Users\kdeepshi\Desktop\PyforE\Face-Detection>multi.py
curses is not supported on this machine (please install/reinstall curses for an optimal experience)
Dataset
Number of training images 22
Number of testing images 6
Number of validation images 3
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 12 bytes but only got 0. Skipping tag 270
"Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 6 bytes but only got 0. Skipping tag 271
"Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 8 bytes but only got 0. Skipping tag 272 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 64 bytes but only got 0. Skipping tag 282 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 64 bytes but only got 0. Skipping tag 283 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 20 bytes but only got 0. Skipping tag 306 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 24 bytes but only got 0. Skipping tag 529 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 24 bytes but only got 0. Skipping tag 532 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:692: UserWarning: Possibly corrupt EXIF data. Expecting to read 40 bytes but only got 0. Skipping tag 33432 "Skipping tag %s" % (size, len(data), tag))
C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py:709: UserWarning: Corrupt EXIF data. Expecting to read 2 bytes but only got 0. warnings.warn(str(msg))
Shape of an image (56, 56, 3)
Shape of label:(10,) ,number of classes: 10
最佳答案
从 PIL 模块中的图像读取 EXIF 数据时出现问题。我倾向于认为这是 PIL 中的错误,而不是图像损坏。由于深度学习不需要这些数据,因此您只需清理文件即可。为此,请下载ExifTool并运行以下命令:
exiftool -r -all= -ext JPEG D:\datasets\ImageNet\train
-r
:递归-all
:将所有 EXIF 数据设置为空-ext
:文件扩展名
这适用于 WIndows 和 Linux。
关于python - "UserWarning: Possibly corrupt EXIF data"对图像进行分类时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232981/
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
从以下网站,我找到了执行java AD身份验证的代码。 http://java2db.com/jndi-ldap-programming/solution-to-sslhandshakeexcepti
似乎 melt 会使用 id 列和堆叠的测量变量 reshape 您的数据框,然后通过转换让您执行聚合。 ddply,从 plyr 包看起来非常相似..你给它一个数据框,几个用于分组的列变量和一个聚合
我的问题是关于 memcached。 Facebook 使用 memcached 作为其结构化数据的缓存,以减少用户的延迟。他们在 Linux 上使用 UDP 优化了 memcached 的性能。 h
在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。
我正在尝试执行相当复杂的查询,在其中我可以排除与特定条件集匹配的项目。这是一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我正在尝试执行相当复杂的查询,我可以在其中排除符合特定条件集的项目。这里有一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我发现了很多嵌入/内容项目的旧方法,并且我遵循了在这里找到的最新方法(我假设):https://blog.angular-university.io/angular-ng-content/ 我正在尝试
我正在寻找如何使用 fastify-nextjs 启动 fastify-cli 的建议 我曾尝试将代码简单地添加到建议的位置,但它不起作用。 'use strict' const path = req
我正在尝试将振幅 js 与 React 和 Gatsby 集成。做 gatsby developer 时一切看起来都不错,因为它发生在浏览器中,但是当我尝试 gatsby build 时,我收到以下错
我试图避免过度执行空值检查,但同时我想在需要使代码健壮的时候进行空值检查。但有时我觉得它开始变得如此防御,因为我没有实现 API。然后我避免了一些空检查,但是当我开始单元测试时,它开始总是等待运行时异
尝试进行包含一些 NOT 的 Kibana 搜索,但获得包含 NOT 的结果,因此猜测我的语法不正确: "chocolate" AND "milk" AND NOT "cow" AND NOT "tr
我正在使用开源代码共享包在 iOS 中进行 facebook 集成,但收到错误“FT_Load_Glyph failed: glyph 65535: error 6”。我在另一台 mac 机器上尝试了
我正在尝试估计一个标准的 tobit 模型,该模型被审查为零。 变量是 因变量 : 幸福 自变量 : 城市(芝加哥,纽约), 性别(男,女), 就业(0=失业,1=就业), 工作类型(失业,蓝色,白色
我有一个像这样的项目布局 样本/ 一种/ 源/ 主要的/ java / java 资源/ .jpg 乙/ 源/ 主要的/ java / B.java 资源/ B.jpg 构建.gradle 设置.gr
如何循环遍历数组中的多个属性以及如何使用map函数将数组中的多个属性显示到网页 import React, { Component } from 'react'; import './App.css'
我有一个 JavaScript 函数,它进行 AJAX 调用以返回一些数据,该调用是在选择列表更改事件上触发的。 我尝试了多种方法来在等待时显示加载程序,因为它当前暂停了选择列表,从客户的 Angul
可能以前问过,但找不到。 我正在用以下形式写很多语句: if (bar.getFoo() != null) { this.foo = bar.getFoo(); } 我想到了三元运算符,但我认
我有一个表单,在将其发送到 PHP 之前我正在执行一些验证 JavaScript,验证后的 JavaScript 函数会发布用户在 中输入的文本。页面底部的标签;然而,此消息显示短暂,然后消失...
我是一名优秀的程序员,十分优秀!