import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, Callback, TensorBoard
import pathlib
import time
import os
import cv2
import random
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
gpu_ok = tf.test.is_gpu_available()
print("tf version:", tf.__version__)
print("use GPU", gpu_ok)
vaildpath = "testdata"
outppath = "result"
modelpath = "model/chepai-12-0.04.h5"
size =(96,96)
labelchar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
def listdir(top_dir, type='image'):
tmp_file_lists = os.listdir(top_dir)
file_lists = []
if type == 'image':
for e in tmp_file_lists:
if e.endswith('.jpg') or e.endswith('.png') or e.endswith('.bmp') or e.endswith('.JPG'):
file_lists.append(e)
elif type == 'dir':
for e in tmp_file_lists:
if os.path.isdir(top_dir + e):
file_lists.append(e)
else:
raise Exception('Unknown type in listdir')
return file_lists
def check_parameter(param, param_type, create_new_if_missing=False):
assert param_type == 'file' or param_type == 'directory'
if param_type == 'file':
assert os.path.exists(param)
assert os.path.isfile(param)
else:
if create_new_if_missing is True:
if not os.path.exists(param):
os.makedirs(param)
else:
assert os.path.isdir(param)
else:
assert os.path.exists(param)
assert os.path.isdir(param)
def CreatResultDir(Onelevel,Twolevel):
if not os.path.exists(Onelevel):
os.makedirs(Onelevel)
for n ,label in enumerate(Twolevel):
labpath = '%s/%s'%(Onelevel,label)
if not os.path.exists(labpath):
os.makedirs(labpath)
fpath = pathlib.Path(Onelevel)
listall = list(fpath.glob("*"))
listdir = [str(path) for path in listall]
return listdir
#random.shuffle(all_image_paths)
#label_names = sorted(item.name for item in data_root.glob("*/") if item.is_dir())
def reprocessimage(img,size):
resizeimg = cv2.resize(img,size)
image = resizeimg/255.0
image = 2*image-1
return image
def main():
model = tf.keras.models.load_model(modelpath)
print(CreatResultDir(outppath,labelchar))
print("model load ready , and folder created ok")
libDir = os.path.abspath(vaildpath)
t = time.time()
for root, dirs, files in os.walk(libDir):
imglist = listdir(root, type='image')
print("test image number :{}".format(len(imglist)))
lasttime =time.time()
for n in range(len(imglist)):
img = cv2.imread(os.path.join(root,imglist[n]))
if img is None:
print("*********:{} is empty *********".format(imagelist[n]))
continue
outimage = reprocessimage(img,size)
out = np.argmax(model.predict(np.expand_dims(outimage, axis=0),batch_size=1))
wrpath = os.path.join(outppath,labelchar[out],imglist[n])
cv2.imwrite(wrpath,img)
if n%50==0:
bashtime= time.time()
print("now process number :{},with {} left,processing 50 using time :{}s".format(n,len(imglist)-n,bashtime-lasttime))
lasttime=bashtime
t2=time.time()
print("OK -----process image is {},all using time :{}s".format(len(imglist),t2-t))
if __name__=="__main__":
main()
tf2.0学习笔记1
最新推荐文章于 2025-12-03 11:42:57 发布
该代码段展示了如何加载预训练的TensorFlow模型,对指定目录下的图像进行识别,并将结果保存到相应目录。它遍历指定路径中的所有图片,对每张图片进行预处理,然后用模型进行预测,将预测结果作为子目录保存图片。
1094

被折叠的 条评论
为什么被折叠?



