Mxnet训练自己的数据集并测试

本文详细介绍了如何利用Mxnet进行图片分类模型的训练,包括数据预处理、训练集和测试集的划分、模型定义、训练过程以及模型测试和预测,重点在于数据准备和模型应用。
摘要由CSDN通过智能技术生成

使用Mxnet训练图片分类类器
1、准备数据:
(1)建立一个根目录然后,再为每一个类别的图片建立一个子文件夹,把每一类图片放入对应的子文件夹即可。
--root:
----class1
----class2
......
----classn

首先生成训练集和测试集的list,命令如下:

Python ~/mxnet/tools/im2rec.py --list True --recursive True --train-ratio 0.9 myData /home/xxx/root/

–list:当要生成list文件时,这个参数一定要设为True,表示当前用来生成的list文件;默认是生成rec文件;

–recursive:递归的遍历你的所有数据集,要设为True;

–train-ratio:用来将你的全部数据集拆分成两部分:训练集(train)和交叉验证集(val),具体多少作为训练集,多少作为验证集,就由这个参数来确定;

–test-ratio:同上,分成训练集和测试集两部分;

–exts:这个是你数据的后缀(注,这里我们一般说的图片数据),目前的MXNet只支持两种图片格式:jpg和jpeg。
执行完这个命令,你会发现生成两个文件:myData_train.lst和myData_val.lst
(2)生成rec文件:

python ~/mxnet/tools/im2rec.py –num-thread 4 –pass-through 1 myData /home/xxx/root/

–pass-through: 设为1,即跳过矩阵变换,否则会报错:未知的array type;

myData就是第一步中生成.lst文件的前缀,这里用它来生成rec;

执行完这条命令,你就会看到两个文件:myData_train.rec和myData_val.rec

2、加载训练数据以及验证数据集:

def get_iterators(batch_size, data_shape=(3, 224, 224)):
    train = mx.io.ImageRecordIter(
        path_imgrec         = './ld_train/my_images_train.rec',
        data_name           = 'data',
        label_name          = 'softmax_label',
        batch_size          = batch_size,
        data_shape          = data_shape,
        shuffle             = True,
        rand_crop           = True,
        rand_mirror         = True)
    val = mx.io.ImageRecordIter(
        path_imgrec         = './ld_train/my_images_val.rec',
        data_name           = 'data',
        label_name          = 'softmax_label',
        batch_size          = batch_size,
        data_shape          = data_shape,
        rand_crop           = False,
        rand_mirror         = False)
    return (train, val)
 train,val=get_iterators(128,(3,128,128))#指定Batch_size以及图片大小。

3、定义网络结构:
这里以resnet为例:

'''
Adapted from https://github.com/tornadomeet/ResNet/blob/master/symbol_resnet.py
Original author Wei Wu

Implemented the following paper:

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. "Identity Mappings in Deep Residual Networks"
'''
import mxnet as mx
import numpy as np

def residual_unit(data, num_filter, stride, dim_match, name, bottle_neck=True, bn_mom=0.9, workspace=256, memonger=False):
    """Return ResNet Unit symbol for building ResNet
    Parameters
    ----------
    data : str
        Input data
    num_filter : int
        Number of output channels
    bnf : int
        Bottle neck channels factor with regard to num_filter
    stride : tupe
        Stride used in convolution
    dim_match : Boolen
        True means channel number between input and output is the same, otherwise means differ
    name : str
        Base name of the operators
    workspace : int
        Workspace used in convolution operator
    """
    if bottle_neck:
        # the same as https://github.com/facebook/fb.resnet.torch#notes, a bit difference with origin paper
        bn1 = mx.sym.BatchNorm(data=data, fix_gamma=False, eps=2e-5, momentum=bn_mom, name=name + '_bn1')
        act1 = mx.sym.Activation(data=bn1, act_type='relu', name=name + '_relu1')
        weight = mx.symbol.Variable(name=name + '_conv1_weight', dtype=np.float32)
        weight = mx.symbol.Cast(data=weight, dtype=np.float16)
        c
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
训练自己的数据集,你可以按照以下步骤进行操作: 1. 首先,你可以使用提供的数据集进行训练。这个数据集包含了39张图片,你可以先使用这个数据集进行训练,确保没有问题之后再制作自己的数据集。你可以从生活中收集数据,不一定非要从网上下载。\[1\] 2. 其次,你需要了解fcn(全卷积网络)的算法。你可以在mxnet框架下使用自己的数据来进行模型训练测试。确保你已经安装好了相关的Mxnet环境,并找到了`example/fcn-xs`文件夹下的相关文件。你还需要运行`image_segmentation.py`来确保你的环境设置正确。\[2\] 3. 接下来,你可以开始训练自己的数据集。你可以在我的GitHub地址中找到相关的代码,如果你觉得不错的话,请给个star哈。首先,你需要下载VGG网络的权重参数,并将其放在`./Model_zoo/imagenet-vgg-verydeep-19.mat`路径下。然后,将你自己的数据集放入`./Data_zoo/MIT_SceneParsing/ADEChallengeData2016`文件夹中。在训练时,你需要将`FCN.py`中的全局变量`mode`改为"train",然后运行该文件。在测试时,你需要修改测试函数中的图片地址,并将`mode`改为"test",然后运行即可。\[3\] 希望这些步骤对你有帮助!如果你有任何其他问题,请随时提问。 #### 引用[.reference_title] - *1* [FCN中制作自己的数据集并进行训练](https://blog.csdn.net/Keep_Trying_Go/article/details/126075642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Mxnet(4)-fcn训练自己的数据](https://blog.csdn.net/yiweibian/article/details/70230737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【精!!!!】用FCN训练自己数据集(Tensorflow)](https://blog.csdn.net/qq_40994943/article/details/85041493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值