点击上方蓝字关注我们
IT 咖啡馆,探索无限可能!
恭喜你发现了这个宝藏,这里你会发现优质的开源项目、IT知识和有趣的内容。
GitHub 一周热点汇总第42期(2024/09/22-09/28),本期内容包括计算机视觉工具库、CUDA互动学习、AirDrop替代、二维码传数据和 llama开发框架,一起来看具体内容吧。
supervision
项目名称:supervision - 计算机视觉工具库
GitHub 链接:https://github.com/roboflow/supervision
上周 Star 数:3400+
Supervision是由Roboflow开源的计算机视觉工具库,主要作用是简化和加速从数据准备到模型部署的整个流程。它为开发者提供了统一的API,支持数据集管理、模型训练、推理、评估和可视化等功能。
Supervision兼容主流深度学习框架,如PyTorch和TensorFlow,帮助用户轻松构建、优化和部署高性能的计算机视觉模型,加速创新和应用落地。
你可以使用Supervision来对视频内容进行检测、追踪、分类、预测等,结合示例来看可以用来追踪区域内的人员,比如运动员的跑动情况。或是车辆检测,检测车辆速度或者是区域内的车流量等。
Supervision库需要在Python3.8及以上版本的环境下运行,可以直接通过pip来安装。
pip install supervision
有关 conda、mamba 和从源代码安装的方式可以参考文档。
Supervision 的设计与模型无关。只需插入任何分类、检测或分割模型即可。项目为流行的库如Ultralytics、Transformers等创建了连接器。同时也提供了广泛的高度可定制的注释器,来编写完美的可视化效果。
同时在项目的网站上,提供了很多的操作指南、示例和cookbook,如果想深入研究可以查看学习。
GPU-Puzzles
项目名称:GPU-Puzzles - CUDA互动学习
GitHub 链接:https://github.com/srush/GPU-Puzzles
上周 Star 数:2800+
GPU Puzzles
是由Sasha Rush开发的一个开源项目,旨在帮助初学者以互动的方式学习CUDA编程。
GPU 架构对于机器学习至关重要,而且似乎每天都在变得越来越重要。但是抽象的说明很难理解,本笔记本旨在以互动的方式教授初学者 GPU 编程。即使您从未接触过 GPU 代码,也可以成为机器学习专家。
本项目利用NUMBA框架,它能够将Python代码直接映射到CUDA内核,使得用户能够在相对较低的门槛下进行GPU编程。
建议在 Colab 中执行这些操作,因为它很容易上手。创建自己的副本后,在设置中打开 GPU 模式,然后开始编码。其中包含了从MAP、ZIP、广播到矩阵乘法供14个挑战项目。
使用时先把前面的依赖安装一下,之后就可以开始下面的挑战了。
以最基本的Map为例,你会在Colab中得到这样的代码:
def map_spec(a):
return a + 10
def map_test(cuda):
def call(out, a) -> None:
local_i = cuda.threadIdx.x
# FILL ME IN (roughly 1 lines)
return call
SIZE = 4
out = np.zeros((SIZE,))
a = np.arange(SIZE)
problem = CudaProblem(
"Map", map_test, [a], out, threadsperblock=Coord(SIZE, 1), spec=map_spec
)
problem.show()
这些代码看起来像 Python,但实际上是 CUDA!您不能使用标准 Python 工具库,挑战都是为了说明概念,所以只需要执行简单的操作,基本上是 +、*、简单数组索引、for 循环和 if 语句,在这个例子中你只需处理局部变量来完成输入输出的传递,将该函数视为call
每个线程运行一次。唯一的区别cuda.threadIdx.x
每次都会发生变化。
完成后,你可以点击测试,来验证是否通过,如果通过了会放一个狗狗的视频,作者看来很喜欢狗。
localsend
项目名称:localsend - AirDrop替代
GitHub 链接:https://github.com/localsend/localsend
上周 Star 数:2500+
LocalSend 是一个免费、开源的应用程序,允许你在本地网络上安全地与附近设备共享文件和消息,无需互联网连接。它希望可以帮助用户实现,在多平台中达到AirDrop一样的文件传输体验。我之前出过单期的视频,大家可以参考一下。
个人觉得LocalSend 的三个主要特点:
跨平台款跨平台应用,支持的平台包括windows、mac、Linux、ios、安卓等,为了方便找到对应的安装途径,项目还专门提供了列表。
安全通信,LocalSend 使用 REST API 相互通信,所有数据都通过 HTTPS 安全发送,并且每台设备都会动态生成 TLS/SSL 证书,从而确保最大程度的安全。
不依赖外部服务器,LocalSend 不需要互联网连接或第三方服务器,因此是一种快速可靠的本地通信解决方案。
使用时需要注意的是,LocalSend的传输会使用到53317端口,如果发现无法使用,请打开端口。
项目使用Flutter来开发,如果那你想要参与,可以下载项目然后flutter pub get
下载依赖项,再运行运行flutter run
以启动应用程序。,目前项目使用了较旧的 Flutter 版本,建议使用fvm来管理版本,注意安装后fvm
,运行fvm flutter
而不是flutter
。
libcimbar
项目名称:libcimbar - 二维码传数据
GitHub 链接:https://github.com/sz3/libcimbar
上周 Star 数:2200+
本项目是一个文件传输的新方式,无需互联网/蓝牙/NFC等,只需这样一个二维码,所有数据都通过相机镜头传输。能够维持 1006KB/S的传输速度。
看到这个图形有没有眼前一花的感觉,像不像老电视机的雪花。
简单来说一下原理。cimbar 是一种高密度 2D 条形码格式。建立在image hashing理念的基础上,数据存储在彩色图块网格中 -- 根据选择的图块以及选择的颜色来绘制图块,对位进行编码。
网格上每个图块(位置)有 16 个可能的符号,每个图块编码 4 位。此外,网格上的每个位置可以编码 2-3 个颜色位,这意味着每个图块最多总共 7 个位。 libcimbar 为优化实现,包括一个基于 fountain 代码 (wirehair) 和 zstd 压缩构建的文件编码的简单协议。最大支持将 33MB 的文件编码为一系列 cimbar 代码,这些代码可以输出为图像或实时视频源。一旦成功解码了足够多的不同图像帧,文件将成功重建和解压缩。
在使用上要分为编码器和解码器两个部分,编码器提供了多种实现比如Linux、安卓,最简单的就是一个JS文件,可以直接在浏览器中打开,解码器目前提供一个安卓版本的,我没有手机,就没测试效果,大家感兴趣可以自己试一下。
说句题外话,这个图形看着实在是让人头晕,这点有点不好。
llama-stack
项目名称:llama-stack - llama开发框架
GitHub 链接:https://github.com/meta-llama/llama-stack
上周 Star 数:1200+
Llama Stack 是Meta推出的AI agent开发框架,它定义并标准化了将生成式 AI 应用程序推向市场所需的构建模块。它是llama生态中提升开发者影响力的重要棋子。
Llama Stack的模块涵盖整个开发生命周期:从模型训练和微调,到产品评估,再到在生产中构建和运行 AI Agent。组成 Llama Stack 的 API 包括:推理、安全、记忆、Agent系统、评估、培训后、合成数据生成、奖励评分,每个 API 本身都是 REST API集。
在项目中不仅仅有定义,也在同步的去实现更多provider,这样就可以让开发人员可以保证跨平台的一致性。目前实现中的provider包括Meta Reference、Ollama、AWS Bedrock、Fireworks等。
使用的方式很简单,直接通过PIP来安装就可以了。
pip install llama-stack
如果你想通过源码来安装,那可以参考以下的步骤:
mkdir -p ~/local
cd ~/local
git clone git@github.com:meta-llama/llama-stack.git
conda create -n stack python=3.10
conda activate stack
cd llama-stack
$CONDA_PREFIX/bin/pip install -e .
llama-stack还提供了Python、kotlin、NodeJs、swift 4种SDK,同时在Meta的仓库里还有llama-stack-apps,是专门的一个基于llama-stack构建的应用程序示例,你如果你想学习可以结合使用来快速上手。