1、数据集介绍SWIM_Dataset_1.0.0
1.1标注文件介绍
标注文件介绍,
第一种:角度和框的坐标
bash
<annotation>
<folder>Positive</folder>
<filename>00001</filename>文件名字
<format>jpg</format>图片后缀
<source>
<database>SWIM</database>数据集名字
</source>
<size>
<width>768</width>图片大小
<height>768</height>
<depth>3</depth>几维
</size>
<segmented>0</segmented>没有分割数据
<object>
<type>robndbox</type>框的类型不是标准的,有角度
<name>wake</name>框的类别
<pose>Unspecified</pose>没有关键点
<truncated>0</truncated>
<difficult>0</difficult>
<robndbox>
<cx>602.8032</cx>这里是变简况的中心坐标和旋转角度
<cy>53.0397</cy>
<w>44.4618</w>
<h>96.8959</h>
<angle>0.53</angle>
</robndbox>
</object>
</annotation>
第二种:船舶的点坐标和尾迹角度
bash
<annotation>
<!-- 图像的标注信息开始 -->
<folder>Positive</folder>
<!-- 表示图像所属的文件夹名称,这里是 "Positive" 文件夹 -->
<filename>00001</filename>
<!-- 图像文件的名称,这里是 "00001" -->
<format>jpg</format>
<!-- 图像的格式,这里是 jpg 格式 -->
<source>
<database>SWIM</database>
<!-- 图像的来源数据库,这里是 "SWIM" 数据库 -->
</source>
<size>
<width>768</width>
<height>768</height>
<depth>3</depth>
<!-- 图像的尺寸信息:
- width: 图像宽度为 768 像素
- height: 图像高度为 768 像素
- depth: 图像的颜色通道数为 3,表示这是一个RGB图像 -->
</size>
<segmented>0</segmented>
<!-- 表示图像是否被分割,这里是 0,表示图像没有分割 -->
<object>
<!-- 对图像中的物体进行描述 -->
<type>pointtheta</type>
<!-- 物体的标注类型为 "pointtheta"(可能表示某种带有角度信息的点标注方式) -->
<name>wake</name>
<!-- 物体的类别名称,这里是 "wake"(可能是某种特定的物体类别) -->
<pose>Unspecified</pose>
<!-- 物体的姿态未指定 -->
<truncated>0</truncated>
<!-- 表示物体没有被截断,0 表示未截断 -->
<difficult>0</difficult>
<!-- 表示物体的识别难度,0 表示识别不困难 -->
<pointtheta>
<!-- 表示物体的具体位置和角度信息 -->
<px>581.6883116883117</px>
<!-- 物体中心点的 x 坐标 -->
<py>83.01298701298701</py>
<!-- 物体中心点的 y 坐标 -->
<theta1>-1.2298173732985473</theta1>
<!-- 物体的第一个角度信息(可能是物体的旋转角度或方向) -->
<theta2>-0.7488630676110335</theta2>
<!-- 物体的第二个角度信息(可能与物体的另一个方向或姿态相关) -->
</pointtheta>
</object>
</annotation>
画图代码
python
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
# 定义绘制直线的函数
def draw_lines_on_image(image_path, px, py, theta1, theta2):
# 打开图片
image = Image.open(image_path)
# 创建图形和坐标轴
fig, ax = plt.subplots()
# 显示原始图片
ax.imshow(image)
# 点坐标
ax.plot(px, py, 'ro') # 用红色圆点标记点
# 计算直线的坐标
line_length = 100 # 线的长度
# 计算角度对应的直线的终点坐标
end_x1 = px + line_length * np.cos(theta1)
end_y1 = py + line_length * np.sin(theta1)
end_x2 = px + line_length * np.cos(theta2)
end_y2 = py + line_length * np.sin(theta2)
# 绘制直线
ax.plot([px, end_x1], [py, end_y1], 'b-') # theta1 对应的蓝色线
ax.plot([px, end_x2], [py, end_y2], 'g-') # theta2 对应的绿色线
# 设置坐标轴范围
ax.set_xlim(0, image.width)
ax.set_ylim(image.height, 0) # y轴反转
# 保存结果
plt.savefig('/data/lh123/lh/wake_detection/coda/0001.jpg')
plt.close() # 关闭图形以释放内存
# 给定参数
image_path = '/data/lh123/lh/wake_detection/data/SWIM_Dataset_1.0.0/JPEGImages/00001.jpg'
px = 581.6883116883117
py = 83.01298701298701
theta1 = -1.2298173732985473 # 角度1
theta2 = -0.7488630676110335 # 角度2
# 绘制直线
draw_lines_on_image(image_path, px, py, theta1, theta2)
画出的图片
1.2其余介绍
数据集数量: 11,600 张正片和 3,010 张负片,
2、尾迹检测方法
2.1 别人的方法
https://github.com/Lilytopia/WakeNet
输入的是左上角和右下角的点,这个代表的是图中的尾迹正方形框,其中还有一个点和两条线的偏移角度
明天把这篇论文分析一下,然后把我这个正确的代码更新到github上面