当前位置: 首页 > news >正文

帮忙建站的公司青岛网络工程优化

帮忙建站的公司,青岛网络工程优化,c mvc网站开发,西安网站排名优化实例分割、语义分割和 SAM(Segment Anything Model) 都是图像处理中的重要技术,它们的目标是通过分割图像中的不同对象或区域来帮助识别和分析图像,但它们的工作方式和适用场景各有不同。 1. 语义分割(Semantic Segme…

实例分割、语义分割和 SAM(Segment Anything Model) 都是图像处理中的重要技术,它们的目标是通过分割图像中的不同对象或区域来帮助识别和分析图像,但它们的工作方式和适用场景各有不同。

1. 语义分割(Semantic Segmentation)

  • 目标: 语义分割的目的是将图像中的每个像素归类到某一个类别中,不区分同类中的不同个体。
  • 特点: 语义分割只关心“类别”,而不关心图像中有多少个对象。换句话说,如果图像中有多辆车,它们都被归类为“车”,但不会区分不同的车。
  • 应用场景: 自动驾驶中的道路、建筑物、行人分割,医学图像中的器官分割。

例子: 在城市街景中,语义分割会将所有的树木标记为同一个类别“树”,所有的道路标记为“道路”,而不会区分某一棵树或某一段路。

2. 实例分割(Instance Segmentation)

  • 目标: 实例分割不仅要将每个像素归类到某个类别,还要区分同类中的不同个体。
  • 特点: 实例分割可以同时进行物体检测和像素级的分割。例如,它不仅会检测图像中的车,还会为每辆车生成单独的掩码,从而区分同一图像中的不同车辆。
  • 应用场景: 实例分割常用于自动驾驶、增强现实(AR)、机器人视觉、视频监控等领域,在这些场景中需要区分同类物体的不同个体。

例子: 在同样的城市街景中,实例分割不仅会识别“车”这个类别,还会区分每一辆车。

3. SAM(Segment Anything Model)

  • 目标: SAM 是一种通用的分割模型,旨在实现“一切的分割”。它结合了语义分割和实例分割的能力,但更加灵活。
  • 特点: SAM 能够在提供提示(如边界框、点)的情况下进行精确的分割,而无需针对特定任务或类别进行专门训练。这意味着你可以通过简单的提示(如边界框、点击目标)来触发分割操作,无论图像中是什么物体,SAM 都可以尝试分割。
  • 应用场景: SAM 可以在任何需要分割的场景下应用,尤其适用于需要用户交互的场景,如图像标注、医疗图像分析、用户定制分割等。它能够分割新类别的物体,而不依赖于预先定义的类别。

例子: SAM 可以根据给定的边界框分割出手、车、动物等,而不需要事先知道物体的类别。用户也可以通过点选某些区域来生成物体的分割掩码。

主要区别

  1. 类别和个体的区分:

    • 语义分割: 只关心类别,所有属于同一类别的物体都会被统一处理,不区分个体。
    • 实例分割: 不仅分割类别,还区分每个个体,即使是同一类别的物体,也会生成单独的掩码。
    • SAM: 可以基于提示(如点、边界框)分割任意物体,具有更大的灵活性,不局限于某一特定类别或预先定义的任务。
  2. 应用场景:

    • 语义分割: 适合场景分类和大范围的物体分割,如识别整个场景中的类别。
    • 实例分割: 适合需要区分多个同类物体的场景,如自动驾驶中的行人、车辆检测。
    • SAM: 适合任意分割任务,可以应对未知类别和灵活的用户交互需求。
  3. 灵活性:

    • 语义分割和实例分割通常依赖于预先定义的类别或特定任务进行训练。
    • SAM 是一种通用分割工具,能够根据用户的提示分割出几乎任何类型的物体,无需预先训练。

小结:

  • 语义分割 是针对类别的分割,适用于大范围的场景分析。
  • 实例分割 通过区分同类个体,提供更精细的对象分割。
  • SAM 则是一种通用分割工具,灵活且不局限于特定类别和任务。

首先我们写一段简单的代码来看一下语义分割,语义分割就是可以把具体的某个像素点分给某个物体,而不是像目标检测一样用一个框标出

 

import torch
from torchvision import models, transforms
from PIL import Image
import matplotlib.pyplot as plt# 加载预训练的DeepLabV3模型
model = models.segmentation.deeplabv3_resnet101(pretrained=True).eval()# 图像预处理
preprocess = transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])# 加载图像
image_path = "path/000000000257.jpg"  # 替换为你的图片路径
image = Image.open(image_path)
input_tensor = preprocess(image).unsqueeze(0)# 执行语义分割
with torch.no_grad():output = model(input_tensor)['out'][0]
output_predictions = output.argmax(0)  # 获取每个像素的类别# 将分割结果可视化
plt.figure(figsize=(10, 5))# 显示原图
plt.subplot(1, 2, 1)
plt.imshow(image)
plt.title("Original Image")# 显示语义分割结果
plt.subplot(1, 2, 2)
plt.imshow(output_predictions.cpu().numpy())
plt.title("Semantic Segmentation")
plt.show()

 

  把物体和背景有效进行区分了

实例分割

