LuoJiaAI学习笔记——3.使用LuoJiaNET进行遥感场景分类(VGGNet)

文章介绍了使用LuoJiaNET基于VGGNet进行遥感场景分类的过程,包括下载WHU-RS19数据集,修改配置文件,处理训练中遇到的库缺失、mindir文件不存在、冗余文件等错误,以及如何进行模型训练、测试和预测。训练结果和预测结果显示了模型的性能。
摘要由CSDN通过智能技术生成

使用LuoJiaNET进行遥感场景分类(VGGNet)

下载数据集

本文使用由武汉大学于2012年发布的WHU-RS19数据集(提取自Google Earth)
该数据集包含19种土地利用类型的遥感影像

修改配置文件

from easydict import EasyDict as ed
'''
You can forward the following directory structure from your dataset files and read by LuoJiaNet's API.

    .. code-block::

        .
        └── image_folder_dataset_directory
             ├── class1
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── class2
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── class3
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── classN
             ├── ...
'''
config = ed({
    "device_target":"GPU",      #GPU或CPU
    "dataset_path": "/lvdongrui/WHU-RS19/RSDataset",  #数据存放位置
    "save_checkpoint_path": "./checkpoint",  #保存的参数存放位置
    "resume":False,   #是否载入模型训练
    "class_num": 19,  #数据集中包含的种类
    "batch_size": 8,
    "loss_scale": 1024,
    "momentum": 0.9,
    "weight_decay": 1e-5,
    "epoch_size": 100, #训练次数
    "save_checkpoint": True, #是否保存模型
    "save_checkpoint_epochs": 1, #多少次迭代保存一次模型
    "keep_checkpoint_max": 5, #文件内保存模型的最大个数,超过则删掉最开始的
    "opt": 'rmsprop', #优化器:rmsprop或sgd
    "opt_eps": 0.001, 
    "warmup_epochs": 50, #warmup训练策略
    "lr_decay_mode": "warmup", #学习率衰减方式:steps、poly、cosine以及warmup
    "use_label_smooth": True, 
    "label_smooth_factor": 0.1,
    "lr_init": 0.0001, #初始学习率
    "lr_max": 0.1, #最大学习率
    "lr_end": 0.00001 #最小学习率
})

发起训练

python /luojianet-master/model_zoo/rs_scene_classification/VGG/train.py

报错1

缺失库报错

Traceback (most recent call last):
  File "train.py", line 15, in <module>
    from config import config
  File "/lvdongrui/luojianet-master/model_zoo/rs_scene_classification/VGG/config.py", line 1, in <module>
    from easydict import EasyDict as ed
ModuleNotFoundError: No module named 'easydict'

安装对应库

pip install easydict

报错2

mindir 文件未存在报错

[ERROR] OPTIMIZER(750,7f2076abb740,python):2023-04-27-04:16:43.534.680 [luojianet_ms/ccsrc/frontend/optimizer/ad/kprim.cc:172] CheckBpropHash] The bprop mindir files are not up to date. Please run the /root/anaconda3/envs/luojia_py375/lib/python3.7/site-packages/luojianet_ms/ops/_grad/../bprop_mindir/generate_mindir.py to generate new mindir files.

按照提示生成文件

python /root/anaconda3/envs/luojia_py375/lib/python3.7/site-packages/luojianet_ms/ops/_grad/../bprop_mindir/generate_mindir.py

报错3

冗余文件报错

[ERROR] MD(750,7f1e0cff5700,python):2023-04-27-04:16:42.185.794 [luojianet_ms/ccsrc/minddata/dataset/util/task_manager.cc:218] InterruptMaster] Task is terminated with err msg(more detail in info level log):Unexpected error. map operation: [RandomCropDecodeResize] failed. The corresponding data files: /lvdongrui/WHU-RS19/RSDataset/Beach/Thumbs.db. Decode: image decode failed.
Line of code : 510
File         : /home/xx/LuoJiaNET_INSTALL/luojianet/luojianet_ms/ccsrc/minddata/dataset/kernels/image/image_utils.cc

原数据文件夹内并没有Thumbs.db这个文件,但将数据传送到服务器后便产生了这个文件,删除所有类别文件夹(有的并不存在冗余文件)下的Thumbs.db即可

报错4

冗余文件报错

[ERROR] MD(2021,7f610f7fe700,python):2023-04-28-07:43:03.771.801 [luojianet_ms/ccsrc/minddata/dataset/util/task_manager.cc:218] InterruptMaster] Task is terminated with err msg(more detail in info level log):Unexpected error. Invalid file found: /lvdongrui/WHU-RS19/RSDataset/Beach/.ipynb_checkpoints, should be file, but got directory.
Line of code : 276
File         : /home/xx/LuoJiaNET_INSTALL/luojianet/luojianet_ms/ccsrc/minddata/dataset/core/tensor.cc

在这里插入图片描述

原数据文件夹内并没有.ipynb_checkpoints这个文件夹,但运行训练脚本时会产生这个隐藏文件夹,删除所有类别文件夹(有的并不存在冗余文件)下的.ipynb_checkpoints即可

模型开始训练

在这里插入图片描述

测试

python eval.py --dataset_path /lvdongrui/WHU-RS19/RSDataset_test1 --checkpoint_path ./checkpoint/model/net-100_101.ckpt --device_target GPU
  • 测试集数据格式应当和训练集相同
        └── image_folder_dataset_directory
             ├── class1
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── class2
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── class3
             │    ├── 000000000001.jpg
             │    ├── 000000000002.jpg
             │    ├── ...
             ├── classN
             ├── ...
  • 模型路径精确到ckpt文件

测试结果

输出为验证集的top-1和top-5精度指标

result: {'Loss': 2.9474989849588145, 'Top_1_Acc': 0.05434782608695652, 'Top_5_Acc': 0.266304347826087} ckpt= ./checkpoint/model/net-100_101.ckpt

预测

python test.py --input_file /lvdongrui/WHU-RS19/industrial_10.jpg --output_folder ./output --checkpoint_path ./checkpoint/model/net-100_101.ckpt --classes_file ./classes.txt --device_target GPU
  • –classes_file 为场景类别文件,classes.txt文本文件中是所包含的类别名称
    在这里插入图片描述

  • 在output_folder目录先输出与输入图像名一致的json文件
    在这里插入图片描述

预测结果

输出结果为该影像对应top-5的类别、对应ID以及概率,我们预测的图像类型为Industrial,可见预测正确

{'title': 'Top-1', 'class_num': 8, 'class_name': 'Industrial', 'class_prob': 0.06119900196790695}
{'title': 'Top-2', 'class_num': 16, 'class_name': 'Residential', 'class_prob': 0.061108022928237915}
{'title': 'Top-3', 'class_num': 15, 'class_name': 'railwaystation', 'class_prob': 0.05867236852645874}
{'title': 'Top-4', 'class_num': 7, 'class_name': 'Forest', 'class_prob': 0.05529048293828964}
{'title': 'Top-5', 'class_num': 6, 'class_name': 'footballfield', 'class_prob': 0.05503586307168007}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值