打印
[开发工具]

【单片机也能玩深度学习】OSlw 视频教程 (持续更新)

[复制链接]
6288|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 PYPL80022602 于 2019-4-12 18:26 编辑

OSlw是一款由C语言编写的小型开源操作系统,内置了一系列机器学习的算法库,可以大幅度提高算法由PC到单片机实现的效率。

算法代码支持3种数据格式:IQmath,单精度浮点,双精度浮点
可运行于:STM32F1(推荐IQmath),STM32F4(推荐单精度),STM32F7(推荐单精度)
MSP430(推荐IQmath),MSP432(推荐单精度)
TI的C2000,C5000,dsPIC等

用户可以自定义多个堆(heap)用于动态内存分配,堆地址,大小完全有用户决定,可任意定义在内部RAM或者外部RAM中,每一个堆由独立结构体管理,查询信息,用户可以自由查询剩余大小,以便进行优化调整。

0.96版本新增:
1)修改了部分内置卷积代码 提高了20%的效率(不使用CBLAS)
2)支持CBLAS库,可以在支持CBLAS的平台上提高性能(主要针对树莓派等)
3)增加了CNN的im2col模式,仅限于前向传递,可以使用im2col+矩阵运算库大幅度提高CNN前向传递性能,im2col模式下支持局部展开,可以在嵌入式设备上减小内存消耗


0.95版本新增:
1)修改矩阵部分部分代码 在树莓派zerow上提高一倍效率
2)增加split层,用以分割数据(可反向传递,没有append函数)(可用于残差网络输入)
3)增加mix层,用以混合(相加)数据(可反向传递,没有append函数)(可用于残差网络输出)
4)增加pad层,已经实现constant模式(可反向传递,有append函数)
5)增加extend层,已经实现nearest模式(可反向传递,有append函数)
6)增加梯度(修改量)限幅功能
7)修改sigmoid与tanh函数实现方法 采用三次样条插值替代 提高速度
8)增加快速exp函数实现方法(包含256点低精度与1024点中等精度)


0.94版本新增:

1)RNN(GRU-RNN)的CELL被修改,灵活性大提高
2)支持LayerNorm层(支持训练),RNN(GRU-RNN)支持含LN层的结果
3)新增Shift层(支持训练),可以来代替训练好的BatchNorm


0.93版本中支持的算法
神经网络算法:
1)支持动态搭建神经网络(在代码中搭建,不用提前在配置软件中配置,经过适当修改甚至可以动态修改神经网络框架)
2)支持普通神经网络(全连接层)
3)支持激活函数包括:sigmoid,tanh,relu,leak-relu,relu6,selu,swish,softmax(用于分类)……
4)支持普通损失函数,支持交叉熵损失函数
5)支持CNN(卷积层,最大值池化与平均值池化)
6)支持RNN,及其LSTM-RNN变种(GRU-RNN)
7)所有层都支持前向运算与训练,支持用户自任意内存空间导入训练好的权重(RAM,外扩RAM,NAND-FLASH,QSPI-FLASH),flash中的参数不能修改
8)支持优化算法包括普通梯度下降法,RMS法,ADAM法等
9)所有层支持用户自定义随机初始化方法,支持均匀分布,正态分布等初始化方法

增强学习算法:
1)支持Qlearning法(可以动态训练)
2)支持DQN算法(可以动态训练)
3)支持DDPG算法(可以动态训练)

随机数算法
1)支持线性同余法
2)支持混沌法(logistics映射,kent映射等)
3)支持MT(梅森旋转)法
。。。。。。

教程中有手把手教你自tensorflow(为主),pytorch中导出权重到单片机上
视频教程同步更新(B站,请自动加上www.):

