We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
完全无法识别,训练命令:python tools/train.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml --eval 导出命令:python tools/export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml -o weights=output/best_model/model.pdparams。使用config = paddle_infer.Config(model_file, params_file)这种模式没有问题。代码如下:time1 = time.time()
model_dir = "output_inference/ppyoloe_plus_crn_s_80e_coco" model_file = os.path.join(model_dir, "model.pdmodel") params_file = os.path.join(model_dir, "model.pdiparams")
config = paddle_infer.Config(model_file, params_file) config.enable_use_gpu(200, 0) config.use_gpu() config.rt
predictor = paddle_infer.create_predictor(config)
def preprocess(image_path, target_size=(640, 640)): # 读取图片并转换为 RGB 格式 image = Image.open(image_path).convert("RGB") # 调整图片尺寸为目标尺寸 image = image.resize(target_size, Resampling.BILINEAR) # 归一化 image_np = np.array(image).astype("float32") / 255.0 mean = np.array([0, 0, 0], dtype="float32").reshape((1, 1, 3)) std = np.array([1, 1, 1], dtype="float32").reshape((1, 1, 3)) image_np = (image_np - mean) / std # 转换为 CHW 格式 image_np = image_np.transpose((2, 0, 1)) # HWC -> CHW image_np = np.expand_dims(image_np, axis=0) # 增加 batch 维度 return image_np
def parse_output(output_data, threshold=0.75): results = [] for row in output_data: batch_id, score, x_min, y_min, x_max, y_max = row if score > threshold: # 过滤低置信度的结果 # 宽度处理 x_min = float(x_min) * 1280 / 640 x_max = float(x_max) * 1280 / 640 width = x_max - x_min if width > 330: continue results.append({ "box": [x_min, float(y_min) * 720 / 640, x_max, float(y_max) * 720 / 640], # 检测框坐标 "score": float(score), # 置信度分数 "label": int(batch_id) # 假设 batch_id 可以作为类别标签 }) return results
folder_path = r'D:\PythonProject\img_save' newDir = r'D:\PythonProject\paddle_image'
files = os.listdir(folder_path)
image_files = [f for f in files if f.lower().endswith(('.jpg', '.png', '.jpeg', '.bmp'))]
label_data = { "label": 'null', "x": -1, "y": -1, "score":0.0, }
labels = ('mfzh', 'dgp', 'mxd', 'qmly', 'kbfl', 'slfy', 'lhbl', 'qnngg', 'hyss', 'xljm', 'klbj', 'jsym')
input_names = predictor.get_input_names() input_tensor1 = predictor.get_input_handle(input_names[0]) scale_factor=np.array([[1.0,1.0]],dtype=np.float32) input_tensor2 = predictor.get_input_handle(input_names[1]) input_tensor2.copy_from_cpu(scale_factor) output_names = predictor.get_output_names()
for img_file in image_files: img_path = os.path.join(folder_path, img_file) input_data = preprocess(img_path)
# 设置输入数据 input_tensor1.copy_from_cpu(input_data) # print(output_names) # 执行推理 predictor.run() # 获取输出数据 output_tensor = predictor.get_output_handle(output_names[0]) output_data = output_tensor.copy_to_cpu() #解析并打印结果 results = parse_output(output_data) if len(results) == 0: continue label_data_list = list() for result in results: #print(f"Class: {result['label']}, Score: {result['score']:.4f}, Box: {result['box']}") label_data_d = label_data.copy() label_data_d["x"] = int(result['box'][0]) label_data_d["y"] = int(result['box'][1]) label_data_d["label"] = labels[result['label']] label_data_d["score"] = result["score"] label_data_list.append(label_data_d) try: dst = newDir + "/" + img_file shutil.copy2(img_path, dst) except Exception as e: print(f"复制失败: {img_path}, 错误: {e}") print(img_file) print(label_data_list)
time2 = time.time() print(time2 - time1)。
The text was updated successfully, but these errors were encountered:
有偿解决问题,可以加微信1009206360
Sorry, something went wrong.
LokeZhou
cuicheng01
No branches or pull requests
问题描述 Please describe your issue
完全无法识别,训练命令:python tools/train.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml --eval
导出命令:python tools/export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_s_80e_coco.yml -o weights=output/best_model/model.pdparams。使用config = paddle_infer.Config(model_file, params_file)这种模式没有问题。代码如下:time1 = time.time()
模型路径
model_dir = "output_inference/ppyoloe_plus_crn_s_80e_coco"
model_file = os.path.join(model_dir, "model.pdmodel")
params_file = os.path.join(model_dir, "model.pdiparams")
初始化推理配置
config = paddle_infer.Config(model_file, params_file)
config.enable_use_gpu(200, 0)
config.use_gpu()
config.rt
使用 GPU,设置初始显存大小为 100 MB,设备 ID 为 0
如果使用 CPU,可以启用以下代码:
config.disable_gpu()
创建预测器
predictor = paddle_infer.create_predictor(config)
图片预处理
def preprocess(image_path, target_size=(640, 640)):
# 读取图片并转换为 RGB 格式
image = Image.open(image_path).convert("RGB")
# 调整图片尺寸为目标尺寸
image = image.resize(target_size, Resampling.BILINEAR)
# 归一化
image_np = np.array(image).astype("float32") / 255.0
mean = np.array([0, 0, 0], dtype="float32").reshape((1, 1, 3))
std = np.array([1, 1, 1], dtype="float32").reshape((1, 1, 3))
image_np = (image_np - mean) / std
# 转换为 CHW 格式
image_np = image_np.transpose((2, 0, 1)) # HWC -> CHW
image_np = np.expand_dims(image_np, axis=0) # 增加 batch 维度
return image_np
解析输出结果
def parse_output(output_data, threshold=0.75):
results = []
for row in output_data:
batch_id, score, x_min, y_min, x_max, y_max = row
if score > threshold: # 过滤低置信度的结果
# 宽度处理
x_min = float(x_min) * 1280 / 640
x_max = float(x_max) * 1280 / 640
width = x_max - x_min
if width > 330:
continue
results.append({
"box": [x_min, float(y_min) * 720 / 640, x_max, float(y_max) * 720 / 640], # 检测框坐标
"score": float(score), # 置信度分数
"label": int(batch_id) # 假设 batch_id 可以作为类别标签
})
return results
folder_path = r'D:\PythonProject\img_save'
newDir = r'D:\PythonProject\paddle_image'
获取所有文件列表
files = os.listdir(folder_path)
筛选图片文件
image_files = [f for f in files if f.lower().endswith(('.jpg', '.png', '.jpeg', '.bmp'))]
label_data = {
"label": 'null',
"x": -1,
"y": -1,
"score":0.0,
}
labels = ('mfzh', 'dgp', 'mxd', 'qmly', 'kbfl', 'slfy', 'lhbl', 'qnngg', 'hyss', 'xljm', 'klbj', 'jsym')
获取输入和输出句柄
input_names = predictor.get_input_names()
input_tensor1 = predictor.get_input_handle(input_names[0])
scale_factor=np.array([[1.0,1.0]],dtype=np.float32)
input_tensor2 = predictor.get_input_handle(input_names[1])
input_tensor2.copy_from_cpu(scale_factor)
output_names = predictor.get_output_names()
for img_file in image_files:
img_path = os.path.join(folder_path, img_file)
input_data = preprocess(img_path)
time2 = time.time()
print(time2 - time1)。
The text was updated successfully, but these errors were encountered: