2021腾讯犀牛鸟开源人才培养计划
开源项目介绍
滑至文末报名&提交项目Proposal
ncnn项目介绍
ncnn是一个为手机端极致优化的高性能神经网络前向计算框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。
ncnn项目导师介绍
倪辉
ncnn作者
导师寄语:
ncnn是业界知名的AI推理框架,社区支持很好,参与研发是能学到知识和技术的,导师会很耐心帮助你的,对吧对吧!
ncnn相关资料
????ncnn项目地址:https://github.com/Tencent/ncnn
????ncnn开发的超赞项目集:
https://github.com/zchrissirhcz/awesome-ncnn
????如何贡献代码:https://gist.github.com/nihui/17c06998c59cb7d84bb327e70bd187f3
????学习文档:
https://github.com/Tencent/ncnn/wiki/faq
https://github.com/Tencent/ncnn/wiki
????ncnn模型部署、使用教学、源码解读:
https://www.zhihu.com/search?q=ncnn&type=content
Welcome to advocate your proposal !
欢迎发出您的提案!
ncnn项目实战任务
(具体任务以实战阶段导师布置为准)
编程任务
项目(一):
ncnn MacOS 和 iOS 平台的 Mat 转换
Brief Explanation:
android Bitmap 对象的转换函数已经有了,但对应的 MacOS 和 iOS 的转换函数还没有。我们提议本项目,为 MacOS 和 iOS 平台添加的图像对象与ncnn::Mat互转的方便函数。此外,必须有测试和文档确保可维护性。
期望结果:
ncnn::from_apple_cgimage 和 ncnn::to_apple_cgimage
ncnn::from_macos_nsimage 和 ncnn::to_macos_nsimage
ncnn::from_ios_uiimage 和 ncnn::to_ios_uiimage
测试和文档
预备知识:
C++ / Objective-C
图像处理
难度:简单/中等
导师:nihui
项目(二):
ncnn Mat pixel 类型 RGB565 和 convert_color 函数
Brief Explanation:
在移动设备上,RGB565 是很常见用于原生窗口缓冲区的格式。RGB565 相较于 RGBA8888 节省了内存使用。我们提议本项目,增加 RGB565 pixel 格式的转换,并提供加速的 pixel 处理函数。此外,必须有测试和文档确保可维护性。
期望结果:
ncnn::from_pixels 和 ncnn::to_pixels 获得 RGB565 支持
ncnn::convert_color 支持各种 pixel 格式转换
测试和文档
预备知识:
C++
图像处理
难度:简单/中等
导师:nihui
项目(三):ncnn 支持 AVX only CPU
Brief Explanation:
有些 CPU 不具备 AVX2 和 FMA 指令集。这种情况下,ncnn 会回退到 SSE2 的优化代码。我们提议本项目,ncnn 添加 AVX-only 的 kernel 实现,以便在这些芯片上享受到 AVX 的加速效果。此外,必须有测试和文档确保可维护性。
期望结果:
在 AVX-only CPU 上自动使用 AVX-only 优化的层
可观的速度提升
测试和文档
预备知识:C++
难度:中等
导师:nihui
项目(四):
ncnn 改善 simpleomp (openmp 运行时)
Brief Explanation:
simpleomp 是最小化的 openmp 运行时实现,主要用于 WebAssembly。它可以在没有 openmp 运行时库的平台中带来多线程加速。我们提议本项目,改善 simpleomp 线程池实现,如利用 spinlock 和 futex 扩展。此外,必须有测试和文档确保可维护性。
期望结果:
set_kmp_blocktime 接口
在小型模型上有可观的速度提升
测试和文档
预备知识:C++、Linux
难度:简单/中等
导师:nihui
项目(五):
ncnn 更好的 android vulkan 相机帧导入和渲染
Brief Explanation:
GPU 是个适合用作图像处理和机器学习的运算设备。对于实时处理,我们应当尽可能减少影响效率的 CPU-GPU 数据拷贝。VK_ANDROID_external_memory_android_hardware_buffer是新的 vulkan 扩展,在 android 平台上可以用该扩展访问相机捕获到的帧像素。然而,编写原生的 vulkan 代码相当困难。我们提议本项目,实现一套简单易用的高层 API 用作 Android vulkan 与 ncnn 交互。此外,必须有测试和文档确保可维护性。
期望结果:
好用的高层 API,用导入 AHardwareBuffer 到 VkMat 或 VkImageMat
好用的高层 API,用于渲染 VkMat 或 VkImageMat 到 ANativeWindow
端到端 vulkan GPU 处理的 android 示例应用程序
测试和文档
预备知识:C++、Android、Vulkan
难度:中等/高级
导师:nihui
项目(六):
ncnn RISC-V V-extension 优化
Brief Explanation:
RISC-V Vector 扩展是 RISC-V SIMD 指令集。ncnn 已经实现了 RISC-V 代码优化的基础架构,但缺少 RISC-V 相关优化。我们提议本项目,为 ncnn 添加 RISC-V kernel 实现,让这些芯片可以享受到 RISC-V Vector 扩展带来的浮点计算加速。此外,必须有测试和文档确保可维护性。
期望结果:
为 RISC-V 架构实现一些优化的 kernel
测试和文档
预备知识:C++、RISC-V 汇编
难度:高级
导师:nihui
项目(七):
ncnn 3D 卷积神经网络
Brief Explanation:
3D CNN 算子常用在视频处理模型中。当前 ncnn 不支持 3D 算子。我们提议本项目,做出必要的数据结构更改和算子实现,实现基本的 3D CNN 模型的部署。此外,必须有测试和文档确保可维护性。
相关 issue:
Tencent/ncnn#637
➡️https://github.com/Tencent/ncnn/issues/637
Tencent/ncnn#889
https://github.com/Tencent/ncnn/issues/889
Tencent/ncnn#1358
https://github.com/Tencent/ncnn/issues/1358
Tencent/ncnn#1726
https://github.com/Tencent/ncnn/issues/1726
期望结果:
扩展 ncnn::Mat d(depth) 成员
实现最简单的 Convolution3D Pooling3D BatchNorm3D 和一些 3D 激活算子
为 caffe/onnx/MLIR等转换器添加 3D 算子转换支持
使用 ncnn 部署简单的 3D CNN pytorch 模型
测试和文档
预备知识:C++、PyTorch
难度:简单/中等
导师:nihui
扫码填写问卷报名,提交项目proposal
加入项目开发实战
与导师一起成长这一夏
NCNN开源项目交流群
欢迎对本项目感兴趣的同学加入一起交流
更多项目信息,尽在“腾讯犀牛鸟开源人才社区”
扫码加入,解锁所有学习资料
关于腾讯犀牛鸟开源人才培养计划:为响应国家十四五规划的开源战略,腾讯于2021年5月发布“首届腾讯犀牛鸟开源人才培养计划”,希望企业界和教育界形成合力,打造面向高校学生的开源课程和开源实践培养方案,培育开源人才,普及开源文化,助力开源人才生态的发展。
首届项目由教育部计算机教学指导委员会、教育部软件工程教学指导委员会、中国信息通信研究院作为联合指导单位,包括开源基础培训、开源进阶研学、开源项目实战三个环节,项目涉及云原生、微服务、容器、AI、大数据、前端、物联网/边缘计算等多项技术热点。
各位同学报名即可参加线上开源系列课程,学习开源知识,对话学界及产业界大咖。其中入选开源项目实战的学生将在导师的一对一指导下,利用暑假开展编程实战,并有机会获得腾讯开源贡献者证书(目前全球只发出了10+张)。
????学生指南Q&A:https://github.com/Tencent/OpenSourceTalent/issues/14
????官方QQ群:859260607 (加群请备注学校+专业)
【其他项目介绍】
开源项目介绍 |TNN-跨平台AI推理框架
开源项目介绍 |Apache Ozone-分布式大数据通用存储
开源项目介绍 |TKEStack-开源容器服务平台
开源项目介绍 |TencentOS Tiny-腾讯物联网操作系统
开源项目介绍 |OMI-前端【跨框架】框架
开源项目介绍 |APIJSON- 后端零代码接口和文档ORM 库
开源项目介绍 |TARS-高性能微服务治理框架
开源项目介绍|Apache InLong-分布式消息中间件系统
开源项目介绍|Tencent KonaJDK
开源项目介绍 |SuperEdge-云原生边缘计算平台
开源项目介绍 |Hippy-跨平台动态化框架
开源项目介绍 | Angel-高性能分布式机器学习平台
腾讯犀牛鸟开源人才培养计划官网
https://opensource.tencent.com/summer-of-code
(点击文末阅读原文直接访问)
合作或疑问欢迎联系