【发布时间】:2021-01-09 20:52:19
【问题描述】:
这里我基本上试图通过图像识别通过一些图像和标签来预测年龄和性别。但是当我尝试将图像 numpy 数组除以 255 以对其进行归一化时,出现以下错误。
import csv
import os
from pathlib import *
dir_path = Path('C:\\Users\\Yeshan\\Desktop\\my projs\\UTKFace')
files = dir_path.glob('*.jpg')
import cv2
ages=[]
genders=[]
images=[]
for fle in files:
filename = Path(fle).name
age=int(str(filename).split('_')[0])
ages.append(age)
gender = int(str(filename).split('_')[1])
genders.append(gender)
img = cv2.imread(os.path.join(dir_path,filename))
image= cv2.resize(img,(48,48))
images.append(image)
labels=[]
i=0
while i<len(ages):
label=[]
label.append([ages[i]])
label.append([genders[i]])
labels.append(label)
i+=1
from sklearn.model_selection import train_test_split
images_f=np.array(images)
print(images[0])
labels_f=np.array(labels)
images_f_2=images_f/255
错误:
MemoryError Traceback(最近一次调用最后一次) 在 ----> 1 个图像_f_2=图像_f/255 内存错误:
顺便说一句:我确实尝试了 =/ 255 但仍然没有工作,尝试转换为浮动和潜水,但仍然没有运气。
这就是 images_f 数组的样子:
array([[[[196, 201, 210],
[176, 183, 192],
[127, 137, 146],
...,
[103, 100, 99],
[ 97, 96, 91],
[103, 95, 91]],
[[197, 202, 211],
[140, 147, 156],
[123, 134, 142],
...,
[108, 109, 107],
[103, 100, 99],
[105, 95, 95]],
[[188, 193, 202],
[155, 162, 171],
[141, 152, 160],
【问题讨论】:
-
你的图片有多大,你有多少,你有多少内存?可能只是你的内存不足。注意:您可以通过
import sys然后sys.getsizeof(images)来获取 numpy 数组的字节大小。 -
我有 8gb 内存,总图像大小文件夹为 114MB,@Anakhand,我使用了 sys,它向我展示了这个 '163869840'
-
假设你的图像是一个 numpy 数组,一旦你完成了调整(从内存我认为 cv2 确实适用于 numpy 数组)。你可以在那个时候做 /255
image = cv2.resize(img,(48,48)) / 255 -
/255转换为浮点数,即您需要至少 9 倍于您的images大小的内存(对于新的浮点数组是 8 倍,对于原始 uint 数组是 1 倍直到 gc)。如果您的images阵列为 156 MB,则新阵列需要额外的 1.2 GB。显然你没有那么多可用的内存。 -
嗯,这只是内存错误,伙计,我重新启动了我的机器,然后它工作了,无论如何,谢谢各位。
标签: python numpy deep-learning image-recognition