Cornell抓取检测数据集深度解析:从PCD文件到RGB-D图像处理的完整指南

【图神经网络基础】认识数据集--异质数据集Cornell 节点(Webpages)每个节点代表一个网页。每个网页有一个特征向量,通常使用词袋模型(Bag of Words)表示网页内容。边(Hyperlinks)每条边表示一个网页到另一个网页的超链接。边是有向的,即超链接有方向性。标签(Labels)每个网页被标注为5个类别之一。 阅读详情

Cornell抓取检测数据集深度解析:从PCD文件到RGB-D图像处理的完整指南

在机器人抓取和计算机视觉的研究中,高质量的数据集是推动算法进步的基石。Cornell抓取检测数据集,作为该领域一个经典且广泛使用的基准,其独特的RGB-D数据格式和详尽的抓取标注,为研究者提供了宝贵的实验土壤。然而,许多初次接触该数据集的朋友,往往会被其原始的PCD文件格式、神秘的index字段以及点云与图像的对齐问题所困扰。官方文档的语焉不详,更让数据处理的第一步变得步履维艰。这篇文章,我将结合自己多次使用该数据集的实际经验,为你彻底拆解Cornell数据集的内部结构,手把手带你完成从原始PCD文件到可用RGB-D图像数据的完整处理流程。我们不仅会厘清那些令人困惑的技术细节,还会提供可直接运行的Python代码,让你能快速地将数据转化为算法可用的“燃料”。

1. 初识Cornell数据集:结构与核心挑战

Cornell数据集的核心价值在于它提供了同步的RGB图像、深度图像和点云数据,并为每个场景标注了数百个矩形抓取框的正负样本。这种多模态、高标注密度的特性,使其成为评估抓取检测算法泛化能力的绝佳选择。

数据集通常包含多个压缩包,解压后你会发现以下关键文件:

  • pcdXXXX.txt: 点云数据文件,采用PCD v7格式,但包含自定义字段。
  • pcdXXXX.png: 对应的640x480 RGB彩色图像。
  • pcdXXXXd.tiff: 对应的深度图像,存储了每个像素的深度值(距离)。
  • pcdXXXXcpos.txt: 正样本抓取矩形框的标注文件。
  • pcdXXXXcneg.txt: 负样本抓取矩形框的标注文件。

注意:深度图(.tiff)的读取需要特别注意数据类型和缩放。有时深度值以毫米为单位存储为16位整数,而Cornell的TIFF文件可能需要特殊的处理方式才能正确解析。

对于研究者而言,第一个拦路虎往往是那个pcdXXXX.txt文件。它声称是PCD格式,但用标准的PCL库读取时可能会报错或丢失信息。关键在于理解Cornell在标准PCD格式上做的“手脚”。标准PCD的FIELDS通常定义为 x y z rgb,而Cornell版本的却是 x y z rgb index。这个多出来的index字段,正是连接无序点云与有序图像像素的关键桥梁。

2. 解密PCD文件:index字段与坐标映射原理

让我们深入那个看似普通的文本文件。以pcd0100.txt为例,文件头如下:

# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb index
SIZE 4 4 4 4 4
TYPE F F F F U
COUNT 1 1 1 1 1
WIDTH 253674
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 253674
DATA ascii

紧接着是253674行数据,例如: -0.18716 -0.20571 0 4.808e+06 307200

前四个字段很直观:

  • x, y, z: 点在相机坐标系下的三维坐标(单位通常是米)。
  • rgb: 打包成一个浮点数的RGB颜色信息。需要将其转换为整数并解码为独立的R、G、B通道。
  • index: 这就是Cornell的特别之处。它是一个无符号整数,编码了该点云在原始RGB/深度图像中对应的像素位置。

官方给出的解码公式为:

row = int(index / 640) + 1
col = (index % 640) + 1

这里row和col的起始索引是1,而不是编程中常见的0。图像尺寸为高度480像素,宽度640像素(即480x640)。

