图像分割模型输出发展史FCN │ ▼ U-Net │ ▼ DeepLab │ ▼ Mask R-CNN │ ▼ YOLACT │ ▼ YOLOv8/YOLO11 Seg │ ▼ SAM可以看到前三个属于直接输出像素分类Dense Prediction后面几个属于先预测目标再生成Mask这是两种完全不同的思路。第一种FCN网络输出假设输入640×640×3假设数据集有3类例如背景 猫 狗那么FCN最后输出640 × 640 × 3为什么因为每个Pixel都要预测属于背景 属于猫 属于狗所以每一个Pixel输出3个数例如第100行200列输出[0.01,0.98,0.01]表示背景1% 猫98% 狗1%最后argmax()得到猫于是Mask111111 111111所以FCN真正输出的是每个Pixel的类别概率(Logits)不是Mask。Mask只是argmax(logits)得到的。输出Tensor(B,C,H,W)例如(1,3,640,640)这里Bbatch C类别数第二种U-Net很多人认为U-Net输出Mask。其实不是。U-Net输出也是(B,C,H,W)例如二分类(1,1,512,512)为什么只有1因为只有前景 背景不需要输出两个通道。例如某Pixel0.92表示前景概率92%最后prob0.5得到Mask如果四分类背景 肝脏 脾脏 肾脏输出(1,4,512,512)每个Pixel[0.1,0.7,0.1,0.1]最后argmax()得到肝脏所以U-Net输出不是Mask。而是Pixel Classification Logits第三种DeepLabV3DeepLab和U-Net几乎一样。输出(B,C,H,W)例如VOC21类输出(1,21,513,513)每一个Pixel输出21个类别分数然后Softmax ↓ Argmax ↓ Mask所以DeepLab也是Dense Prediction。第四种Mask R-CNN这里开始完全变了。因为它不是预测整张Mask。而是每一个目标预测一个Mask。Mask R-CNN输出实际上有四个HeadClass Head Box Head Mask Head Score Head其中Mask Head输出例如检测到了3个目标那么Mask输出(3,80,28,28)为什么80COCO类别。28×28Mask大小。例如第一只狗输出Dog28×28不是640×640。最后再ROI AlignUpsample得到原图大小Mask。所以Mask R-CNN真正输出不是整张Mask。而是每个ROI的小Mask第五种YOLACTYOLACT更有意思。它根本不预测Mask。它输出两个东西。第一个Prototype例如(138,138,32)什么意思就是预测32张基础Mask。例如Mask1 Mask2 Mask3 ... Mask32第二个Coefficient每一个目标输出32例如[0.3,0.2,...]最后Prototype × Coefficient得到Mask。所以YOLACT输出不是Mask。而是Prototype Coefficient第六种YOLOv8 Seg / YOLO11 SegYOLO也是继承YOLACT。输出两部分。第一部分DetectionBoxes Classes Scores第二部分Prototype(32,160,160)第三部分每个目标Mask Coefficient32最终MaskProto Coeff例如Proto32×160×160目标Coeff32最后得到160×160再Upsample640×640所以YOLO真正输出Boxes Classes Scores Proto Coeff不是Mask。第七种SAMSAM更加不同。SAM输出三个东西。第一Mask例如(3,256,256)为什么3SAM默认输出三个候选Mask。第二IoU Prediction例如[0.98,0.85,0.61]表示三个Mask谁最好。第三Low Resolution Logits例如256×256方便下一轮Prompt。所以SAM输出Masks IoU Scores Low-res Logits不是只有Mask。所有模型输出对比模型网络直接输出Tensor Shape示例后处理得到FCNPixel Logits(B,C,H,W)argmax → MaskU-NetPixel Logits或前景概率(B,C,H,W)或(B,1,H,W)sigmoid/softmax → MaskDeepLabV3Pixel Logits(B,C,H,W)argmax → MaskMask R-CNNROI Mask Logits(N,C,28,28)训练或每实例(N,1,28,28)推理上采样 粘贴回原图YOLACTPrototype Coefficient(H,W,K)(N,K)线性组合 → MaskYOLO11Detection Prototype CoefficientProto(K,h,w)Coeff(N,K)Proto × Coeff → 上采样 → MaskSegment Anything Model多个 Mask Logits IoU 评分Masks Scores Logits选择最佳 Mask你会发现两个时代把所有模型归纳一下其实只有两大类第一类Dense Prediction逐像素预测代表模型FCNU-NetDeepLabV3共同特点输出 (B, C, H, W) ↓ Softmax / Sigmoid ↓ Mask网络直接对每一个像素进行分类。第二类Mask Generation生成 Mask代表模型Mask R-CNNYOLACTYOLO11Segment Anything Model共同特点检测目标 / 接收 Prompt ↓ 生成实例级 Mask ↓ 得到最终 Mask网络不直接输出整张图的像素类别图而是围绕目标实例或提示生成对应的 Mask。