import torch
from PIL import Image
from torchvision import models, transforms
import matplotlib.pyplot as plt
import cv2
import numpy as np# 加载预训练的Mask R-CNN模型
model = models.detection.maskrcnn_resnet50_fpn(pretrained=True).eval()# 图像预处理
preprocess = transforms.Compose([transforms.ToTensor(),
])# 加载图像
image_path = "path/000000000257.jpg" # 替换为你的图片路径
image = Image.open(image_path)
input_tensor = preprocess(image).unsqueeze(0)# 执行实例分割
with torch.no_grad():output = model(input_tensor)# 获取分割掩码
masks = output[0]['masks'].cpu().numpy()
boxes = output[0]['boxes'].cpu().numpy()# 可视化边界框和实例掩码
image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
for i in range(len(masks)):mask = masks[i, 0]  # 获取掩码mask = cv2.resize(mask, (image_cv.shape[1], image_cv.shape[0]))  # 将掩码调整为与原图大小一致# 将掩码叠加到图像上image_cv[mask > 0.5] = [0, 0, 255]  # 红色掩码# 绘制边界框box = boxes[i].astype(int)cv2.rectangle(image_cv, (box[0], box[1]), (box[2], box[3]), (255, 0, 0), 2)  # 蓝色边框# 显示结果
plt.imshow(cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB))
plt.title("Instance Segmentation (Mask R-CNN)")
plt.show()

 当然小编这里导入的语义分割和实例分割的模型差异导致了识别也有差异

SAM

import matplotlib.pyplot as plt
import numpy as np
from ultralytics import YOLO
from PIL import Image
import cv2
from segment_anything import SamPredictor, sam_model_registry# 加载图像
image_path = r'F:/photos/photo_1.jpg'  # 替换为你的图片路径
image = Image.open(image_path)# 将图像转换为 OpenCV 格式以便显示
image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)# 加载 YOLO 模型
yolo_model = YOLO("F:/科研学习/yolo系列params/v10/YOLOv10x_gestures.pt")
# yolo_model = YOLO("F:/科研学习/yolov11/yolov11/yolov11/资料/模型文件/yolov8n.pt")
yolo_results = yolo_model(image)# 加载 SAM 模型
sam_model = sam_model_registry["vit_l"](checkpoint="C:/Users/张佳珲/Downloads/sam_vit_l_0b3195.pth")
predictor = SamPredictor(sam_model)# 将整个图像传递给 SAM 模型
predictor.set_image(np.array(image))  # 传递整个图像# 遍历 YOLO 检测结果并绘制边界框
for result in yolo_results:if len(result.boxes) > 0:  # 检查是否有检测到物体boxes = result.boxes.xyxy  # YOLO 边界框for box in boxes:# 画出 YOLO 边界框 (蓝色)x1, y1, x2, y2 = map(int, box)cv2.rectangle(image_cv, (x1, y1), (x2, y2), (255, 0, 0), 2)  # 蓝色框代表 YOLO 的检测# 使用 SAM 模型预测分割掩码masks, _, _ = predictor.predict(box=np.array([x1, y1, x2, y2]), multimask_output=False)# 获取掩码并直接叠加到原图上mask = masks[0]  # 使用第一个掩码mask_uint8 = mask.astype(np.uint8)  # 将布尔掩码转换为 uint8 类型# 调整掩码大小为与原图一致,并直接叠加到原图上mask_resized = cv2.resize(mask_uint8, (image_cv.shape[1], image_cv.shape[0]), interpolation=cv2.INTER_NEAREST)image_cv[mask_resized == 1] = [0, 0, 255]  # 红色表示分割区域# 使用 Matplotlib 显示 YOLO 边界框和 SAM 分割的对比
fig, ax = plt.subplots(1, 1, figsize=(10, 10))# 显示叠加了 SAM 掩码和 YOLO 边界框的原图
ax.imshow(cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB))
ax.set_title("Original Image with SAM Segmentation and YOLO Bounding Box")plt.show()

http://www.hkea.cn/news/995305/

相关文章:

  • 优秀的网站建设公司百度指数人群画像
  • wordpress企业中文模板太原seo哪家好
  • 广东网广东网站建设网站推广方案模板
  • 网站运营知识快手seo
  • 咖啡公司网站建设策划书微信营销方式
  • 柳江区城乡住房建设局网站上海seo优化服务公司
  • 西城企业网站建设企业网站怎么优化
  • 初学者做动态网站项目例子游戏特效培训机构排名
  • 汽车类网站搭建直链平台
  • 做网站遇到的困难总结网络营销软件代理
  • 做网站登录论坛外链代发
  • 东营专业网站建设公司排行青岛谷歌优化公司
  • 公众号和网站先做哪个口碑营销的形式
  • 长沙企业建网站费用关键词搜索推广排行榜
  • 怎么做网站端口代理沧州网络推广外包公司
  • php wordpress 目录seo课程培训机构
  • 常州网站建设方案优化引流app推广软件
  • 网络营销网站建设实训网络营销步骤
  • 网站都有后台吗百度竞价开户公司
  • 秭归网站建设网站seo优化心得
  • wordpress电影网站模板seo运营
  • 公司注册网上核名业务如何终止网站排名优化怎么做
  • 网站建设伍金手指下拉2网上推广平台
  • 沧州网站建设公司翼马爱情链接
  • 计算机学了出来干嘛免费优化推广网站的软件
  • 宁波网站建设优化湖南seo优化按天付费
  • 门户网站手机版google官网入口
  • 深圳市工程建设交易服务中心网站软文什么意思
  • 大型网架加工厂成都网站建设方案优化
  • 导航网站的广告怎么做的千锋教育官方网