深度学习篇:
【1】(序章)OSLW: bilibili.com/video/av40797249/
【2】神经网络前向传递: bilibili.com/video/av40797927/
【3】神经网络反向传递与Tensorflow: bilibili.com/video/av40798676/
【4】神经网络初始化(STM32F407): bilibili.com/video/av40901436/
【5】分类问题-异或门(STM32F407):  bilibili.com/video/av41802723/
【6】分类-优化器(STM32F407):  bilibili.com/video/av41804441/
【7】回归+IQmath说明(dsp28069): bilibili.com/video/av41844334/
【8】过拟合与L2正则化(DSP28069):  bilibili.com/video/av41878712/
【9】神经网络数据结构: bilibili.com/video/av41881192/
【10】CNN开篇:  bilibili.com/video/av41996915/
【11】CNN简单分类(STM32F730R8+W25Q16): bilibili.com/video/av42070486/
【12】手把手教你自TensorFlow导出CNN权重:bilibili.com/video/av42103508/
【13】CNN实战手写识别(STM32F730R8+W25Q16):  bilibili.com/video/av42116522/
【14】RNN-8bit加法(STM32F103RE):bilibili.com/video/av42289494/
【15】GRU-RNN 8bit加法(STM32F103RE):  bilibili.com/video/av42291537/
【16】讲解GRU-RNN MNIST手写识别(STM32F103RE):bilibili.com/video/av42289494/
【17】玩玩MNIST手写识别-GRURNN(STM32F103RE):  bilibili.com/video/av42291537/
【18】玩玩MNIST手写识别-CNN(STM32F767ZI) :bilibili.com/video/av44420362
【20】手把手教你从TensorFlow中导出简单模型(STM32F103RE) bilibili.com/video/av45570165
【21】OSlw_v0.94 VS NumPy(矩阵对应相乘):bilibili.com/video/av45727812
【22】OSlw_v0.94 VS NumPy(矩阵乘):bilibili.com/video/av45991140
【23】手把手教你从TensorFlow中导出简单模型(定点数):bilibili.com/video/av46307491/
【24】OSlw_v0.94 VS SciPy(多通道卷积):bilibili.com/video/av46681942/

操作系统篇:
【1】OS内核跳转方法: bilibili.com/video/av43813439/
【2】手把手教你写内核任务-库函数法 :bilibili.com/video/av43942993/
【3】手把手教你写内核任务-switch法:bilibili.com/video/av43965092/
【4】OS中重要的宏定义:bilibili.com/video/av44023346/
【5】OS的内核结构体与函数:bilibili.com/video/av44023382/
【6】OS新建内核任务与延时函数:bilibili.com/video/av44109401/
【7】OS中代码运行测量方法:bilibili.com/video/av44109572/
【8】OS中的瞌睡,闹铃与拍卖功能:bilibili.com/video/av44264859/
【9】OSLW内存分配1(malloc等函数功能分析) bilibili.com/video/av44641143
【10】OSLW内存分配2(函数原理与内存碎片) bilibili.com/video/av44741748
【11】OSLW内存分配3(简单内存分配与派生) bilibili.com/video/av44911797/
【12】OSLW内存分配4(映射与链表) bilibili.com/video/av45405419/
【13】OSLW内存分配5(实验) bilibili.com/video/av47197579/
【14】OSLW软件定时器与标志组 bilibili.com/video/av47581468/

简单实例:

联系方式,可在B站内私信或者邮箱
Email:shuep_418_slw@outlook.com

源代码
github.com/Shuep418Slw/OSlw_Code

demo代码
github.com/Shuep418Slw/OSlw_Example



MNIST-GRURNN.jpg (369.25 KB )

GRU-RNN-MNIST(STM32F103-IQmath)

GRU-RNN-MNIST(STM32F103-IQmath)

MNIST-CNN.jpg (266.61 KB )

CNN-MNIST(STM32F730-float)

CNN-MNIST(STM32F730-float)
评论
PYPL80022602 2019-4-14 16:20 回复TA
深度学习之风格转换已经在B站上线,有兴趣的小伙伴可以看一下 
PYPL80022602 2019-4-12 18:28 回复TA
0.96版本已经更新,增加了CBLAS模式,大幅度提升在树莓派等平台的速度,有兴趣可去github关注一下 
PYPL80022602 2019-4-2 13:26 回复TA
0.95版本已经更新,增加了比较多的新特性,有兴趣可去github关注一下 
PYPL80022602 2019-3-28 19:34 回复TA
OSLW软件定时器与标志组视频已经上线,接下来应该是消息队列 
PYPL80022602 2019-3-24 16:12 回复TA
OSLW内存分配5(实验)已经上线,接下来应该更新的是消息队列或者标志组,之前OSLW pk scipy多通道卷积对比结果也已经出炉,接下来可能对比应该opencv中的二维卷积 
PYPL80022602 2019-3-15 10:33 回复TA
手把手教你从TensorFlow中导出简单模型(定点数)已经上线,有兴趣的小伙伴可以看一下 
PYPL80022602 2019-3-11 16:36 回复TA
OSlw_v0.94 VS NumPy(矩阵乘) 视频已经发布 这次比较的是矩阵乘,看来numpy的执行效率还是相当可以的 
xouou_53320 2019-2-3 16:02 回复TA
厉害了我的哥 
评分
参与人数 1威望 +1 收起 理由
xouou_53320 + 1 赞一个!
沙发
hanzhen654| | 2019-1-31 19:59 | 只看该作者
这个教程不错,希望可以继续更新

使用特权

评论回复
板凳
hanzhen654| | 2019-1-31 20:00 | 只看该作者
CNN 手写数字识别希望可以提高一下准确率

使用特权

评论回复
评论
PYPL80022602 2019-1-31 21:07 回复TA
现在TensorFlow,测试下来的准确率是98.5(用了dropout),因为我将全连接层的第一层神经元数量消减到256,不然W25Q16存不下,换W25Q128准确率可以进一步提高 
地板
PYPL80022602|  楼主 | 2019-2-1 18:28 | 只看该作者
【14】【15】RNN部分已经更新,采用STM32F103RE

使用特权

评论回复
5
PYPL80022602|  楼主 | 2019-2-3 10:18 | 只看该作者
【16】【17】 GRURNN玩手写识别已经更新,有兴趣的小伙伴支持一下

使用特权

评论回复
6
guanliulong| | 2019-2-10 21:09 | 只看该作者
支持楼主出更好的

使用特权

评论回复
7
hexenzhou| | 2019-2-11 10:54 | 只看该作者
厉害了,楼主。

使用特权

评论回复
8
PYPL80022602|  楼主 | 2019-2-16 23:55 | 只看该作者
0.94版本已经更新
视频中demo代码(包括CNN,RNN,CNN-MNIST,RNN-MNIST)都已经更新至
github.com/Shuep418Slw/OSlw_Example
考虑到完整工程比较大,只上传了核心代码(包括TensorFlow的),但移植应该没问题

使用特权

评论回复
9
PYPL80022602|  楼主 | 2019-2-19 11:31 | 只看该作者
操作系统篇教程已经开始更新,敬请期待

使用特权

评论回复
10
740071911| | 2019-2-20 12:58 | 只看该作者
厉害了我的哥,抽空研究一下

使用特权

评论回复
11
PYPL80022602|  楼主 | 2019-2-21 17:08 | 只看该作者
操作系统篇 6,7,8已经更新,分别说明新建内核任务,延时,闹铃,瞌睡,拍卖函数的使用方法,进一步提高OS系统的实时性。
后面几讲将会说明OSLW中的内存管理方法,请大家期待

使用特权

评论回复
12
PYPL80022602|  楼主 | 2019-2-23 14:18 | 只看该作者
玩玩MNIST-CNN已经更新:bilibili.com/video/av44420362
有兴趣的小伙伴可以去看一下

使用特权

评论回复
13
Harvard| | 2019-2-23 15:11 | 只看该作者
关注一下 . 终于有人把人工智能和单片机相结合了

使用特权

评论回复
14
狼烟客| | 2019-2-23 17:04 | 只看该作者
厉害,持续关注

使用特权

评论回复
15
PYPL80022602|  楼主 | 2019-2-26 15:17 | 只看该作者
OSLW内存分配1,2 视频教程已经更新(原理性讲解,可能比较无聊
视频中的串口调试助手(QT)源代码也已经在github中更新

使用特权

评论回复
16
quickman| | 2019-2-26 22:41 | 只看该作者
                                   

使用特权

评论回复
17
jstgotodo| | 2019-2-26 22:41 | 只看该作者
OSlw 是什么内容呢  

使用特权

评论回复
18
iamaiqiyi| | 2019-2-26 22:42 | 只看该作者
C语言编写的小型开源操作系统厉害了。   

使用特权

评论回复
19
dzfansman| | 2019-2-26 22:42 | 只看该作者
跟ucos有什么不同吗?        

使用特权

评论回复
20
sanxingnote7| | 2019-2-26 22:42 | 只看该作者
谢谢分享。                    

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

26

帖子

1

粉丝