舰船目标检测的学习笔记

1 致谢

感谢网友lihe2019提供的资料——《Ubuntu 16.04 Nvidia驱动安装(run方式)》
感谢网友xunan003提供的资料——《ubuntu16.04系统run方式安装nvidia显卡驱动》

2 服务器配置

2.2.1 安装显卡驱动

step 9: 使用CUDA直接安装显卡驱动失败,报错“code: 256”,于是还是改用“驱动+CUDA”分开进行安装的方式;
step 10: 从Nvidia官网下载显卡的驱动,https://www.nvidia.cn/geforce/drivers/
step 10: 检验显卡驱动是否安装成功:

  1. 桌面的分辨率是否显示正常;
  2. 命令nvidia-smi是否可以正常使用。

2.2.2 Ubuntu-16.04系统更新之后显卡驱动出现异常

Ubuntu-16.04在系统更新之后可能会出现异常,具体表现为,
输入nvidia-smi,出现以下输出,

Terminal outputs:
NVIDIA-SMI has failed because it couldn‘t communicate with NVIDIA driver. Make sure that the latest driver is installed and running.

目前不知道出现这种异常的原因,解决方法是参考的博文《Ubuntu 16.04 Nvidia驱动安装(run方式)》
需要安装dkms,

sudo apt-get install dkms

然后使用命令,

sudo dkms install -m nvidia -v gpu-driver-number

示例代码如下:

sudo dkms install -m nvidia -v 450.07

然后输入nvidia-smi看看显卡驱动是否可以正常使用;
安装完成后重启电脑,看看显示界面的分辨率是否恢复正常;

3 安装第三方软件依赖

4 数据集收集

4.1 HRSC2016数据集

我们暂时不使用HRSC2016数据集,该数据集的目标尺寸太大了,(一张图里面大概只有1到2个目标),我们的任务的目标比较小;

4.2 Kaggle-Airbus-Ship:Kaggle舰船检测比赛的数据集

我们就用这个数据集来做预训练;
数据集地址:https://www.kaggle.com/c/airbus-ship-detection/data

4.2.1 数据集特点

图像尺寸全部相同,且为768×768;

4.2.2 标注文件的格式——RLE编码

在Kaggle-Airbus-Ship(KAS)中,标注信息的格式是“run-length encoding format”,所以还需要单独进行解析;
由于KAS数据集是一个二分类问题,标注图像相当于是一个二值图像,所以可以使用游程编码来对标注信息进行编码;
对于标注格式的解析,可以参考
repo:https://github.com/pascal1129/kaggle_airbus_ship_detection/blob/master/0_rle_to_coco/0_csv_show_RLE.py

4.2.3 预训练数据预处理——将mask标注转成正矩形标注

我们使用OpenCV来进行这样的处理:将mask标注转成正矩形标注;
使用的代码为

contours, hierarchy = cv2.findContours(all_masks, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# 参数解释:
# cv2.RETR_EXTERNAL:取二值区域的外轮廓,(不会检测内轮廓)
# cv2.CHAIN_APPROX_NONE:将物体边界上所有连续的轮廓点保存到contours向量内

5 数据读取与预处理

5.1 遥感图像格式读取——.tif格式等等格式

使用gdal库,

6 模型设计

输入图像:768×768(跟KAS数据集保持一致)

猜你喜欢

转载自blog.csdn.net/songyuc/article/details/108118622