Я предоставляю набор данных для изучения CNN, используя увеличение данных, чтобы обнаружить soduko на большом изображении. мой набор данных использует функцию обнаруженного края для изучения CNN. На первом шаге я написал загрузчик данных, чтобы получить изображения и сохранить их в n-мерном массиве numpy (X).
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
, поскольку вы видите, что метод сохранения ложных и истинных данных - это все то же самое, но здесь у нас есть: два примера возвращенных изображений True и False
, поскольку вы видите это для истинных чисел, это делает своего рода порог, как это не должно быть. Кто-нибудь может знать, почему?