受KuiperInfer启发,完全零自制深度学习推理框架,最终部署到Android中。 系统的应用C++、设计模式、编译器和AI框架基础知识,将各个知识点尽量分解到更细的粒度(1-2小时左右的编码工作量),从而更好的掌握上述基础知识。
KuiperInfer: https://github.com/zjhellofss/KuiperInfer
本项目License为MIT License,所有代码副本中都必须包含原作者、版权声明和许可声明。
实现一个图样图森破的推理框架居然可以这么简单?(Done)
再次认识推理框架的组成元素(Done)
创建Tensor
创建Op/Layer的基类
实现1个超简单的算子-Relu
实现1个复杂的算子-FC
是时候用计算图把算子串联起来
计算图打印
计算图接口设计
实现推理框架最简雏形
实现最简的分类测试
使用设计模式重构:Op
使用设计模式重构:计算图打印
实现几个相对复杂的算子(1)-Conv2D
实现几个相对复杂的算子(2)-DepthwiseConv2D
实现几个相对复杂的算子(3)-AveragePool2D
实现几个相对复杂的算子(4)-Squeeze
实现几个相对复杂的算子(5)-Softmax
是时候支持mobilenet了
手动构图有点复杂,是时候支持模型转换了
序列化和反序列的几个库
学会使用flatten buffer
Parser tflite模型
需要加点排序
tflite convertor
mobilenet测试
尝试下Android中运行
为了支持更多的格式,可以重构下parser
支持TF冻结图的基本思路
学会使用protobuf
解析TF冻结图
创建硬件无关的优化Pass基类
增加1个简单Pass-删除算子
增加1个相对复杂Pass-Conv2D转DepthWise
xx. 使用neon优化算子
xx. 添加计算图切分功能
xx. 使用第三方CPU算子库
xx. 使用第三方GPU算子库
软件架构说明(待补充)
(待补充)
(待补充)
(待补充)
参考项目 | 推荐理由 | 链接 |
---|---|---|
OpenCV dnn | OpenCV的推理模块,适配多种硬件后端(OpenVino、TIMVX、华为CANN) | https://github.com/opencv/opencv/tree/4.x/modules/dnn |
华为Ascend CANN ACL | 内存安全和异常保护 | https://gitee.com/cann/acl |
TFLite | 30亿+设备部署,丰富工具链和商用案例 | https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite |
TVM | 通过编译器方式思考和解决问题 | https://github.com/apache/tvm |
华为HiAI DDK | 反例学习代表,可以学习一些反向用法(重复拼凑/内存安全/...解决不了issue就删除issue) | https://gitee.com/huawei-hiai-foundation/hiai_ddk |
... | ... | ... |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。