深度学习框架目标检测算法YOLOV8模型—训练红外船舶数据集 识别红外状态下的红外邮轮、红外散货船、红外军舰、帆船、皮划艇 、集装箱船、红外渔船目标
红外船舶数据集,一共8002张jpg图片,包含txt和xml标注格式。
,7类船数据集,8002张,txt和xml标注。含不同场景下、时段、分辨率海上、港口和海边邮轮数据集、散货船数据集、军舰数据集、帆船数据集、皮划艇数据集、集装箱船数据集、渔船目标数据集
该数据库记录包含了多个不同场景下、不同时段、不同分辨率的海上、港口和海边上的邮轮、散货船、军舰、帆船、皮划艇 、集装箱船、渔船目标。图像分辨率分别为:384*288、640*512、1280*1024,对图像中的七类船舶目标liner、bulk carrier、warship、sailboat、canoe、container ship、fishing boat进行了标注,该数据库将其主要用于真实世界红外海防领域的目标检测识别技术研究。
该数据库记录包含了多个不同场景下、不同时段、不同分辨率的海上、港口和海边上的邮轮、散货船、军舰、帆船、皮划艇 、集装箱船、渔船目标。图像分辨率分别为:384*288、640*512、1280*1024,对图像中的七类船舶目标liner、bulk carrier、warship、sailboat、canoe、container ship、fishing boat进行了标注,该数据库将其主要用于真实世界红外海防领域的目标检测识别技术研究。
红外船舶数据集介绍
数据集概述
该红外船舶数据集包含8002张JPG格式的红外图像,涵盖了多个不同的场景,包括海上、港口以及海边环境下的多种类型的船舶目标。这些图像在不同时段拍摄,具有不同的分辨率,适合用于研究真实世界的红外海防目标检测识别技术。
数据集特点
- 多场景覆盖:数据集中的图像涵盖了各种环境,包括开阔海域、繁忙港口及近岸区域,这有助于模型学习在不同背景下的目标检测能力。
- 多样化的目标类型:数据集中包含了七种不同类型的船舶,分别是邮轮(liner)、散货船(bulk carrier)、军舰(warship)、帆船(sailboat)、皮划艇(canoe)、集装箱船(container ship)以及渔船(fishing boat)。这种多样性能够提高模型的泛化能力。
- 多分辨率支持:图像分辨率分别为384288、640512、1280*1024,这使得数据集适用于不同分辨率下的目标检测算法的研究与开发。
- 标注格式:数据集提供两种标注格式:XML和TXT。这为用户提供了灵活的选择,可以根据所使用的工具或框架选择合适的格式。
数据集内容
- 图像文件:共有8002张JPG格式的红外图像。
- 标注文件:每张图像都配有一份标注文件,文件格式为XML和TXT。
数据集结构示例
假设数据集的根目录为 infrared_ship_dataset,其结构可能如下所示:
infrared_ship_dataset/
├── images/
│ ├── image_0001.jpg
│ ├── image_0002.jpg
│ └── ...
├── annotations_xml/
│ ├── image_0001.xml
│ ├── image_0002.xml
│ └── ...
├── annotations_txt/
│ ├── image_0001.txt
│ ├── image_0002.txt
│ └── ...
└── README.md # 数据集说明
标注格式示例
- XML格式:通常用于Pascal VOC格式的标注,包含图像的基本信息(如大小)以及每个物体的位置信息(边界框坐标)和类别标签。
- TXT格式:类似于YOLO格式的标注,每行代表一个物体的标签,格式如下:
其中:<class_index> <x_center> <y_center> <width> <height><class_index>是物体类别的索引;<x_center>是物体中心点相对于图像宽度的比例位置;<y_center>是物体中心点相对于图像高度的比例位置;<width>是物体宽度相对于图像宽度的比例;<height>是物体高度相对于图像高度的比例。
使用建议
- 数据预处理:根据所使用的检测算法,可能需要将图像统一到相同的分辨率,或者采用数据增强技术以增加模型的鲁棒性。
- 模型训练:选择适合的检测框架(如YOLO、Faster R-CNN等),并根据框架的要求调整标注文件格式。
- 性能评估:在训练过程中,应该定期评估模型在验证集上的表现,以便及时调整模型参数或训练策略。
应用领域
该数据集特别适用于红外成像技术在海防领域的应用,如船舶识别、海上监控、安全防范等。由于红外成像不受光照条件限制,因此在夜间或恶劣天气条件下也能有效工作,非常适合于24小时全天候监控任务。
准备工作
- 安装YOLOv5:确保您已经安装了YOLOv5及其依赖项。
- 准备数据集:确保您的数据集已经按照YOLOv5所需的格式准备好,并且有相应的
data.yaml文件来描述数据集的路径和其他相关信息。
示例代码
安装YOLOv5
如果您还没有安装YOLOv5,请按照官方文档执行以下命令:
git clone https://github.com/ultralytics/yolov5.git # clone repo
cd yolov5
pip install -r requirements.txt # install dependencies
准备data.yaml
创建一个data.yaml文件来描述您的数据集。这里假设数据集被放置在一个名为infrared_ship_dataset的目录中,且包含images和labels子目录。
# data.yaml 文件
train: ../infrared_ship_dataset/images/train/
val: ../infrared_ship_dataset/images/val/
test: ../infrared_ship_dataset/images/test/ # optional
nc: 7 # number of classes
names: ['liner', 'bulk_carrier', 'warship', 'sailboat', 'canoe', 'container_ship', 'fishing_boat'] # class names
训练模型
使用以下命令开始训练模型:
cd yolov5
python train.py --img 640 --batch 16 --epochs 300 --data ../infrared_ship_dataset/data.yaml --weights yolov5s.pt --cache
自定义训练脚本
如果需要更详细的控制,可以编写一个Python脚本来执行训练过程。以下是一个简单的脚本示例:
import torch
from utils.datasets import LoadImagesAndLabels # 导入数据加载器
from models.experimental import attempt_load # 导入模型加载器
from utils.torch_utils import select_device # 导入选用设备的函数
from utils.general import check_dataset # 导入检查数据集的函数
def main():
device = select_device('') # 选择设备,自动选择GPU/CPU
data_yaml = '../infrared_ship_dataset/data.yaml'
train_images_folder = '../infrared_ship_dataset/images/train/'
train_labels_folder = '../infrared_ship_dataset/labels/train/'
val_images_folder = '../infrared_ship_dataset/images/val/'
val_labels_folder = '../infrared_ship_dataset/labels/val/'
# 加载数据集
train_set = LoadImagesAndLabels(train_images_folder, train_labels_folder)
val_set = LoadImagesAndLabels(val_images_folder, val_labels_folder)
# 创建数据加载器
train_loader = torch.utils.data.DataLoader(train_set, batch_size=16, shuffle=True, num_workers=4)
val_loader = torch.utils.data.DataLoader(val_set, batch_size=16, shuffle=False, num_workers=4)
# 加载预训练模型
model = attempt_load('yolov5s.pt', map_location=device) # 加载预训练权重
model.to(device)
# 设置损失函数和优化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# 训练循环
epochs = 300
for epoch in range(epochs):
model.train()
for images, targets, _, _ in train_loader:
images = images.to(device)
targets = [t.to(device) for t in targets]
# 前向传播
outputs = model(images)
# 计算损失
loss = criterion(outputs, targets)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item()}')
torch.save(model.state_dict(), 'trained_model.pt')
print('Training complete.')
if __name__ == '__main__':
main()
注意事项
- 确保
data.yaml文件中的路径是正确的,并且数据集的结构与上面描述的一致。 - 调整批量大小、学习率、迭代次数等超参数以适应您的计算资源和任务需求。
- 如果数据集很大,您可能需要更多的计算资源和时间来完成训练。
- 这个脚本仅作为一个起点,您可能需要根据实际情况做进一步的修改。
这个示例展示了如何使用YOLOv5框架训练一个基于红外图像的船舶检测模型。您可以根据自己的需求调整脚本中的参数和逻辑。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)