无人船进入大众视野,人工船作业开始减少,水上作业人员需要往哪个方向转型呢?
usv无人船视角水面全景分割与目标检测数据集。
part1:全景分割数据集可用于usv无人船自动驾驶,水面全景分割等场景,数据集共1GB,2800张标准图像(PNG mask图标注方式)
Static Obstacle: 静态障碍物
Water: 水
Sky: 天空
Boat/ship: 船/舰船
Row boats: 划艇
Paddle board: 滑板划艇
Buoy: 浮标
Swimmer: 游泳者
Animal: 动物
Float: 浮动物体
Other: 其他
part2:usv无人船目标检测数据集,共7000余张图像,1.7GB数据量,标注桥,货船,小游船,球,垃圾,岩石,浮标,水面平台,船坞,桅杆,树,动物,草地,人类共14类目标20000余标注,涵盖雨,雾,黑夜等多种情况,
USV无人船视角水面全景分割与目标检测数据集介绍
Part 1: 全景分割数据集
- 名称:USV无人船视角水面全景分割数据集
- 规模:2800张标准图像,每张图像附带PNG格式的mask标注。
- 数据量:约1GB
- 价格:39人民币
- 类别:
- 静态障碍物 (Static Obstacle)
- 水 (Water)
- 天空 (Sky)
- 船/舰船 (Boat/ship)
- 划艇 (Row boats)
- 滑板划艇 (Paddle board)
- 浮标 (Buoy)
- 游泳者 (Swimmer)
- 动物 (Animal)
- 浮动物体 (Float)
- 其他 (Other)
- 应用场景:适用于USV无人船自动驾驶、水面环境感知等任务。
Part 2: 目标检测数据集
- 名称:USV无人船目标检测数据集
- 规模:7000余张图像,超过20000个标注框。
- 数据量:约1.7GB
- 类别:
- 桥 (Bridge)
- 货船 (Cargo ship)
- 小游船 (Small boat)
- 球 (Ball)
- 垃圾 (Garbage)
- 岩石 (Rock)
- 浮标 (Buoy)
- 水面平台 (Water platform)
- 船坞 (Dock)
- 桅杆 (Mast)
- 树 (Tree)
- 动物 (Animal)
- 草地 (Grass)
- 人类 (Human)
- 多样性:涵盖多种天气条件,如雨、雾、黑夜等。
- 应用场景:适用于USV无人船的目标识别、跟踪以及避障系统开发。
代码示例
这里提供一个使用Python和常见的计算机视觉库来处理这两个数据集的基本代码示例。我们将使用cv2(OpenCV)来读取图像,并使用xml.etree.ElementTree来解析XML标注文件。
全景分割数据集加载与显示
python深色版本
import os
import cv2
import numpy as np
def load_segmentation_data(image_dir, mask_dir):
images = []
masks = []
for filename in os.listdir(image_dir):
if filename.endswith('.jpg') or filename.endswith('.png'):
# 加载图像
img_path = os.path.join(image_dir, filename)
image = cv2.imread(img_path)
# 加载对应的mask
mask_filename = filename.replace('.jpg', '.png')
mask_path = os.path.join(mask_dir, mask_filename)
mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
images.append(image)
masks.append(mask)
return images, masks
# 假设图像和mask分别存储在'image'和'mask'目录下
image_dir = 'path_to_your_image_directory'
mask_dir = 'path_to_your_mask_directory'
images, masks = load_segmentation_data(image_dir, mask_dir)
# 显示第一张图像及其对应的mask
cv2.imshow('Image', images[0])
cv2.imshow('Mask', masks[0])
cv2.waitKey(0)
cv2.destroyAllWindows()
目标检测数据集加载与显示
python深色版本
import os
import cv2
from xml.etree import ElementTree as ET
def parse_annotation(xml_file):
tree = ET.parse(xml_file)
root = tree.getroot()
boxes = []
labels = []
for obj in root.findall('object'):
label = obj.find('name').text
bndbox = obj.find('bndbox')
xmin = int(bndbox.find('xmin').text)
ymin = int(bndbox.find('ymin').text)
xmax = int(bndbox.find('xmax').text)
ymax = int(bndbox.find('ymax').text)
boxes.append([xmin, ymin, xmax, ymax])
labels.append(label)
return boxes, labels
def load_detection_data(image_dir, annotation_dir):
images = []
annotations = []
for filename in os.listdir(image_dir):
if filename.endswith('.jpg') or filename.endswith('.png'):
# 加载图像
img_path = os.path.join(image_dir, filename)
image = cv2.imread(img_path)
# 加载对应的annotation
annotation_filename = filename.replace('.jpg', '.xml').replace('.png', '.xml')
annotation_path = os.path.join(annotation_dir, annotation_filename)
boxes, labels = parse_annotation(annotation_path)
images.append(image)
annotations.append((boxes, labels))
return images, annotations
# 假设图像和标注文件分别存储在'image'和'annotation'目录下
image_dir = 'path_to_your_image_directory'
annotation_dir = 'path_to_your_annotation_directory'
images, annotations = load_detection_data(image_dir, annotation_dir)
# 显示第一张图像及其对应的标注框
img = images[0]
boxes, labels = annotations[0]
for box, label in zip(boxes, labels):
cv2.rectangle(img, (box[0], box[1]), (box[2], box[3]), (0, 255, 0), 2)
cv2.putText(img, label, (box[0], box[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36, 255, 12), 2)
cv2.imshow('Image with Annotations', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
这段代码提供了如何从文件系统中加载全景分割和目标检测数据集的方法,并展示了如何可视化这些数据。请根据实际情况调整路径和其他细节