python中在数据集中保存图片时的自持问题
我提供了一个数据集,用于学习CNN,使用数据增强技术在更大的图像中检测所杜科人。 我的数据集使用边缘检测的soduko功能来学习CNN。在第一步中,我编写了一个数据加载器来获取图片并将其保存到一个n维numpy数组(X)python中在数据集中保存图片时的自持问题,python,numpy,tensorflow,computer-vision,numpy-ndarray,Python,Numpy,Tensorflow,Computer Vision,Numpy Ndarray,我提供了一个数据集,用于学习CNN,使用数据增强技术在更大的图像中检测所杜科人。 我的数据集使用边缘检测的soduko功能来学习CNN。在第一步中,我编写了一个数据加载器来获取图片并将其保存到一个n维numpy数组(X) def加载_数据(n): X=np.ndarray((n,数据大小,数据大小,1)) Y=[] truenumber=1 falsenumber=1 对于范围(n)中的i: 如果i%int((n/100))==0: 打印(“{}已加载数据的前一部分”。格式(int(i/n*10
def加载_数据(n):
X=np.ndarray((n,数据大小,数据大小,1))
Y=[]
truenumber=1
falsenumber=1
对于范围(n)中的i:
如果i%int((n/100))==0:
打印(“{}已加载数据的前一部分”。格式(int(i/n*100)))
rnd=np.random.randint(8360)
如果rnd<4000:
pic=cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\True\{}.png'。格式(truenumber),cv2.imread\u灰度)
pic=np.resize(pic,(数据大小,数据大小))
truenumber+=1
如果truenumber>6380:继续
Y.1(1)
对于范围内的(数据大小):
对于范围内的b(数据大小):
X[i,a,b,0]=pic[a,b]
其他:
pic=cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\False\{}.png'。格式(falsenumber),cv2.imread\u灰度)
pic=np.resize(pic,(数据大小,数据大小))
如果falsenumber>2080:继续
假数字+=1
Y.append(0)
对于范围内的(数据大小):
对于范围内的b(数据大小):
X[i,a,b,0]=pic[a,b]
Y=np.asarray(Y)
返回X,Y
正如您所看到的,假数据和真数据的保存方法都是相同的,但这里我们有:
正如你所看到的,对于真实的数字,这是一个不应该的阈值。任何人都可能知道原因吗?请指定您在代码中处理阈值部分的确切位置。另外,您能否澄清一下,为什么不使用Keras
ImageDataGenerator.flow\u from\u directory
加载图像并将其转换为Numpy数组?Piont是我从未对图像执行过任何阈值,它自己执行!关于使用keras,没有具体的原因。我只是用imread
做的。谢谢你的建议,我会用它。你能不能指定你在代码中处理阈值部分的确切位置。另外,您能否澄清一下,为什么不使用KerasImageDataGenerator.flow\u from\u directory
加载图像并将其转换为Numpy数组?Piont是我从未对图像执行过任何阈值,它自己执行!关于使用keras,没有具体的原因。我只是用imread
做的。谢谢你的建议,我会用的。
def load_data(n):
X = np.ndarray((n, datasize, datasize,1) )
Y = []
truenumber = 1
falsenumber = 1
for i in range(n):
if i % int((n/100)) == 0 :
print("{} precent of data loaded".format(int(i / n * 100)))
rnd = np.random.randint(8360)
if rnd < 4000:
pic = cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\True\{}.png'.format(truenumber) , cv2.IMREAD_GRAYSCALE)
pic = np.resize(pic, (datasize,datasize))
truenumber += 1
if truenumber > 6380: continue
Y.append(1)
for a in range(datasize):
for b in range(datasize):
X[i,a,b,0] = pic[a,b]
else:
pic = cv2.imread('F:\edu\machine vision projects\soduko with CNN\TrainSet\False\{}.png'.format(falsenumber) , cv2.IMREAD_GRAYSCALE)
pic = np.resize(pic, (datasize,datasize))
if falsenumber > 2080: continue
falsenumber += 1
Y.append(0)
for a in range(datasize):
for b in range(datasize):
X[i, a, b, 0] = pic[a, b]
Y = np.asarray(Y)
return X , Y