介绍
可口可乐公司已经进行了瓶子的再利用,接受了其随之而来的所有环境影响和金钱利益。当客户购买玻璃瓶中的可乐饮料时,他们会在返回空瓶时获得奖励,而如果没有奖励则会这些玻璃瓶被扔掉和浪费,所以我们可以设计一种自动识别可口可乐瓶的图像识别方法。
使用带有大“ Coca Cola”字样的标签可以轻松辨认可口可乐瓶,而且该字样通常为白色,我们可以通过隔离白色并在分割图像上训练模型来获得标签。
依赖库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib import colors
import os
import cv2
import PIL
from tensorflow.keras.layers import Dense,Conv2D, Dropout,Flatten, MaxPooling2D
from tensorflow import keras
from tensorflow.keras.models import Sequential, save_model, load_model
from tensorflow.keras.optimizers import Adam
import tensorflow as tf
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.applications.inception_v3 import InceptionV3, preprocess_input
from tensorflow.keras.callbacks import ModelCheckpoint
from sklearn.decomposition import PCA
Numpy用于操纵数组数据。
Matplotlib用于可视化图像,并显示在特定的颜色范围内颜色可辨性。
OS用于访问文件结构。
CV2用于读取图像并将其转换为不同的配色方案。
Keras用于实际的神经网络。
转换颜色方案
确定适当的颜色方案:
为了能够隔离颜色,我们需要检查颜色在不同配色方案中的可分辨性,可以为此使用3D图
首先,我们可以在3D空间中以RGB颜色格式可视化图像。
在这里,我们基本上将图像分为其成分(在这种情况下为红色,绿色和蓝色),然后设置3D图;接下来是对图像进行整形,然后对图像进行归一化,从而将范围从0-255减小到0-1;最后,使用scatter()函数创建散点图,然后我们相应地标记轴。
red, green, blue = cv2.split(img)
fig = plt.figure()
axis = fig.add_subplot(1, 1, 1, projection="3d")
pixel_colors = img.reshape((np.shape(img)[0]*np.shape(img)[1], 3))
norm = colors.Normalize(vmin=-1.,vmax=1.)
norm.autoscale(pixel_colors)
pixel_colors = norm(pixel_colors).tolist()
axis.scatter(red.flatten(), green.flatten(), blue.flatten(), facecolors=pixel_colors, marker=".")
axis.set_xlabel("