# KuiperCourse
![KuiperInfer-logo](https://picx.zhimg.com/v2-ba937e1485bdd863a237b42bb1909e9f_1440w.jpg?source=172ae18b)
## 介绍
此GitHub项目是一个初学者的深度学习框架,使用C++编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能:
* 计算图:使用计算图来描述深度学习模型的计算过程,利用计算图将神经网络的计算过程视为一个有向无环图。通过构建计算图,可以将深度学习模型转化为一系列的计算节点,通过节点之间的连接来表达模型的计算逻辑,使得计算过程可视化并易于维护和优化。
* 张量:使用Tensor类封装张量,支持float类型数据,并提供了访问张量属性和元素的接口以及一些查询、修改张量属性的函数。在计算图中,使用张量来表示各个操作的输入和输出,将神经网络中的所有数据表示为张量,以支持并行计算。
* 前向传播:实现了基础的前向传播。可以自定义神经网络结构,如添加层、激活函数等。
* 易于扩展:模块化设计使得用户可以轻松地添加新的模块或算法,以适应不同的任务需求。
通过学习和使用这个项目,用户可以深入了解计算图、张量、前向传播,使用C++构建简单的深度学习框架。
同时,本项目也为用户提供了一个基础框架,以便他们可以更全面地研究、开发和部署深度学习算法。
## 开发环境
- 系统:ubuntu 22.04
- 开发语言:C++ 17
- 数学库:Armadillo + OpenBlas
- 加速库:OpenMP
- 单元测试:Google Test
- 性能测试:Google Benchmark
- 其他:opencv + glog
## 搭建环境
### 使用Linux对应发行版的包管理器安装必要的组件
- Fedora & Red Hat: cmake, openblas-devel, lapack-devel, arpack-devel, SuperLU-devel
- Ubuntu & Debian: cmake, libopenblas-dev, liblapack-dev, libarpack2-dev, libsuperlu-dev
Ubuntu:
```bash
sudo apt update
sudo apt install cmake libopenblas-dev liblapack-dev libarpack2-dev libsuperlu-dev
```
### armadillo-11.4.2(背后调用OpenBlas)的编译安装
- 源码下载地址:https://arma.sourceforge.net/docs.html
- 安装:
```bash
mkdir build
cd build
cmake ..
make -j8
sudo make install
```
### Glog日志库和GTest测试库的编译安装
源码下载地址:
- https://github.com/google/googletest
- https://github.com/google/glog
先安装glog,再安装gtest,两者之间有依赖关系。
```bash
git clone https://github.com/google/glog.git
cd glog
mkdir build
cd build
cmake ..
make -j8
sudo make install
```
```bash
git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cd build
cmake ..
make -j8
sudo make install
```
### Google Benchmark的编译安装
```bash
git clone https://github.com/google/benchmark.git
git clone https://github.com/google/googletest.git benchmark/googletest
cd benchmark
mkdir build && cd build
cmake ..
make -j2
sudo make install
```
### opencv的安装
```bash
sudo apt install libopencv-dev
```
## 本项目的编译
本项目是对b站上的课程[KuiperCourse第14次课程](https://www.bilibili.com/video/BV1xs4y1J7t2/)代码的解读,详细分析请看`tutorials`文件夹下的文件。
```bash
git clone https://github.com/zjhellofss/KuiperCourse.git
cd KuiperCourse
git checkout thirteen
mkdir build && cd build
cmake ..
make -j2
```
也可以使用Clion进行编译。
## 未来工作
1. 移植并实现任意一个深度学习模型,需要附加 demo 程序供演示。模型需要的 PNNX 文件获取方法,请自行参考 PNNX 项目
2. 优化任意一个或多个算子,使得运行速度在本机上加快 5%以上。时间测评以 Google Benchmark 框架为准,该框架使用方法请自行查阅。
3. 预研 Kuiperinfer 上的量化方法,并根据实际情况完成一个(含)以上算子的 int8 量化实现,推荐阅读资料 https://github.com/BUG1989/caffe-int8-convert-tools
4. 支持 Kuiperinfer 的Python API,推荐使用 Pybind 实现。
5. 优化 Kuiperinfer 的运行时需要的内存空间,使得总体资源消耗减少 5% 以上。推荐从算子输出空间复用着手(不同算子执行时空不同,它们的输出空间理论上可以复用)。
6. 预研 Kuiperinfer 上的算子并行方法(并行算子调度),并根据个人实际情况写出它的对应实现。
与作者进行交流:将整个项目的代码、实验报告、预研文档(如果有的话)打包发送到邮箱 hellofss@foxmail.com。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-基于C++的深度学习前向推理框架.zip (213个子文件)
Kuiper.ubuntu.kg.log.INFO.20230514-215955.1922 3KB
Kuiper.ubuntu.kg.log.INFO.20230429-155109.8251 3KB
Kuiper.ubuntu.kg.log.ERROR.20230429-155113.8251 334B
Kuiper.ubuntu.kg.log.WARNING.20230429-155113.8251 334B
Kuiper.ubuntu.kg.log.INFO.20230429-155409.8481 3KB
Kuiper.ubuntu.kg.log.ERROR.20230429-155433.8481 254B
Kuiper.ubuntu.kg.log.WARNING.20230429-155433.8481 254B
Kuiper.ubuntu.kg.log.INFO.20230429-155559.8704 3KB
resnet18_batch1.pnnx.bin 44.58MB
yolov5s.pnnx.bin 27.96MB
ten.pnnx.bin 18.68MB
yolov5n_small.pnnx.bin 7.23MB
ompver_CXX.bin 16KB
ompver_C.bin 16KB
CMakeDetermineCompilerABI_CXX.bin 16KB
CMakeDetermineCompilerABI_C.bin 16KB
test.pnnx.bin 522B
CMakeCCompilerId.c 24KB
OpenMPCheckVersion.c 609B
OpenMPTryFlag.c 172B
cmake.check_cache 85B
CMakeCXXCompiler.cmake 5KB
DependInfo.cmake 4KB
Makefile.cmake 4KB
cmake_clean.cmake 3KB
CMakeCCompiler.cmake 2KB
cmake_install.cmake 2KB
cmake_install.cmake 1KB
DependInfo.cmake 985B
CMakeDirectoryInformation.cmake 634B
CMakeDirectoryInformation.cmake 634B
cmake_clean.cmake 512B
CMakeSystem.cmake 402B
CTestTestfile.cmake 287B
CTestTestfile.cmake 281B
ir.cpp 76KB
CMakeCXXCompilerId.cpp 24KB
runtime_ir.cpp 18KB
tensor.cpp 15KB
convolution.cpp 14KB
yolo_detect.cpp 10KB
test_yolov5.cpp 8KB
store_zip.cpp 8KB
maxpooling.cpp 8KB
parse_expression.cpp 7KB
runtime_op.cpp 6KB
linear.cpp 6KB
adaptive_avgpooling.cpp 5KB
expression.cpp 5KB
upsample.cpp 4KB
param_layer.cpp 4KB
test_resnet.cpp 4KB
flatten.cpp 4KB
cat.cpp 3KB
relu.cpp 2KB
load_data.cpp 2KB
silu.cpp 2KB
softmax.cpp 2KB
layer_factory.cpp 1KB
layer.cpp 1KB
OpenMPCheckVersion.cpp 609B
test_main.cpp 351B
OpenMPTryFlag.cpp 172B
21.csv 4.63MB
31.csv 4.63MB
41.csv 4.63MB
11.csv 4.63MB
2.csv 4.63MB
3.csv 4.63MB
4.csv 4.63MB
1.csv 4.63MB
out.csv 9KB
data1.csv 44B
data2.csv 32B
test_resnet.cpp.o.d 61KB
test_yolov5.cpp.o.d 61KB
convolution.cpp.o.d 47KB
maxpooling.cpp.o.d 47KB
runtime_ir.cpp.o.d 47KB
layer_factory.cpp.o.d 47KB
expression.cpp.o.d 47KB
yolo_detect.cpp.o.d 47KB
linear.cpp.o.d 46KB
silu.cpp.o.d 46KB
adaptive_avgpooling.cpp.o.d 46KB
upsample.cpp.o.d 46KB
flatten.cpp.o.d 46KB
relu.cpp.o.d 46KB
cat.cpp.o.d 46KB
param_layer.cpp.o.d 46KB
softmax.cpp.o.d 46KB
layer.cpp.o.d 46KB
runtime_op.cpp.o.d 46KB
tensor.cpp.o.d 46KB
load_data.cpp.o.d 45KB
test_main.cpp.o.d 15KB
parse_expression.cpp.o.d 11KB
ir.cpp.o.d 10KB
store_zip.cpp.o.d 7KB
Kuiper.ERROR 47B
共 213 条
- 1
- 2
- 3
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功