那么,为什么点云数量(253674)远小于图像总像素数(480*640=307200)呢?这是因为深度传感器(如Kinect)在拍摄时,由于物体表面材质、光照或几何结构(如边缘、透明物体)的影响,无法获取某些像素的可靠深度值。这些“无效点”在生成PCD文件时就被直接丢弃了。因此,PCD文件只包含了那些成功测到深度的点。

提示:index的最大值理论上是307200,但实际文件中出现的index值范围可能不连续,正好对应了那些有效深度像素的位置。

为了直观理解,我们可以通过一个简单的可视化来验证这个映射关系。下面的代码将index解码,并在一个空白图像上标记出所有有效点云对应的像素位置。

import numpy as np
import cv2

def visualize_index_from_pcd(pcd_path):
    """
    读取PCD文件,根据index字段在空白图像上标记出点云对应的像素位置。
    """
    # 初始化一个480x640的黑色图像
    index_map = np.zeros((480, 640), dtype=np.uint8)

    with open(pcd_path, 'r') as f:
        lines = f.readlines()
    # 找到数据开始行
    for i, line in enumerate(lines):
        if line.strip() == 'DATA ascii':
            data_start = i + 1
            break
    data_lines = lines[data_start:]

    for line in data_lines:
        parts = line.strip().split()
        if len(parts) < 5:
            continue
        # 读取index字段(第5列,索引为4)
        idx = int(float(parts[4])) # 注意:数据中index以浮点字符串形式存储
        # 解码行和列(从1开始)
        row = (idx // 640) + 1
        col = (idx % 640) + 1
        # 转换为0-based索引供OpenCV使用
        r, c = row - 1, col - 1
        # 确保索引在图像范围内
        if 0 <= r < 480 and 0 <= c < 640:
            index_map[r, c] = 255 # 标记为白色

    return index_map

# 使用示例
index_map_img = visualize_index_from_pcd('pcd0100.txt')
cv2.imshow('Index Map (Valid Depth Pixels)', index_map_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行这段代码后,你得到的图像将是一个布满白点的掩膜,这些白点与数据集中RGB图像里具有有效深度的区域完全对应,而黑色区域就是深度缺失的部分。这完美验证了index的映射作用。

3. 构建完整的RGB-D对齐点云:处理缺失数据

理解了index的奥秘,我们的目标就清晰了:重建一个与RGB图像像素一一对应的、完整的深度点云或三维坐标图。对于缺失深度的像素,我们需要进行合理填充(通常置为0或NaN)。

处理流程可以分为以下几步:

  1. 解析PCD文件:读取所有有效点的x, y, z, rgb, index。
  2. 创建空白容器:初始化三个480x640的数组,分别用于存储X坐标、Y坐标、Z坐标(或直接一个480x640x3的数组)。同时初始化一个480x640x3的数组存储RGB颜色。
  3. 根据index填充:将每个有效点的数据填入容器中对应的(row, col)位置。
  4. 处理缺失值:将容器中未被填充的位置(即深度缺失的像素)设置为特定的背景值,如(0, 0, 0)或np.nan。
  5. 解码RGB:将打包的rgb浮点数转换为独立的(R, G, B)整数值。

下面是一个完整的函数实现:

import numpy as np
import struct
import cv2

def load_cornell_pcd_to_aligned_arrays(pcd_path):
    """
    将Cornell PCD文件加载为与图像对齐的坐标和颜色数组。
    返回:
        coords_img: (480, 640, 3)的numpy数组,包含每个像素的(x,y,z),缺失处为(0,0,0)。
        color_img:  (480, 640, 3)的numpy数组,包含每个像素的(R,G,B),缺失处为(0,0,0)。
    """
    height, width = 480, 640
    coords_img = np.zeros((height, width, 3), dtype=np.float32)
    color_img = np.zeros((height, width, 3), dtype=np.uint8)

    with open(pcd_path, 'r') as f:
        lines = f.readlines()

    # 定位数据部分
    data_start = 0
    for i, line in enumerate(lines):
        if line.strip() == 'DATA ascii':
            data_start = i + 1
            break

    for line in lines[data_start:]:
        parts = line.strip().split()
        if len(parts) < 5:
            continue
        x, y, z = map(float, parts[:3])
        rgb_packed = float(parts[3])
        idx = int(float(parts[4]))

        # 解码像素位置
        row = (idx // width) + 1
        col = (idx % width) + 1
        r, c = row - 1, col - 1

        if 0 <= r < height and 0 <= c < width:
            coords_img[r, c] = [x, y, z]
            # 解码RGB:将浮点数转换为32位整数,再提取字节
            rgb_int = int(rgb_packed)
            # 注意字节顺序:PCD格式通常使用大端序或小端序,Cornell数据集常见的是小端序
            # 使用struct进行安全解码
            bgr_bytes = struct.pack('I', rgb_int) # 假设是小端序
            # 从字节中读取B, G, R (因为OpenCV常用BGR顺序)
            blue, green, red = bgr_bytes[0], bgr_bytes[1], bgr_bytes[2]
            color_img[r, c] = [red, green, blue] # 存储为RGB顺序

    return coords_img, color_img

# 使用示例
coords, colors = load_cornell_pcd_to_aligned_arrays('pcd0100.txt')
print(f"坐标图像形状: {coords.shape}")
print(f"颜色图像形状: {colors.shape}")
# 可视化颜色图像(已经是RGB顺序)
cv2.imshow('Aligned Color Image', colors)
cv2.waitKey(0)

现在,coords_img中的每个像素位置都存储了对应的三维坐标。你可以直接用它进行后续的抓取检测算法输入,或者将其转换为有序点云进行可视化。

4. 深度图处理与多模态数据融合

除了从PCD文件重建,直接使用数据集提供的pcdXXXXd.tiff深度图是另一种常见方式。深度图通常以毫米为单位存储为16位无符号整数。正确处理它并与RGB对齐至关重要。

深度图读取与对齐:

import tifffile # 需要安装:pip install tifffile

def load_and_align_depth(depth_tiff_path, rgb_img_path):
    """
    加载深度图,并将其与RGB图像对齐。
    假设深度图与RGB图像已经物理对齐(Cornell数据集如此)。
    """
    # 读取深度图
    depth_data = tifffile.imread(depth_tiff_path)
    # 读取RGB图像
    rgb_img = cv2.imread(rgb_img_path)
    rgb_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2RGB) # 转换为RGB

    # 检查尺寸
    assert depth_data.shape == (480, 640), f"深度图形状异常: {depth_data.shape}"
    assert rgb_img.shape == (480, 640, 3), f"RGB图形状异常: {rgb_img.shape}"

    # 将深度值从毫米转换为米(可选,取决于你的算法需求)
    depth_meters = depth_data.astype(np.float32) / 1000.0

    # 处理深度图中的零值(可能表示无效测量)
    invalid_depth_mask = depth_data == 0
    depth_meters[invalid_depth_mask] = 0.0 # 或 np.nan

    return depth_meters, rgb_img, invalid_depth_mask

从深度图生成点云: 有了对齐的深度图和相机内参,我们可以通过反投影为每一个有效的像素生成三维点云。这需要相机的内参矩阵K。对于Cornell数据集,如果你没有标定参数,一个常见的方法是使用近似值,或者从PCD文件中已有的三维点与像素坐标的关系中反向估算。

假设我们有一个估计的相机内参矩阵:

K = [[fx, 0, cx],
     [0, fy, cy],
     [0,  0,  1]]

其中,(cx, cy)是主点(通常接近图像中心(320, 240)),fx, fy是焦距。我们可以用以下公式为每个像素(u,v)计算其三维坐标(X, Y, Z):

Z = d  # 深度值(米)
X = (u - cx) * Z / fx
Y = (v - cy) * Z / fy

注意:从深度图生成的点云与从PCD文件解析出的点云在坐标系和尺度上应该是一致的。你可以通过比较两者在相同index位置的点坐标来验证你的相机内参估计是否准确。

多模态融合实践: 在实际的抓取检测网络中,RGB图像和深度信息(或由其生成的点云/高度图)通常作为双分支网络的输入。一种实用的预处理流水线如下表所示:

处理步骤RGB分支输入深度/几何分支输入关键操作
数据加载读取pcdXXXX.png读取pcdXXXXd.tiff或从PCD生成确保图像尺寸一致
对齐检查保持原图与RGB图进行像素级对齐利用index或假设已对齐
深度转换颜色归一化 (e.g., /255)深度值转米,并归一化或编码处理无效深度值(置0)
几何表示-可选:深度图、3通道表面法线图、高度图计算表面法线能显著提升抓取检测性能
数据增强同步的旋转、裁剪、色彩抖动同步的相同空间变换对深度图进行最近邻或双线性插值

例如,生成表面法线图可以极大地增强模型对物体几何结构的理解。使用Open3D库可以方便地计算:

import open3d as o3d

def depth_to_normals(depth_map, K, depth_scale=1.0):
    """
    从深度图生成表面法线图。
    depth_map: (H, W) 单位米的浮点深度图。
    K: 3x3相机内参矩阵。
    返回: (H, W, 3)表面法线图。
    """
    height, width = depth_map.shape
    # 创建Open3D深度图像对象
    depth_o3d = o3d.geometry.Image(depth_map.astype(np.float32))
    intrinsic = o3d.camera.PinholeCameraIntrinsic(width, height, K[0,0], K[1,1], K[0,2], K[1,2])
    # 从深度图创建点云
    pcd = o3d.geometry.PointCloud.create_from_depth_image(depth_o3d, intrinsic)
    # 估计法线(需要搜索半径或最近邻数)
    pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.01, max_nn=30))
    # 将法线重新组织成图像网格
    normals = np.asarray(pcd.normals).reshape(height, width, 3)
    # 可选:将法线从世界坐标系转换到相机视角坐标系,使其更一致
    normals = normals * np.array([1, -1, -1]) # 根据坐标系差异调整
    return normals

