diff --git a/README.md b/README.md index f27b55db21343cf58c96c5ea87f4cc20de94c8f1..8b8ef52320690dfca836d5afe7192cc495554f0a 100644 --- a/README.md +++ b/README.md @@ -21,18 +21,30 @@

-凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度 PaddlePaddle 倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括: +凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度飞桨倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括: -* 卓越的计算能力:Lockzhiner Vision Module 搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。 -* 广泛的开源适配:Lockzhiner Vision Module 与 PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR 等基于 Paddle 框架的视觉场景库完美适配。配合 AIStudio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。 +* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU, 以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU, 足以应对绝大多数的视觉应用场景。 +* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 完美适配。 +* 简单易用:配合飞桨星河社区 Al Studio, 用户可以实现一键训练;配合凌智视觉算法部署库,用户可以实现一键部署,极大地减轻了用户的使用成本。 -> 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md) +
+ Image 3 + Image 2 + Image 1 +
+ +> 注: +> +> * 凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。 +> * 针对飞桨一站式全流程开发工具 Paddle, 凌智视觉模块目前已经适配了其中的通用图像分类模型产线, 其余任务场景正在适配中, 未来会陆续上线。 +> * 针对星河社区 PaddleX 模型产线,凌智视觉模块暂未适配,未来会陆续上线。 +> * 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md) ## 🔄 最新日志 ## 💡 入门学习教程 -这一部分教程旨在为你提供一个系统化的学习路径,帮助你快速上手 Lockzhiner Vision Module。通过一系列详细的教程,你将学会如何烧录镜像、连接设备、搭建开发环境和编写简单的程序。 +这一部分教程旨在为你提供一个系统化的学习路径,帮助你快速上手 Lockzhiner Vision Module。通过一系列详细的教程, 你将学会如何烧录镜像、连接设备、搭建开发环境和编写简单的程序。 * [凌智视觉模块烧录镜像指南](./docs/introductory_tutorial/burn_image.md) * [凌智视觉模块连接设备指南](./docs/introductory_tutorial/connect_device_using_ssh.md) @@ -65,7 +77,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所 ## 🧠 深度学习视觉部署教程 -这一部分教程将引导你从零开始训练并部署各种深度学习模型,包括分类模型、检测模型、分割模型和 OCR 模型。通过这些实战教程,你将学习到如何利用 Lockzhiner Vision Module 的高性能计算能力以及借助 Paddle 生态系统的丰富资源,轻松实现视觉任务的训练和部署。 +这一部分教程将引导你从零开始训练并部署各种深度学习模型,包括分类模型、检测模型、分割模型和 OCR 模型。通过这些实战教程,你将学习到如何利用 Lockzhiner Vision Module 的高性能计算能力以及借助飞桨生态系统的丰富资源,轻松实现视觉任务的训练和部署。 * [凌智视觉模块分类模型部署指南](./example/vision/classification) * [凌智视觉模块检测模型部署指南](./example/vision/detetcion) @@ -75,7 +87,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所 ## 👍 特色部署教程 * [凌智视觉模块手写数字识别部署指南](./example/special/digit_handwritten_recognition) -* [凌智视觉模块二维码识别与检测部署指南](。/example/special/qr_code_recognition) +* [凌智视觉模块二维码识别与检测部署指南](./example/special/qr_code_recognition) ## 🐛 Bug反馈 @@ -84,7 +96,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所 ![](images/issues_completed.png) -如果查找不到对应的解决方案,可点击新建 Issues 来反馈您的 Bug,我们将尽快与您沟通并及时解决 Bug。 +如果查找不到对应的解决方案,可点击新建 Issues 来反馈您的 Bug, 我们将尽快与您沟通并及时解决 Bug。 ![](images/issues_feedback.png) @@ -106,8 +118,8 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所 凌智视觉模块(Lockzhiner Vision Module) 离不开社区的支持,特别感谢以下个人(或团体): -* 感谢 Rockchip NPU 团队帮忙调试 Paddle 模型到 RKNN 模型的推理和优化 -* 感谢 PaddlePaddle 团队在适配 PaddleX 等套件上提供的帮助 +* 感谢 Rockchip NPU 团队帮忙调试 PaddlePaddle 模型到 RKNN 模型的推理和优化 +* 感谢飞桨团队在适配 PaddleX 等套件上提供的帮助 * 感谢 nihui 大佬帮忙审核并将 Lockzhiner Vision Module 的 ISP 代码合入到 opencv-mobile ## 📜 开源协议 diff --git a/docs/device_parameters.md b/docs/device_parameters.md index 9cfcd4279a198cb93ba75e5585cd47bc8bbc2c6b..223d9c599950bba86b77f62feec3709a40684f85 100644 --- a/docs/device_parameters.md +++ b/docs/device_parameters.md @@ -30,13 +30,11 @@ ## 1 简介 -凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度 PaddlePaddle -倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括: +凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度飞桨倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括: -- 卓越的计算能力:Lockzhiner Vision Module 搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD - 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。 -- 广泛的开源适配:Lockzhiner Vision Module 与 PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR 等基于 Paddle - 框架的视觉场景库完美适配。配合 AIStudio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。 +* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。 +* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 等基于飞桨框架的视觉套件完美适配。 +* 简单易用:配合星河社区 AI Studio + 凌智视觉算法部署库,用户可以实现一键训练,一键部署,极大地减轻了部署负担。 ## 2 主控芯片参数 diff --git a/example/vision/classification/README.md b/example/vision/classification/README.md index 82db7c0a74e9ec09b94c9b531beb8e35d5d29012..390edd6255d75cf469b5265938a61e3f17d50746 100644 --- a/example/vision/classification/README.md +++ b/example/vision/classification/README.md @@ -105,13 +105,13 @@ Labelme 是一个 python 语言编写,带有图形界面的图像标注软件 ![](images/bandzip_3.png) -## 3 使用 AIStudio 训练分类模型 +## 3 使用星河社区 AI Studio 训练分类模型 ### 3.1 简介 AI Studio 是基于百度深度学习开源平台飞桨的人工智能学习与实训社区,为开发者提供了功能强大的线上训练环境、免费GPU算力及存储资源。Lockzhiner Vision Module 默认使用 AI Studio 进行快速训练。 -### 3.2 登录 AIStudio +### 3.2 登录星河社区 AI Studio 进入 [AI Studio](https://aistudio.baidu.com),点击右上角的登录按钮,输入你的百度账号进行登录。 diff --git a/example/vision/classification/python/README.md b/example/vision/classification/python/README.md index c3a4accb109031a321eae2209471965115623e47..5478911771ddc1b4a26f8fb98549617bbeae660b 100644 --- a/example/vision/classification/python/README.md +++ b/example/vision/classification/python/README.md @@ -78,7 +78,7 @@ class PaddleClas: """ PaddleClas 类 - 用于图像分类的 PaddlePaddle 模型封装。 - 该类封装了 PaddlePaddle 框架下的图像分类模型,提供了初始化和预测的方法。 + 该类封装了飞桨框架下的图像分类模型,提供了初始化和预测的方法。 """ def __init__(self): diff --git a/example/vision/detetcion/README.md b/example/vision/detetcion/README.md index 122f68b782040a745e059a3fcf7c457f543f6a3b..7b61b6135010a29202a7e14228501f55718ed27c 100644 --- a/example/vision/detetcion/README.md +++ b/example/vision/detetcion/README.md @@ -31,6 +31,112 @@ ## 2 图像数据标注 +### 2.1 Labelme 标注工具安装 + +Labelme 是一个 python 语言编写,带有图形界面的图像标注软件。可用于图像分类,目标检测,图像分割等任务,在图像分类的标注任务中,标签存储为 JSON 文件。在本章节中,我们使用这个软件来标注数据。 + +首先,点击 [Labelme 下载地址](https://sourceforge.net/projects/labelme-ima-polygonal.mirror/files/v5.5.0/Labelme.exe/download),耐心等待几秒后,浏览器将自动开始下载 Labelme,如下图: + +![](images/sourceForge.png) + +一般来说,下载完成后,系统的下载文件夹内将多出 **Labelme.exe** + +![](images/download.png) + +> 注: +> +> 如果网速太慢,我们也提供了百度网盘的下载链接,点击链接 [Labelme 标注工具(提取码:cyqc)](https://pan.baidu.com/s/1ssdBXxhoE1tME3nh-xqNzQ) 即可下载 +> +### 2.2 标注过程 + +#### 2.2.1 准备待标注数据 + +请参考 [摄像头使用指南](../../periphery/capture/README.md) 利用 **Lockzhiner Vision Module 图片获取助手** 拍摄你需要进行标注的图片,如下图所示: + +![](images/capture_images.png) + +选择一个你想存放数据集的位置,将 **Labelme.exe** 移动到文件夹下同时创建一个空的文件夹并命名为 **Dataset**,如下图 + +![](images/move.png) + +进入 **Dataset** 文件夹,创建 **images** 文件夹、**annotations** 文件夹、**flags.txt** 文件,如下图: + +![](images/creatre.png) + +然后打开 **flags.txt** ,并在 **flags.txt** 中按行写入待标注数据集的类别。如下图所示: + +![](images/flags.png) + +#### 2.2.2 启动 Labelme + +进入 Dataset 文件夹所在的目录,按住键盘Shift键后,单击鼠标右键,点击 在此处打开 Powershell 窗口 + +![](images/open_powershll.png) + +弹出 Powershell 窗口后,输入以下命令来打开 Labelme,如下图 + +```bash +.\Labelme.exe .\Dataset\images --labels .\Dataset\flags.txt --nodata --autosave --output .\Dataset\annotations +``` +![](images/open_labelme.png) + +参数意义如下: + +* --labels 类别标签路径。 +* --nodata 停止将图像数据存储到JSON文件。 +* --autosave 自动存储 +* --ouput 标签文件存储路径 + +#### 2.2.3 开始图片标注 + +1、启动 **labelme** 后如图所示: + +![](images/labelme.png) + +2、点击"编辑"选择标注类型 + +![](images/labelme_compile.png) + +3、选择创建矩形框 + +![](images/labelme_Create_rectangle.png) + +4、在图片上拖动十字框选目标区域 + +![](images/labelme_Select_target.png) + +5、再次点击选择目标框类别 + +![](images/labelme_category.png) + +6、标注好后点击存储。(若在启动 **labelme** 时未指定 --output 字段,会在第一次存储时提示选择存储路径,若指定 --autosave 字段使用自动保存,则无需点击存储按钮) + +![](images/labelme_save.png) + +7、然后点击"下一幅"进行下一张图片的标注 + +![](images/labelme_next.png) + +8、最终标注好的标签文件如图所示 + +![](images/Annotate_images.png) + +### 2.3 打包文件 + +进入 **Dataset** 文件夹所在的目录,将 **Dataset** 目录压缩为文件夹。注意,压缩包的最外层需要有 **Dataset** 目录。这里我们建议你使用 **Bandzip** 压缩软件进行压缩,具体的操作步骤如下: + +![](images/compress.png) + +![](images/compress_1.png) + +![](images/compress_2.png) + +压缩完成后,打开压缩文件检查下最外层是否有 Dataset 目录 + +![](images/compress_3.png) + + + ## 3 使用 AIStudio 训练检测模型 ## 4 在凌智视觉模块上部署模型 diff --git a/example/vision/detetcion/images/Annotate_images.png b/example/vision/detetcion/images/Annotate_images.png new file mode 100644 index 0000000000000000000000000000000000000000..16c9e0f40c718c346f4328f4996dc4d491dc14b6 Binary files /dev/null and b/example/vision/detetcion/images/Annotate_images.png differ diff --git a/example/vision/detetcion/images/capture_images.png b/example/vision/detetcion/images/capture_images.png new file mode 100644 index 0000000000000000000000000000000000000000..a1cd0fabde1897043824253f7660c897c0ad7f28 Binary files /dev/null and b/example/vision/detetcion/images/capture_images.png differ diff --git a/example/vision/detetcion/images/compress.png b/example/vision/detetcion/images/compress.png new file mode 100644 index 0000000000000000000000000000000000000000..4425f7d98762ded9e106336aeb1fc499a32c3460 Binary files /dev/null and b/example/vision/detetcion/images/compress.png differ diff --git a/example/vision/detetcion/images/compress_1.png b/example/vision/detetcion/images/compress_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e622757b6450a5e9eac0c6717522b7e764f8d2ac Binary files /dev/null and b/example/vision/detetcion/images/compress_1.png differ diff --git a/example/vision/detetcion/images/compress_2.png b/example/vision/detetcion/images/compress_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2549aa1bf12a5610cd14677edb308871c44aba Binary files /dev/null and b/example/vision/detetcion/images/compress_2.png differ diff --git a/example/vision/detetcion/images/compress_3.png b/example/vision/detetcion/images/compress_3.png new file mode 100644 index 0000000000000000000000000000000000000000..150da4cb7606dc2eeca58366274fae8860f389f0 Binary files /dev/null and b/example/vision/detetcion/images/compress_3.png differ diff --git a/example/vision/detetcion/images/creatre.png b/example/vision/detetcion/images/creatre.png new file mode 100644 index 0000000000000000000000000000000000000000..69de80b5b03d2f85b134c59d8d77a17f9c7966fe Binary files /dev/null and b/example/vision/detetcion/images/creatre.png differ diff --git a/example/vision/detetcion/images/download.png b/example/vision/detetcion/images/download.png new file mode 100644 index 0000000000000000000000000000000000000000..72f796df45a7fefd08cfdc8cbf09fadb2fcb4c51 Binary files /dev/null and b/example/vision/detetcion/images/download.png differ diff --git a/example/vision/detetcion/images/flags.png b/example/vision/detetcion/images/flags.png new file mode 100644 index 0000000000000000000000000000000000000000..dba9e59faf83f024c4a23b1975b0357d4b3a50c5 Binary files /dev/null and b/example/vision/detetcion/images/flags.png differ diff --git a/example/vision/detetcion/images/labelme.png b/example/vision/detetcion/images/labelme.png new file mode 100644 index 0000000000000000000000000000000000000000..61f7186f690e2c8b0110740d493fef7c872d4e62 Binary files /dev/null and b/example/vision/detetcion/images/labelme.png differ diff --git a/example/vision/detetcion/images/labelme_Create_rectangle.png b/example/vision/detetcion/images/labelme_Create_rectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..bc60d8891bb30af56a5f3dcd3f441bfb146c9779 Binary files /dev/null and b/example/vision/detetcion/images/labelme_Create_rectangle.png differ diff --git a/example/vision/detetcion/images/labelme_Select_target.png b/example/vision/detetcion/images/labelme_Select_target.png new file mode 100644 index 0000000000000000000000000000000000000000..c6b4da8b5eace58f63871ca64286baafeb66c3f5 Binary files /dev/null and b/example/vision/detetcion/images/labelme_Select_target.png differ diff --git a/example/vision/detetcion/images/labelme_category.png b/example/vision/detetcion/images/labelme_category.png new file mode 100644 index 0000000000000000000000000000000000000000..97caf7051c4371ba353f5ae9bfbe89d0888415b5 Binary files /dev/null and b/example/vision/detetcion/images/labelme_category.png differ diff --git a/example/vision/detetcion/images/labelme_compile.png b/example/vision/detetcion/images/labelme_compile.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3089ec445bb2e7281869587c4ad694c07b1297 Binary files /dev/null and b/example/vision/detetcion/images/labelme_compile.png differ diff --git a/example/vision/detetcion/images/labelme_next.png b/example/vision/detetcion/images/labelme_next.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fd93b0e4850e795c8e057608899ccb706e262a Binary files /dev/null and b/example/vision/detetcion/images/labelme_next.png differ diff --git a/example/vision/detetcion/images/labelme_save.png b/example/vision/detetcion/images/labelme_save.png new file mode 100644 index 0000000000000000000000000000000000000000..8307a761bcafe01d12a34194ce5afdc7e8af99b7 Binary files /dev/null and b/example/vision/detetcion/images/labelme_save.png differ diff --git a/example/vision/detetcion/images/move.png b/example/vision/detetcion/images/move.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8e0fc41cfa5750d1e8422640770057d34aa8b0 Binary files /dev/null and b/example/vision/detetcion/images/move.png differ diff --git a/example/vision/detetcion/images/move_feil.png b/example/vision/detetcion/images/move_feil.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bac39124f9564a7671acb80a11cd4593c83672 Binary files /dev/null and b/example/vision/detetcion/images/move_feil.png differ diff --git a/example/vision/detetcion/images/move_images.png b/example/vision/detetcion/images/move_images.png new file mode 100644 index 0000000000000000000000000000000000000000..ac667124ded2d8278ee25314798d5d4c989d1219 Binary files /dev/null and b/example/vision/detetcion/images/move_images.png differ diff --git a/example/vision/detetcion/images/open_labelme.png b/example/vision/detetcion/images/open_labelme.png new file mode 100644 index 0000000000000000000000000000000000000000..f6771019f5ec3f0147b5f7f96b249bc9124c4031 Binary files /dev/null and b/example/vision/detetcion/images/open_labelme.png differ diff --git a/example/vision/detetcion/images/open_powershll.png b/example/vision/detetcion/images/open_powershll.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbb1f9052eb673224ec0bb11c2c9c4320918ccd Binary files /dev/null and b/example/vision/detetcion/images/open_powershll.png differ diff --git a/example/vision/detetcion/images/sourceForge.png b/example/vision/detetcion/images/sourceForge.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9d3d3ede87112602db99bf324186e700ac8e79 Binary files /dev/null and b/example/vision/detetcion/images/sourceForge.png differ diff --git a/example/vision/detetcion/images/terminal.png b/example/vision/detetcion/images/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bbcd5dfb80f5274df2f14ca230038ea2e84d86 Binary files /dev/null and b/example/vision/detetcion/images/terminal.png differ