如何将嵌套数组转换为灰度图像?
How to convert nested array to grayscale images?
我想使用 WM-811k 数据集 (https://www.kaggle.com/code/ashishpatel26/wm-811k-wafermap/notebook) 并对正常晶圆进行自动编码,以测试自动编码器如何挑选出异常晶圆。
我正在按照 MNIST 教程使用自动编码器并让它与 MNIST 基本示例一起使用。 https://www.analyticsvidhya.com/blog/2021/06/complete-guide-on-how-to-use-autoencoders-in-python/
代替以下代码:
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
如何获取 LSWMD.pkl 并将嵌套数组读取为类似于 MNIST 数据集的图像?
import pandas as pd
df=pd.read_pickle(r'C:\Users\XXXXX\Desktop\googedrive\LSWMD.pkl')
df['waferMap'][666]
wafermap阵列的结构:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
0, 0, 0, 0],...
我试过:
df['failureNum']=df.failureType
df['trainTestNum']=df.trianTestLabel
mapping_type={'Center':0,'Donut':1,'Edge-Loc':2,'Edge-Ring':3,'Loc':4,'Random':5,'Scratch':6,'Near-full':7,'none':8}
mapping_traintest={'Training':0,'Test':1}
df=df.replace({'failureNum':mapping_type, 'trainTestNum':mapping_traintest})
df_withpattern = df[(df['failureNum']>=0) & (df['failureNum']<=7)]
df_withpattern = df_withpattern.reset_index()
img = df_withpattern.waferMap[600]
data0 = im.fromarray((img * 255).astype(np.uint8))
data0
但我看到的是我访问的每个晶圆都有一个白色圆圈(这是#600)
您遇到的问题是 PIL
调用 .fromarray(img)
。此调用对您要制作的图像的位深度做出假设。请参阅 official documentation 中的可选参数 'mode'
。
目前可能正在做的是从您的输入 int 数组假设您想要一个 8 位图像,这样像素值的范围从 0 到 255。由于您的所有值都非常小,因此它们看起来都大约黑色。通过更改 'mode'
参数来更改此设置 and/or 缩放整数数组,使您期望的最大整数缩放到图像位深度的最大值。
或者,您可以使用其他显示方法。 matplotlib.pyplot
的 imshow
方法会自动将颜色图缩放到数组的最小值和最大值以获得最大视觉对比度。
我想使用 WM-811k 数据集 (https://www.kaggle.com/code/ashishpatel26/wm-811k-wafermap/notebook) 并对正常晶圆进行自动编码,以测试自动编码器如何挑选出异常晶圆。
我正在按照 MNIST 教程使用自动编码器并让它与 MNIST 基本示例一起使用。 https://www.analyticsvidhya.com/blog/2021/06/complete-guide-on-how-to-use-autoencoders-in-python/
代替以下代码:
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
如何获取 LSWMD.pkl 并将嵌套数组读取为类似于 MNIST 数据集的图像?
import pandas as pd
df=pd.read_pickle(r'C:\Users\XXXXX\Desktop\googedrive\LSWMD.pkl')
df['waferMap'][666]
wafermap阵列的结构:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 0, 0,
0, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
0, 0, 0, 0],...
我试过:
df['failureNum']=df.failureType
df['trainTestNum']=df.trianTestLabel
mapping_type={'Center':0,'Donut':1,'Edge-Loc':2,'Edge-Ring':3,'Loc':4,'Random':5,'Scratch':6,'Near-full':7,'none':8}
mapping_traintest={'Training':0,'Test':1}
df=df.replace({'failureNum':mapping_type, 'trainTestNum':mapping_traintest})
df_withpattern = df[(df['failureNum']>=0) & (df['failureNum']<=7)]
df_withpattern = df_withpattern.reset_index()
img = df_withpattern.waferMap[600]
data0 = im.fromarray((img * 255).astype(np.uint8))
data0
但我看到的是我访问的每个晶圆都有一个白色圆圈(这是#600)
您遇到的问题是 PIL
调用 .fromarray(img)
。此调用对您要制作的图像的位深度做出假设。请参阅 official documentation 中的可选参数 'mode'
。
目前可能正在做的是从您的输入 int 数组假设您想要一个 8 位图像,这样像素值的范围从 0 到 255。由于您的所有值都非常小,因此它们看起来都大约黑色。通过更改 'mode'
参数来更改此设置 and/or 缩放整数数组,使您期望的最大整数缩放到图像位深度的最大值。
或者,您可以使用其他显示方法。 matplotlib.pyplot
的 imshow
方法会自动将颜色图缩放到数组的最小值和最大值以获得最大视觉对比度。