5. 抓取标注解析与数据加载器构建

最后,要让数据用于训练,我们需要解析抓取标注文件。正样本文件pcdXXXXcpos.txt的每一行代表一个可行的抓取矩形框,格式通常为:(中心点行, 中心点列, 角度, 长度, 宽度),或者像原始资料中提到的(pcd编号, ?, ?)的元组形式,但更常见的是直接存储矩形框的四个角点在图像中的像素坐标。

一个典型的标注行可能看起来像这样: 123.4 156.7 0.78 120.5 60.2 这表示中心在(123.4, 156.7),旋转角度为0.78弧度,矩形长为120.5像素,宽为60.2像素。

我们需要编写一个解析函数,将这些标注转换为模型训练所需的格式,例如:抓取矩形的四个角点坐标、抓取质量分数(正样本为1,负样本为0),或者转化为旋转矩形框的表示。

构建PyTorch数据加载器示例: 一个完整的数据加载器需要集成我们前面讨论的所有步骤:加载RGB、加载/生成深度或几何表示、解析抓取标注、并进行必要的数据增强。

import torch
from torch.utils.data import Dataset, DataLoader
import os

class CornellGraspDataset(Dataset):
    def __init__(self, data_root, split='train', transform=None):
        self.data_root = data_root
        self.transform = transform
        # 假设我们已经有一个根据split划分的文件名列表
        self.file_list = [...] # 例如 ['pcd0100', 'pcd0101', ...]

    def __len__(self):
        return len(self.file_list)

    def __getitem__(self, idx):
        base_name = self.file_list[idx]
        # 1. 加载RGB图像
        rgb_path = os.path.join(self.data_root, f'{base_name}.png')
        rgb_img = cv2.imread(rgb_path)
        rgb_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2RGB)

        # 2. 加载并处理深度图
        depth_path = os.path.join(self.data_root, f'{base_name}d.tiff')
        depth_map, _, _ = load_and_align_depth(depth_path, rgb_path)

        # 3. 生成几何表示(例如:3通道法线图)
        # 假设我们有相机内参K
        normal_map = depth_to_normals(depth_map, self.K)

        # 4. 加载抓取标注
        pos_label_path = os.path.join(self.data_root, f'{base_name}cpos.txt')
        grasps = self._parse_grasp_labels(pos_label_path) # 返回一个Nx5的数组

        # 5. 创建训练目标(例如:抓取热图、角度图、宽度图等)
        label_map = self._create_label_map(grasps, rgb_img.shape[:2])

        # 6. 数据增强(如果提供了transform)
        if self.transform:
            # 需要对rgb_img, depth_map/normal_map, label_map进行同步增强
            augmented = self.transform(image=rgb_img, masks=[normal_map, label_map])
            rgb_img = augmented['image']
            normal_map = augmented['masks'][0]
            label_map = augmented['masks'][1]

        # 转换为Tensor
        rgb_tensor = torch.from_numpy(rgb_img).permute(2,0,1).float() / 255.0
        normal_tensor = torch.from_numpy(normal_map).permute(2,0,1).float()
        label_tensor = torch.from_numpy(label_map).float()

        return rgb_tensor, normal_tensor, label_tensor

    def _parse_grasp_labels(self, label_path):
        # 实现具体的标注解析逻辑
        grasps = []
        with open(label_path, 'r') as f:
            for line in f:
                # 根据实际格式解析
                # 例如:center_x, center_y, angle, length, width = map(float, line.split())
                # grasps.append([center_x, center_y, angle, length, width])
                pass
        return np.array(grasps)

    def _create_label_map(self, grasps, img_shape):
        # 根据grasps生成像素级的标签图,例如抓取置信度热图
        label_map = np.zeros(img_shape, dtype=np.float32)
        # ... 绘制每个抓取矩形到label_map上 ...
        return label_map

这个Dataset类提供了一个框架。在实际项目中,你需要根据所选抓取检测模型的具体输入输出要求,来填充_parse_grasp_labels和_create_label_map函数。例如,一些模型直接预测抓取矩形的角点,而另一些则预测抓取点、角度和张开宽度。

处理Cornell数据集的过程,本质上是一个理解多模态传感器数据如何对齐、如何填补信息缺口、以及如何为特定任务进行表征的过程。我最初使用时,在index解码和深度图无效值处理上花了大量时间调试,希望本文梳理的这条清晰路径能让你绕过这些坑。记住,验证每一步的数据可视化至关重要——用OpenCV把中间结果(如index映射图、生成的点云投影)显示出来,与原始RGB图对比,是确保处理流程正确的唯一可靠方法。当你能够流畅地将一堆杂乱的.txt、.png、.tiff文件转化为规整的、算法友好的张量时,你就已经为攻克抓取检测这个有趣而挑战性的问题,准备好了最坚实的弹药。

抓取检测数据集Cornell数据解析 从Cornell数据集网站:http://pr.cs.cornell.edu/grasping/rect_data/data.php中,我们可以得到比较详细的数据集格式信息,但是其中关于pcd文件的说明不太详细,经过一段时间的查询,记录一下。 以pcd0100.txt为例,打开文件,第一行就是“# .PCD v.7 - Point Cloud Data file format”,说明文件采用的... 阅读详情

