图像和信号异步处理库。多好玩
项目描述
概述
Beatmup 是一个可扩展的异步图像和信号处理框架。
Beatmup 主要用于图像处理。
-
它支持低级用户定义的处理任务执行
- 并行并使用硬件加速以获得最大速度,
- 异步,以应用程序友好的方式。
-
它实现了基本的构建块和预定义的处理操作:
- 图像重采样和几何运算
- 基本颜色过滤
- 洪水填充和轮廓提取
- 实时渲染
Beatmup 无处不在。
- 用于linux , Windows和Android
- 用C++11编写,具有Java和Python绑定
- 预构建的 Python 包可用于 x64 桌面 Windows 和基于 Ubuntu 的 linux 发行版
- 几乎没有依赖关系:Beatmup 非常容易为不同的平台构建
- 只需要 git、CMake 和 C++ 编译器
- Beatmup 使用 gcc、clang 和 msvc 编译
Beatmup 无论其供应商、价格和发布年份如何,都使用 GPU 来加快处理速度。
- 它运行在
- 来自主流供应商的桌面 GPU,
- 集成桌面 GPU,
- Android GPU,
- Raspberry Pi GPU(包括 Pi Zero W 在内的所有型号),
- 英伟达杰森纳米,
- ...
- 它使用 GPU
- x2,基于神经网络的图像放大技术,
- 运行小型用户定义神经网络的推理,
- 应用用户定义的 GLSL 着色器来处理图像,
- Android中的实时相机图像处理,
- 场景渲染和预定义的图像处理任务。
强调
x2:基于神经网络的图像放大器
Beatmup 可以说是在任何体面的 GPU 上运行基于硬件加速神经网络的快速图像超分辨率的最简单方法。它不提供最先进的 PSNR 分数,但可以在台式机上以每秒一百张图像的速度运行。
有关神经网络设计和推理实现的更多详细信息:Inferring a super-resolution neural network on Raspberry Pi GPU
2.1 版更新:模型的微调版本(使用多个退化内核训练)现在在 DIV2K 验证集上达到 32.64 dB,而初始得分为 32.57 dB。
PictureJam 拼贴制作工具
PictureJam Collage Maker Android 应用程序中使用了 Beatmup 的早期版本。
可用资源
文档
C++
有许多测试应用程序展示了 Beatmup 的使用,并在应用程序文件夹中提供了附加说明。该代码使用 C++ 编写,但普遍有用。几个例子:
- 应用程序/着色器使用从标准输入读取的自定义 GLSL 片段着色器处理图像。
- apps/x2是x2神经网络的测试应用程序。
- apps/classify是一个狗图像分类器,是 ResNeXt 的一个变体,在包含 120 类狗和猫图像的 ImageNet 子集上进行训练。推理是使用 OpenGL 着色器实现的。在 Raspberry Pi Zero W 上实现的 Top-1 验证准确率为 72.08%。对 385*385 图像进行分类大约需要 595 毫秒。
Python
python/examples文件夹包含在 Python 中使用 Beatmup 的脚本的详细示例。
- cifar100.py解释了如何使用 TensorFlow/Keras 训练神经网络,将其转换为符合 Beatmup 的模型并在 CIFAR100 测试集上运行其推理。
- x2_superresolution.py和x2_superresolution_video.py展示了将 x2 上采样神经网络应用于图像和视频。
Python 中的单元测试在python/tests/test.py和python/tests/test_nnets.py中可用。
Java (安卓)
android/app文件夹中提供了一个 Android 测试应用程序。它由独立的示例组成,展示了如何在 Android 中使用 Beatmup。
- BasicCameraUse.java展示了如何获取相机预览、应用简单的着色器并显示结果。
- UpsamplingConvnetOnCamera.java实现了x2上采样神经网络对相机预览的应用。
- DogClassifier.java实现了以相机预览图像为输入的狗分类器。
快速入门:编译 Beatmup
要让事情运行起来,请确保您已安装git和CMake,然后选择以下复制粘贴配方之一。
Linux
使用 OpenGL 推断的神经网络构建X2应用程序放大图像:
git clone https://github.com/lnstadrum/beatmup.git
cd beatmup
git submodule update --init --recursive
mkdir -p build && cd build
cmake -DUSE_GLX=ON ..
make X2
-
如果遇到麻烦,请尝试从干净的构建文件夹开始使用
-DUSE_OPENGL=ON。-DUSE_GLX=ON -
在系列 4 之前的 Raspberry Pi 上,使用 EGL 后端和以下 CMake 命令:
cmake -DUSE_EGL=ON -DUSE_BRCM_LIBS=ON -DGLES_VERSION=20 ..
有关 Raspberry Pi 设置的更多详细信息,请点击此处。
-
在Raspberry Pi 4上,请使用以下 CMake 命令:
cmake -DUSE_EGL_DRM=ON -DGLES_VERSION=20 ..
有关 Raspberry Pi 4 设置的更多详细信息,请点击此处。
构建应用程序后,您可以为其提供您选择的图像并获得放大后的结果,如下所示:
./X2 <your-image>.bmp x2-result.bmp
视窗
要在 Windows 中构建X2应用程序,您可以安装Visual Studio并生成 VS 解决方案,如下所示:
git clone https://github.com/lnstadrum/beatmup.git
cd beatmup
git submodule update --init --recursive
mkdir build && cd build
cmake -DUSE_OPENGL=ON ..
然后在 Visual Studio 中打开.sln解决方案文件并构建可执行文件。
安卓
有一个包含库和测试应用程序模块(lib和app)的 Android 项目。要构建它们,请安装 Android Studio 和 Android NDK 包,克隆存储库并打开位于 Android Studio 的android文件夹中的项目。
您也可以在 docker 容器中构建 apk。安装 docker后,您可以运行以下脚本来构建beatmupApp.apk安装包,然后您可以将其复制到您的 Android 手机并在那里打开它以安装测试应用程序:
git clone https://github.com/lnstadrum/beatmup.git
cd beatmup
git submodule update --init --recursive
docker build -f dockerfiles/android.Dockerfile -t beatmup-android .
docker run -v $(pwd):/opt/android-build beatmup-android
更快地开始使用 Python
视窗
Python 3.5、3.6、3.7、3.8和3.9的64位 Windows 中提供了预构建的python包:
python -m pip install --upgrade pip
python -m pip install beatmup
基于 Ubuntu 的 linux
x64 桌面基于 Ubuntu 的 linux 发行版的预构建包可在发布页面上下载。
编译 Python 包
如果没有可用于您的平台/操作系统的预构建包,您可以轻松构建可pip自行安装的 Python 轮。
首先,获取代码并尝试按照上述说明编译应用程序。然后在存储库根文件夹中运行
cd build
make beatmup
cd ../python
python3 setup.py bdist_wheel clean
安装包现在位于python/dist文件夹中。您可以安装它并确保它可以正常工作:
python3 -m pip install --no-index --find-links=dist beatmup
python3 -c "import beatmup; beatmup.say_hi()"
许可和贡献
该项目在 GNU GPL v3 许可下获得许可。
贡献受贡献许可协议 (CLA)的约束。简而言之,根据本协议,您仍然是您贡献的版权所有者,但您允许我们根据可能不同的许可条款使用和分发您的贡献。
如果你想贡献:
- 确保您拥有您贡献的版权,
- 提出拉取请求,
- 在beatmup.imaging@gmail.com上发送签名的 CLA 。
否则:
- 如果您有问题或功能请求,请提出问题,
- 通过电子邮件联系我们。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。