1 致谢
感谢 友lihe2019提供的资料——《Ubuntu 16.04 Nvidia驱动安装(run方式)》
感谢 友xunan003提供的资料——《ubuntu16.04系统run方式安装nvidia显卡驱动》
2 服务器配置
2.1 服务器硬件配置
独立显卡:NVIDIA GeForce GTX 1660
集成显卡:(无)
2.2 软件环境配置
CUDA: 10.0.130
2.2.1 查看CUDA版本
可以使用代码
2.2 安装Ubuntu-16.04-lts系统
step 1:首先需要在Ubuntu系统的官方 站的可选资料中下载镜像,https://ubuntu.com/download/alternative-downloads,
我们可以获得Ubuntu系统的.iso文件;
step 2:将.iso文件制作成系统U盘,(需要使用U盘),
首先在Windows上安装软件UltraISO,然后打开软件;
step 3:进入工作界面后,点击菜单栏文件(F),在弹出的选项卡里点击打开,选择刚刚下载好的Ubuntu镜像;
分区名 | 大小 | 大小(MB) | 分区类型 | 分区位置 | 分区格式 | 挂载点 |
---|---|---|---|---|---|---|
EFI引导区 | 512MB | – | 主分区 | 起始位置 | EFI系统分区 | – |
swap交换分区 | 32GB 32768MB | 逻辑分区 | – | 交换空间 | – |
2.2.1 安装显卡驱动
step 9: 使用CUDA直接安装显卡驱动失败, 错“code: 256”,于是还是改用“驱动+CUDA”分开进行安装的方式;
step 10: 从Nvidia官 下载显卡的驱动,https://www.nvidia.cn/geforce/drivers/ ;
step 11:禁用nouveau驱动(否则会出现循环登录的问题)
2.2.1.1 检验显卡驱动是否安装成功
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,
然后使用命令,
示例代码如下:
然后输入nvidia-smi看看显卡驱动是否可以正常使用;
安装完成后重启电脑,看看显示界面的分辨率是否恢复正常;
2.2.2 安装CUDA
3 环境迁移
环境迁移速查表:
- CUDA版本保持一致
- 安装conda
- 重现环境(参考:https://zhuanlan.zhihu.com/p/87344422)
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标注转成正矩形标注;
使用的代码为
5 数据读取与预处理
5.1 遥感图像格式读取——.tiff格式等等格式
使用gdal库来读取 .tiff格式的数据;
安装gdal库,
5.1.1 切分图像时需要使用overlap(比例为 50 % 50% 50%)
在切分图像时,需要使用overlap,overlap比例为 50 % 50% 50%;
所以还需要计算步长stride;
5.1.2 切分图像时使用norm的方法处理标签
在切分图像时,使用norm的方法处理标签,也就是将label的矩形框clip到当前窗口的范围之内;
在处理标签时,只保留IoU大于阈值的检测框,(根据赵博士的经验),这里IoU的阈值选择0.8;
5.1.2 关于输入通道数的处理
读取通道数,使用类属性
input单通道: 复制成三通道;
input三通道: 无需进行处理;
input四通道: 删除掉最后一个通道;
5.2 图像预处理
5.2.1 统计直方图是耗时操作
统计直方图是十分耗时的操作,这一点要注意,不要在循环中重复地进行直方图运算;
友王大王也在他的博文《GDAL计算栅格图像统计值相关说明》中写到:

6 模型设计
输入图像:768×768(跟KAS数据集保持一致)
6.1 目标区域分类——shufflenet_v2_x1_0
对于目标区域的分类,我们准备使用shufflenet_v2_x1_0 络模型,它的FPS比较高;
7 数据的可视化
7.1 数值类型转换
在对分割图像进行可视化时,有时需要进行数值类型的转换;
需要进行转换的情况是:当使用PIL显示图像时,出现“PIL TypeError: Cannot handle this data type: (1, 1, 768),
其中一个原因时,数值类型不正确,
因为函数默认接受uint8类型的numpy数组,而如果数值类型是uint16的话,就会出现类型不符合的错误;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!