相关推荐

基于学习的机械臂抓取研究综述

本文主要总结了2020年的一篇机械臂抓取综述类的论文A Survey on Learning-Based Robotic Grasping,文末有本领域重点的一些论文。

qq_47997583的博客 1万+

day01--数据集制作(一)

1.Cornell数据集下载 链接:https://pan.baidu.com/s/1sVH5cgWWzyISv5v1XaPllg?pwd=udc6 提取码:udc6 图一 cornell grasp data文件 图二 cornell文件 两者内容解压后内容差不多(图一为linux下压缩包) 1.1Windows下解压tar.gz文件 1、进入解压包所在的文件夹,按住shift点击鼠标右键,打开Powershell窗口。 2、输入命令 tar -zxvf 文件名 3、解压完成后,应该有4种文件,一

m0_46154334的博客 3928

机器人抓取必备:Cornell数据集百度网盘下载+实战应用避坑手册(附缺失深度图修复方案)

本文详细解析了机器人抓取领域的经典Cornell数据集,提供了从百度网盘下载到实战应用的完整指南。重点剖析了点云数据中独特的index字段与深度图重建方法,解决了缺失深度像素的修复难题,并解读了抓取标签的工程化应用策略。文章旨在帮助研究者和工程师高效利用该数据集,快速搭建稳定的抓取检测实验环境,避开数据处理中的常见陷阱。

weixin_29200741的博客 295

cornell数据集文件整理

整理cornell数据集文件 import os import shutil file_root = r"F:\python_work\mobilenet\cornell_data\01" # 注意目录里面只能有子文件夹不能有文件 image = r"F:/python_work/mobilenet/cornell_data/image" # 注意要在目录新建一个image文件夹,否则只会生成一个无效的image文件 pos_label = r"F:/python_work/mobilenet/co

m0_54720387的博客 1943

实战指南:从Cornell数据集到训练就绪的TIFF图像

本文提供了一份详细的实战指南,指导如何将经典的Cornell机器人抓取数据集从原始点云格式转换为适用于深度学习模型训练的TIFF深度图像。文章深入解析了数据集结构、核心转换原理(3D点云到2D深度图的投影),并提供了完整的Python脚本实现,涵盖环境搭建、数据读取、投影计算、空洞修复及结果验证等关键步骤,是完成数据集制作流程的实用教程。

iii12的专栏 446

抓取检测数据集Cornell生成抓取检测标签.mat文件

在学习古月居课程《基于深度学习的机器人平面抓取》的过程中,针对GGCNN抓取网络,训练GGCNN需要两个文件:.mat格式的标签文件和.tiff格式的深度图,因为文件体积太大,我分成两个文件来发。 本资源是根据pcd****label.txt文件生成的pcd****grasp.mat文件

【深度学习|抓取检测|数据集】Cornell 康奈尔数据集下载及解析 & txt 转 pcd格式 & 点云可视化

文章目录数据集来源基础知识可视化文件格式转换(txt 转 pcd) 数据集来源 基础知识 首先要了解 PCL 官方教程给出的关于 PCD 文件的格式。 PCD(点云数据)文件格式???? 下面是康奈尔数据集中 pcd0100.txt 的内容: # .PCD v.7 - Point Cloud Data file format # 指定PCD文件版本 # FIELDS 指定点可以拥有的每个维度/字段的名称 FIELDS x y z rgb index # SIZE 指定每个维度的大小(以字节为单位),其中

【人工智障 | 计算鸡视觉 | 机器孩】 6666

康奈尔影评数据集

该语料由电影评论组成,其中持肯定和否定态度的各1,000 篇;另外还有标注了褒贬极性的句子各5331句,标注了主客观标签的句子各5000句。该语料可以被应用于各种粒度的,如词语、句子和篇章级情感分析研究中。 情感分析资源大全:http://blog.csdn.net/qq280929090/article/details/70838025

pybullet 康奈尔数据集转换(四+)训练前看

1.直接按照github上的requiments来配置环境

weixin_50920579的博客 3386

科技中介服务机构如何提升技术评估的智能化与专业化水平?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。

zjh12312311的博客 2757

Cornell数据集解析

Cornell数据解析

m0_52785249的博客 2326

某二级支行网络的设计与实现——配置脚本(1)

【代码】某二级支行网络的设计与实现——配置脚本(1)

u010311846的博客 571

cornell grasp data 康奈尔大学抓取数据集 百度云

国内下载较慢,康奈尔大学抓取数据集分享,给有用的人。科研之路道阻且长,互行方便。 康奈尔大学抓取数据集是基于深度学习方法实现机器人自主抓取的必备数据集, 直接推动了机器人自主抓取的发展。目前先进的基于视觉和机器人抓取方法都是在该数据集上训练过。该数据集共十组,每组100个物体,共计1000个物体,不仅包含物体的图像,还包含物体的抓取位姿。 下载链接: 链接:https://pan.baidu.com/s/1lgPBUT4NPKYXNbzKgBIzCQ 提取码:1n7s ...

工科π的博客 4128

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码)

本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。

s4t5u6v的博客 1196

海康威视iSC平台视频流对接:RTSP、HLS、WS三种协议到底该怎么选?

本文深入分析海康威视iSC平台视频流对接中RTSP、HLS和WebSocket三种协议的优缺点,帮助开发者根据实时性、兼容性和网络环境做出最优选择。特别适合综合安防管理平台的Web视频监控系统开发,提升用户体验和系统性能。

weixin_28365523的博客 684

文献阅读记录3-Real-Time Grasp Detection Using Convolutional Neural Networks

原标题: Real-Time Grasp Detection Using Convolutional Neural Networks 基于卷积神经网络的实时抓取检测 原作者: Joseph Redmon1, Anelia Angelova 论文链接:下载地址http:// https://link.zhihu.com/?target=https://pjreddie.com/media/files/papers/grasp_detection_1.pdf -----------...

宇哥科研之路小记录 956

【脑肿瘤分类与迁移学习技术】Swin UNETR:当 Swin Transformer 遇见 3D 医学图像分割——从黑盒到白盒的逐层拆解

医学图像分割的终极目标是让算法成为医生的可靠副手,而非黑箱替代品。理解 Swin UNETR 的每一层如何流动、每一个窗口如何移位、每一次拼接如何融合,不仅是为了调参,更是为了在临床场景中。

u012133341的博客 52

探索Cornell抓取检测数据集:为GGCNN训练提供精准标签

探索Cornell抓取检测数据集:为GGCNN训练提供精准标签 【下载地址】抓取检测数据集Cornell生成抓取检测标签.mat文件下载 这是一个为机器人平面抓取任务设计的深度学习数据集资源,专为GGCNN抓取网络训练提供标签文件。数据集以.mat格式发布,需与对应的深度图文件配合使用,适用于机器人抓取算法的研究与开发。...

gitblog_06706的博客 513

AI 大模型接口太零散?自建私有模型管理平台统一整合,管理使用超方便!(支持飞牛nas、群晖nas等服务器快速部署)

面对多种 AI 大模型接口难统一、管理繁琐的问题🤯,本文分享一款超实用开源网关工具⚡,可聚合各大模型、自动转接口、支持可视化管理,Docker 一键部署,大幅降低开发与维护成本🚀

XiaoqiangClub的博客 256

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 640

机械臂论文笔记(二)【实时抓取点检测】Real-Time Grasp Detection Using Convolutional Neural Networks

Real-Time Grasp Detection Using Convolutional Neural Networks Abstract— We present an accurate, real-time approach torobotic grasp detection based on convolutional neural networks.Our network performs single-stage regression to graspable bounding boxes wit

CSPhD-winston的博客 6535

9、 量子支持向量机:从经典到量子的跨越

本文详细介绍了量子支持向量机(QSVM)的基本原理及其在PennyLane和Qiskit框架中的实现方法。从经典SVM的基础知识出发,逐步深入到量子领域的应用,包括如何定义量子核函数、与scikit-learn集成以及在模拟器和实际量子计算机上的训练和评估过程。最后通过表格和流程图总结了不同框架下的实现要点,为未来量子机器学习的研究提供了参考。

weixin_42433737的博客 181
上一篇: Labelme实战:用COCO数据集手把手教你制作图像分割标注(避坑指南)
下一篇: 避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案
cc789
博客等级 码龄17年 55粉丝 1517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值