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: 检验显卡驱动是否安装成功:
- 桌面的分辨率是否显示正常;
- 命令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数据集保持一致)