You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Keras对图像指定区域而非整幅图像执行图像分类?

问题解答

这个需求完全可以实现,不需要改动你现有Keras序列分类器的结构,仅需要在模型输入前增加对应区域的裁剪预处理步骤即可,核心实现逻辑如下:

  • 首先统一目标位置的参数格式,通常位置参数用边界框(x_min, y_min, x_max, y_max)(左上角坐标+右下角坐标)或者(x_center, y_center, width, height)(中心坐标+宽高)定义,先转换为裁剪需要的坐标范围
  • 对原图按坐标裁剪出指定区域后,需要和你训练分类器时的预处理逻辑完全对齐:包括尺寸缩放、归一化、通道顺序调整(RGB/BGR)、均值减除等操作
  • 把预处理完成的裁剪区域新增batch维度后,直接输入现有分类器调用model.predict()即可得到对应区域的分类结果

你可以参考下面的极简示例代码适配自己的场景:

import cv2
import numpy as np

# 替换为你训练模型时的输入尺寸和预处理规则
TARGET_INPUT_SIZE = (224, 224)
PREPROCESS_SCALE = 1/255.0

def predict_specified_region(original_image, bbox, trained_model):
    # bbox默认格式为(x_min, y_min, x_max, y_max)
    x_min, y_min, x_max, y_max = bbox
    # 裁剪目标区域
    target_roi = original_image[y_min:y_max, x_min:x_max]
    # 对齐训练预处理逻辑
    processed_roi = cv2.resize(target_roi, TARGET_INPUT_SIZE) * PREPROCESS_SCALE
    # 增加batch维度后输入模型预测
    model_input = np.expand_dims(processed_roi, axis=0)
    prediction_result = trained_model.predict(model_input, verbose=0)
    return prediction_result

注意:如果你的分类器训练时依赖整图上下文特征做分类判断,直接裁剪后的区域预测准确率可能会有小幅下降,这种情况你可以用裁剪后的目标区域样本对模型做少量微调适配,就能恢复到接近原模型的准确率水平。

内容的提问来源于stack exchange,提问作者Ankit Sachan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:54:03