ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何判断深度学习模型的任务类型(AI4问)

如何判断深度学习模型的任务类型(AI4问) 提问:如何判断任务类型?答:如何判断深度学习模型的任务类型两种途径:看模型来源 / 用途、看模型输出张量 shape(Netron 工具)、看数据集、看输出层算子。1、从模型名字、数据集、用途直接判断(最优先)表格任务类型典型模型名称、数据集、用途单标签图像分类GoogLeNet、Inception、ResNet、MobileNet;数据集 ImageNet;一张图只有一个主物体,输出哪一类。多标签分类一张图可以同时存在多个物体;例如图片同时有猫 + 狗;输出每一类独立 0‑1 置信。目标检测YOLOv3/v4/v5/v8、SSD、Faster‑RCNN;输出物体坐标框 (x,y,w,h)+ 类别 + 置信度。语义分割U‑Net、DeepLab;输出一张和输入尺寸接近的图,每个像素预测类别。实例分割Mask‑RCNN;检测框 + 每个物体像素掩码。回归任务人脸关键点、角度预测、距离估算;输出连续浮点数,不是类别编号。例子:bvlc_googlenet.caffemodel、tensorflow_inception_graph.pb→ ImageNet,单标签分类。yolov3.cfg + yolov3.weights→ YOLO,目标检测。2、Netron 看输出张量 shape(核心手段,拿到未知模型也可以判断)Netron 打开模型,看网络最末尾输出 tensor 维度,OpenCV‑DNN 是 NCHW 格式[N, C, H, W]①单标签分类输出 shape:[1, num_classes, 1, 1]H=1,W=1;C 等于类别数量。 示例:[1,1000,1,1]含义:batch=1,1000 个类别,高宽都是 1。②多标签分类输出 shape:[1, num_classes, 1, 1]和单分类 shape 长得一模一样!shape 区分不开,要看训练数据集与输出算子。 区别:不会只取最大值,每个类别独立判断是否大于阈值。③目标检测(YOLO)输出:多组输出头,例如[1,255,13,13]、[1,255,26,26]C 通道 = 每个框信息(x,y,w,h,conf,class…),H、W 是不同尺度特征图。H、W 不等于 1,是二维网格。④语义分割输出 shape:[1, num_class, H_out, W_out]H_out、W_out 是输出图的高宽,不是 1。 例如[1,21,320,320]:21 个类别,输出 320×320 分割图。⑤回归任务(关键点、角度)输出 shape:[1, keypoint_num*2,1,1],输出连续浮点数,没有类别概念。3、看网络最后一层算子(Netron / 代码打印层类型)表格最后层算子任务Softmax单标签分类,所有类别概率总和 = 1。Sigmoid多标签分类,每一类独立 0‑1,互不干扰。Conv / Conv+Sigmoid分割、检测输出。InnerProduct (FC) 直接输出(无 softmax)输出 logits 原始得分,分类;也可以是回归。⚠重点区分 Softmax vs SigmoidSoftmax:适合单标签,整张图只能属于一类,概率总和为 1。Sigmoid:适合多标签,各类互不影响,可以同时多个类别大于阈值。4、拿到别人给的模型,完整判断流程(实操步骤)看模型文件名、文档,这是做什么的?(分类 / 检测 / 分割)Netron 打开模型:看输出 tensor 的 shape;看最后一层是什么算子(Softmax / Sigmoid / Conv)。结合 shape + 末尾算子综合判断:判断示例 1模型:inception tensorflow pb 输出 shape:[1,1000,1,1];最后一层softmax2算子是 Softmax 👉单标签分类,可以用 reshape+minMaxLoc。判断示例 2YOLOv3 输出多个 tensor:[1,255,13,13] [1,255,26,26] [1,255,52,52];末尾是 Conv,无 Softmax 👉目标检测,不能用那套解析代码。判断示例 3U‑Net 语义分割 输出[1,2,224,224];末尾 Conv 👉语义分割,每个像素输出类别。判断示例 4输出 shape[1,8,1,1],末尾 Sigmoid 👉 多标签分类,一张图可以同时输出多个类别,不能只取最大值。5、易错坑单标签与多标签 shape 完全一样,不能只看维度,要看最后一层算子Softmax → 单标签;Sigmoid → 多标签。有些分类模型输出 logits,没有 Softmax 层,shape 依然是[1,N,1,1];可以 minMaxLoc 拿索引,但数值不是概率。不要只看文件后缀,同样 onnx 文件,可以是分类、检测、分割。简答背诵判断模型任务:优先查阅模型文档、模型名称,知道它设计用途。使用 Netron 工具查看输出张量 shape:单分类输出 H=1,W=1;检测 / 分割 H、W 不为 1。查看网络最后一层算子:Softmax 一般单标签分类;Sigmoid 多标签分类;卷积输出一般检测或分割。结合 shape 与算子综合判定,再决定解析结果用什么代码。
返回列表