查看: 6692|回复: 4

AI实战の电磁智能车(续)——数据处理,训练详解

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3301

    主题

    6548

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32040
    最后登录
    2024-4-28
    发表于 2020-2-27 09:32:33 | 显示全部楼层 |阅读模式
    AI实战の电磁智能车(续)——数据处理,训练详解


    前文介绍了AI算法在电磁智能车上的应用。有的同学反馈:光看文档不够过瘾。特别是当前疫情气焰嚣张,大部分同学被困在家里,无法施展。小编非常感同身受,大家都憋得很辛苦。所以决定把数据和训练脚本开放出来,大家可以基于我们的数据,设计并训练自己的模型。


    网盘链接:


    https://pan.baidu.com/s/1k5Fthvd6YxexhbmooGE3Dg


    提取码:yk9m。


    网盘中文件包括:原始数据文件(txt)、数据处理脚本、模型训练脚本。


    实际操作步骤是:


        1.运行数据处理脚本生成训练数据集,测试数据集;
        2.运行训练脚本训练模型。




    数据文件:normal.txt(导航算法抓取数据),manual.txt(手动控制抓取的数据),random.txt(随机干扰抓取的数据)。数据格式如下:
     
    字节1
    字节2
    字节3
    字节4
    字节5
    字节6
    字节7
    字节8
    字节9
    字节10
    字节11
     
    时间高八位
    时间第八位
    电感1
    电感2
    电感3
    电感4
    电感5
    电感6
    电感7
    舵机值
    固定值
    数据类型
    uint16
    int8
    int8
    int8
    int8
    int8
    int8
    int8
    int8
     
    数据说明
    单位2ms
    电感数据已经转换为-128至+127
    舵机值已经转换为-128至+127
     
     
    0x00
    0x01
    0xAE
    0xC7
    0x09
    0xD8
    0xB8
    0xB7
    0xBB
    0x00
    0x5A
    数据处理脚本:train_data_convert.py。


    python train_data_convert.py -b 1 -f normal.txt


    这个脚本从txt中读取数据,经过一阶滤波处理,按照模型设计的数据结构生成两个数据集文件:ad_origin_normal.npy和pwm_origin_normal.npy,分别代表模型的输入数据AD值,和输出标签PWM转向值。三个txt经过数据处理后生成3组数据集文件,之后运行concatenate.py脚本,合并数据集并生成测试集和训练集。


    有了测试集、训练集就可以训练模型了。


    运行命令python sc_keras.py -a dense -ad 1


    从脚本代码可以看到,我们脚本里有两种模型,一个是纯Dense层组成,一个有CNN+Dense。经过我们训练分析,纯Dense层的模型精度更好,计算更简单,资源更小。大家可以开动脑筋,设计自己的模型,比如引入惯性参数:本次的结果作为下次计算的输入参数之一。


    由于本模型相对简单,对训练环境要求相对简单。小编的笔记本没有显卡也毫无压力。一个小时训练了77次。软件环境:Python 3.7.3, Keras 2.2.4, Tensorflow 1.13.1
    79.png
    经过多轮训练,生成模型文件smartcar_ad_dense_drop_025_adSize_1_nobn.h5。


    由于脚本支持了断点续练的功能,如果大家修改了数据或模型,可以在输入命令时加 -r 参数,重新训练模型。(这里安利一款特别好用的模型查看工具Netron:http://github.com/lutzroeder/netron通过这个工具可以很方便的查看模型的结构,参数等)。


    有了这些数据和工具,同学困在家中也能学习AI模型设计,但请注意我们开放的数据仅适用于我们的测试赛道,我们的小车。通过我们的数据训练的模型,不一定能够适用于你们的小车以及你们的赛道。同学们肯定有疑问了,数据不一致,那怎么保证我们在学校训练的模型能够用于真实比赛呢?这也是我们和赛制组织者下一步要重点解决的问题。


    作者:张岩@NXP               文章出处:恩智浦MCU加油站

    签到签到
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    3
    最后登录
    2020-2-29
    发表于 2020-2-29 03:57:34 | 显示全部楼层
    请问一下,我在训练模型的时候出现了这个错误怎么解决,AttributeError: 'RepeatedCompositeFieldContainer' object has no attribute 'append'我并没有找到什么属性错误。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-11 15:24
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    主题

    38

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    266
    最后登录
    2022-12-14
    发表于 2020-3-2 19:23:04 | 显示全部楼层
    我在training的时候遇到关于reshape报错,多次针对性尝试无果想请教一下
    捕获.PNG
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    3
    最后登录
    2020-3-3
    发表于 2020-3-3 14:02:27 | 显示全部楼层
    ljoson 发表于 2020-3-2 19:23
    我在training的时候遇到关于reshape报错,多次针对性尝试无果想请教一下

    4068*10*1*7!=284795
    应该是有些bug,试一下修改x_train的大小
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-11 15:24
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    主题

    38

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    266
    最后登录
    2022-12-14
    发表于 2020-3-3 15:50:21 | 显示全部楼层
    asdjfhsjdak 发表于 2020-3-3 14:02
    4068*10*1*7!=284795
    应该是有些bug,试一下修改x_train的大小

    应该在哪里进行操作呢,concatenate.py?还没有太熟练
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 17:56 , Processed in 0.130626 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表