1、数据集介绍SWIM_Dataset_1.0.0
1.1标注文件介绍
标注文件介绍,
第一种:角度和框的坐标
<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>
第二种:船舶的点坐标和尾迹角度
<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>
画图代码
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上面