From 0020938adcf9c609cf68d87a917a5663490a625b Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Mon, 30 Sep 2024 16:03:34 +0800
Subject: [PATCH 01/20] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=8C=E7=BB=B4?=
=?UTF-8?q?=E7=A0=81=E8=AF=86=E5=88=AB=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f27b55d..938ed9d 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所
## 👍 特色部署教程
* [凌智视觉模块手写数字识别部署指南](./example/special/digit_handwritten_recognition)
-* [凌智视觉模块二维码识别与检测部署指南](。/example/special/qr_code_recognition)
+* [凌智视觉模块二维码识别与检测部署指南](./example/special/qr_code_recognition)
## 🐛 Bug反馈
--
Gitee
From 7c7d2c9b0b207de516abdeda1ebfd7e9c58fe7dc Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Thu, 10 Oct 2024 18:00:23 +0800
Subject: [PATCH 02/20] =?UTF-8?q?=E6=8C=89=E7=85=A7=E8=A6=81=E6=B1=82?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E6=A1=A3=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 12 +++++++++---
docs/device_parameters.md | 2 +-
example/vision/classification/README.md | 4 ++--
example/vision/classification/python/README.md | 2 +-
example/vision/detetcion/README.md | 2 +-
5 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 938ed9d..5d8c2c7 100644
--- a/README.md
+++ b/README.md
@@ -23,9 +23,15 @@
凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度 PaddlePaddle 倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括:
-* 卓越的计算能力: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,足以应对绝大多数的视觉应用场景。
+* 开源适配:凌智视觉模块与 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 等基于飞桨框架的视觉套件完美适配。
+* 简单易用:配合星河社区 AI Studio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。
+
+> 注:
+>
+> 针对 Paddle 视觉套件,凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
+> 针对 PaddleX 套件,凌智视觉模块目前已经适配了 PaddleClas 模型,其余的 PaddleDetection, PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
+> 针对星河社区 PaddleX 模型产线,凌智视觉模块暂未适配,未来会陆续上线。
> 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md)
## 🔄 最新日志
diff --git a/docs/device_parameters.md b/docs/device_parameters.md
index 9cfcd42..9cf4d34 100644
--- a/docs/device_parameters.md
+++ b/docs/device_parameters.md
@@ -36,7 +36,7 @@
- 卓越的计算能力:Lockzhiner Vision Module 搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD
和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。
- 广泛的开源适配:Lockzhiner Vision Module 与 PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR 等基于 Paddle
- 框架的视觉场景库完美适配。配合 AIStudio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。
+ 框架的视觉场景库完美适配。配合 星河社区 AI Studio ,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。
## 2 主控芯片参数
diff --git a/example/vision/classification/README.md b/example/vision/classification/README.md
index 82db7c0..390edd6 100644
--- a/example/vision/classification/README.md
+++ b/example/vision/classification/README.md
@@ -105,13 +105,13 @@ Labelme 是一个 python 语言编写,带有图形界面的图像标注软件

-## 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 c3a4acc..5478911 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 122f68b..c7ca1df 100644
--- a/example/vision/detetcion/README.md
+++ b/example/vision/detetcion/README.md
@@ -31,7 +31,7 @@
## 2 图像数据标注
-## 3 使用 AIStudio 训练检测模型
+## 3 使用星河社区 AI Studio 训练检测模型
## 4 在凌智视觉模块上部署模型
--
Gitee
From 43b222f299c955fcbf575d8a7a7974b3f5584cfe Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Thu, 10 Oct 2024 18:14:57 +0800
Subject: [PATCH 03/20] =?UTF-8?q?=E6=8C=89=E7=85=A7=E8=A6=81=E6=B1=82?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 16 ++++++++--------
docs/device_parameters.md | 10 ++++------
2 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/README.md b/README.md
index 5d8c2c7..d3290a4 100644
--- a/README.md
+++ b/README.md
@@ -21,16 +21,16 @@
-凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度 PaddlePaddle 倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括:
+凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度飞桨倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括:
* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。
-* 开源适配:凌智视觉模块与 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 等基于飞桨框架的视觉套件完美适配。
-* 简单易用:配合星河社区 AI Studio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。
+* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 完美适配。
+* 简单易用:配合星河社区 AI Studio + 凌智视觉算法部署库,用户可以实现一键训练,一键部署,极大地减轻了部署负担。
> 注:
>
-> 针对 Paddle 视觉套件,凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
-> 针对 PaddleX 套件,凌智视觉模块目前已经适配了 PaddleClas 模型,其余的 PaddleDetection, PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
+> 凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
+> 针对飞桨一站式全流程开发工具 PaddleX,凌智视觉模块目前已经适配了其中的通用图像分类模型产线,其余任务场景正在适配中,未来会陆续上线。
> 针对星河社区 PaddleX 模型产线,凌智视觉模块暂未适配,未来会陆续上线。
> 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md)
@@ -71,7 +71,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所
## 🧠 深度学习视觉部署教程
-这一部分教程将引导你从零开始训练并部署各种深度学习模型,包括分类模型、检测模型、分割模型和 OCR 模型。通过这些实战教程,你将学习到如何利用 Lockzhiner Vision Module 的高性能计算能力以及借助 Paddle 生态系统的丰富资源,轻松实现视觉任务的训练和部署。
+这一部分教程将引导你从零开始训练并部署各种深度学习模型,包括分类模型、检测模型、分割模型和 OCR 模型。通过这些实战教程,你将学习到如何利用 Lockzhiner Vision Module 的高性能计算能力以及借助飞桨生态系统的丰富资源,轻松实现视觉任务的训练和部署。
* [凌智视觉模块分类模型部署指南](./example/vision/classification)
* [凌智视觉模块检测模型部署指南](./example/vision/detetcion)
@@ -112,8 +112,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 9cf4d34..223d9c5 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
- 框架的视觉场景库完美适配。配合 星河社区 AI Studio ,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。
+* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。
+* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 等基于飞桨框架的视觉套件完美适配。
+* 简单易用:配合星河社区 AI Studio + 凌智视觉算法部署库,用户可以实现一键训练,一键部署,极大地减轻了部署负担。
## 2 主控芯片参数
--
Gitee
From 5d1b411434451383d2f4ad32620d6bebf131ae09 Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Thu, 10 Oct 2024 18:24:15 +0800
Subject: [PATCH 04/20] =?UTF-8?q?=E6=8C=89=E7=85=A7=E8=A6=81=E6=B1=82?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d3290a4..526c5e7 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@
* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。
* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 完美适配。
-* 简单易用:配合星河社区 AI Studio + 凌智视觉算法部署库,用户可以实现一键训练,一键部署,极大地减轻了部署负担。
+* 简单易用:配合飞桨星河社区 Al Studio, 用户可以实现一键训练;配合凌智视觉算法部署库,用户可以实现一键部署,极大地减轻了用户的使用成本。
> 注:
>
--
Gitee
From eea03f25336df56176163c5c4ad1fde1c2552ec0 Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Fri, 11 Oct 2024 12:06:15 +0800
Subject: [PATCH 05/20] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A6=96=E9=A1=B5?=
=?UTF-8?q?=E5=A4=87=E6=B3=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 526c5e7..864165e 100644
--- a/README.md
+++ b/README.md
@@ -29,10 +29,10 @@
> 注:
>
-> 凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
-> 针对飞桨一站式全流程开发工具 PaddleX,凌智视觉模块目前已经适配了其中的通用图像分类模型产线,其余任务场景正在适配中,未来会陆续上线。
-> 针对星河社区 PaddleX 模型产线,凌智视觉模块暂未适配,未来会陆续上线。
-> 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md)
+> * 凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
+> * 针对飞桨一站式全流程开发工具 Paddle, 凌智视觉模块目前已经适配了其中的通用图像分类模型产线, 其余任务场景正在适配中, 未来会陆续上线。
+> * 针对星河社区 PaddleX 模型产线,凌智视觉模块暂未适配,未来会陆续上线。
+> * 更详细的参数请参考 [凌智视觉模块设备详细参数文档](./docs/device_parameters.md)
## 🔄 最新日志
--
Gitee
From a7feebd8a7d4aef6fc932757320a49630de9a8ee Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Fri, 11 Oct 2024 13:16:35 +0800
Subject: [PATCH 06/20] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?=
=?UTF-8?q?=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 864165e..3b22a37 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@
凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司联合百度飞桨倾力打造的一款高集成度人工智能视觉模块,专为边缘端人工智能和机器视觉应用而设计,其特色包括:
-* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。
+* 计算能力:凌智视觉模块搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU, 以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU, 足以应对绝大多数的视觉应用场景。
* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 完美适配。
* 简单易用:配合飞桨星河社区 Al Studio, 用户可以实现一键训练;配合凌智视觉算法部署库,用户可以实现一键部署,极大地减轻了用户的使用成本。
@@ -38,7 +38,7 @@
## 💡 入门学习教程
-这一部分教程旨在为你提供一个系统化的学习路径,帮助你快速上手 Lockzhiner Vision Module。通过一系列详细的教程,你将学会如何烧录镜像、连接设备、搭建开发环境和编写简单的程序。
+这一部分教程旨在为你提供一个系统化的学习路径,帮助你快速上手 Lockzhiner Vision Module。通过一系列详细的教程, 你将学会如何烧录镜像、连接设备、搭建开发环境和编写简单的程序。
* [凌智视觉模块烧录镜像指南](./docs/introductory_tutorial/burn_image.md)
* [凌智视觉模块连接设备指南](./docs/introductory_tutorial/connect_device_using_ssh.md)
@@ -90,7 +90,7 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所

-如果查找不到对应的解决方案,可点击新建 Issues 来反馈您的 Bug,我们将尽快与您沟通并及时解决 Bug。
+如果查找不到对应的解决方案,可点击新建 Issues 来反馈您的 Bug, 我们将尽快与您沟通并及时解决 Bug。

--
Gitee
From 35ca3aa01e84d6e09a15c556c59896b71af79e54 Mon Sep 17 00:00:00 2001
From: Zheng-Bicheng
Date: Fri, 11 Oct 2024 13:42:22 +0800
Subject: [PATCH 07/20] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E5=9B=BE=E7=89=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index 3b22a37..8b8ef52 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,12 @@
* 开源适配:凌智视觉模块与飞桨一站式全流程开发工具 PaddleX 以及基于飞桨框架的视觉套件 PaddleClas, PaddleDetection, PaddleSeg 和 PaddleOCR 完美适配。
* 简单易用:配合飞桨星河社区 Al Studio, 用户可以实现一键训练;配合凌智视觉算法部署库,用户可以实现一键部署,极大地减轻了用户的使用成本。
+
+
> 注:
>
> * 凌智视觉模块目前已经支持了 PaddleClas 和 PaddleDetection, 其余的 PaddleSeg 和 PaddleOCR 套件正在适配中,未来会陆续上线。
--
Gitee
From 0684f24e50f570300293f51126429dc5e9933ffd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=82=B1=E9=9C=B2?=
Date: Fri, 11 Oct 2024 07:19:11 +0000
Subject: [PATCH 08/20] =?UTF-8?q?!9=20=E4=BF=AE=E6=94=B9=E5=9B=BE=E5=83=8F?=
=?UTF-8?q?=E6=A0=87=E6=B3=A8=E6=96=87=E6=A1=A3=20*=20Merge=20branch=20'de?=
=?UTF-8?q?velop=5F2'=20of=20gitee.com:LockzhinerAI/LockzhinerVisionMod?=
=?UTF-8?q?=E2=80=A6=20*=20=E4=BF=AE=E6=94=B9=E5=9B=BE=E5=83=8F=E6=A0=87?=
=?UTF-8?q?=E6=B3=A8=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
example/vision/detetcion/README.md | 107 +++++++++++++++++-
.../detetcion/images/Annotate_images.png | Bin 0 -> 93330 bytes
.../detetcion/images/capture_images.png | Bin 0 -> 392520 bytes
example/vision/detetcion/images/compress.png | Bin 0 -> 88853 bytes
.../vision/detetcion/images/compress_1.png | Bin 0 -> 16489 bytes
.../vision/detetcion/images/compress_2.png | Bin 0 -> 72064 bytes
.../vision/detetcion/images/compress_3.png | Bin 0 -> 63275 bytes
example/vision/detetcion/images/creatre.png | Bin 0 -> 37310 bytes
example/vision/detetcion/images/download.png | Bin 0 -> 76280 bytes
example/vision/detetcion/images/flags.png | Bin 0 -> 9761 bytes
example/vision/detetcion/images/labelme.png | Bin 0 -> 536830 bytes
.../images/labelme_Create_rectangle.png | Bin 0 -> 15905 bytes
.../images/labelme_Select_target.png | Bin 0 -> 664429 bytes
.../detetcion/images/labelme_category.png | Bin 0 -> 512823 bytes
.../detetcion/images/labelme_compile.png | Bin 0 -> 18268 bytes
.../vision/detetcion/images/labelme_next.png | Bin 0 -> 1686 bytes
.../vision/detetcion/images/labelme_save.png | Bin 0 -> 1011 bytes
example/vision/detetcion/images/move.png | Bin 0 -> 68531 bytes
example/vision/detetcion/images/move_feil.png | Bin 0 -> 77024 bytes
.../vision/detetcion/images/move_images.png | Bin 0 -> 501896 bytes
.../vision/detetcion/images/open_labelme.png | Bin 0 -> 6989 bytes
.../detetcion/images/open_powershll.png | Bin 0 -> 106877 bytes
.../vision/detetcion/images/sourceForge.png | Bin 0 -> 228196 bytes
example/vision/detetcion/images/terminal.png | Bin 0 -> 12336 bytes
24 files changed, 106 insertions(+), 1 deletion(-)
create mode 100644 example/vision/detetcion/images/Annotate_images.png
create mode 100644 example/vision/detetcion/images/capture_images.png
create mode 100644 example/vision/detetcion/images/compress.png
create mode 100644 example/vision/detetcion/images/compress_1.png
create mode 100644 example/vision/detetcion/images/compress_2.png
create mode 100644 example/vision/detetcion/images/compress_3.png
create mode 100644 example/vision/detetcion/images/creatre.png
create mode 100644 example/vision/detetcion/images/download.png
create mode 100644 example/vision/detetcion/images/flags.png
create mode 100644 example/vision/detetcion/images/labelme.png
create mode 100644 example/vision/detetcion/images/labelme_Create_rectangle.png
create mode 100644 example/vision/detetcion/images/labelme_Select_target.png
create mode 100644 example/vision/detetcion/images/labelme_category.png
create mode 100644 example/vision/detetcion/images/labelme_compile.png
create mode 100644 example/vision/detetcion/images/labelme_next.png
create mode 100644 example/vision/detetcion/images/labelme_save.png
create mode 100644 example/vision/detetcion/images/move.png
create mode 100644 example/vision/detetcion/images/move_feil.png
create mode 100644 example/vision/detetcion/images/move_images.png
create mode 100644 example/vision/detetcion/images/open_labelme.png
create mode 100644 example/vision/detetcion/images/open_powershll.png
create mode 100644 example/vision/detetcion/images/sourceForge.png
create mode 100644 example/vision/detetcion/images/terminal.png
diff --git a/example/vision/detetcion/README.md b/example/vision/detetcion/README.md
index c7ca1df..9152415 100644
--- a/example/vision/detetcion/README.md
+++ b/example/vision/detetcion/README.md
@@ -31,7 +31,112 @@
## 2 图像数据标注
-## 3 使用星河社区 AI Studio 训练检测模型
+### 2.1 Labelme 标注工具安装
+
+Labelme 是一个 python 语言编写,带有图形界面的图像标注软件。可用于图像分类,目标检测,图像分割等任务,在图像分类的标注任务中,标签存储为 JSON 文件。在本章节中,我们使用这个软件来标注数据。
+
+首先,点击 [Labelme 下载地址](https://sourceforge.net/projects/labelme-ima-polygonal.mirror/files/v5.5.0/Labelme.exe/download),耐心等待几秒后,浏览器将自动开始下载 Labelme,如下图:
+
+
+
+一般来说,下载完成后,系统的下载文件夹内将多出 **Labelme.exe**
+
+
+
+> 注:
+>
+> 如果网速太慢,我们也提供了百度网盘的下载链接,点击链接 [Labelme 标注工具(提取码:cyqc)](https://pan.baidu.com/s/1ssdBXxhoE1tME3nh-xqNzQ) 即可下载
+
+### 2.2 标注前的准备
+
+首先,请参考 [摄像头使用指南](./example/periphery/capture) 利用 **Lockzhiner Vision Module 图片获取助手** 拍摄你需要进行标注的图片,如下图所示:
+
+
+
+选择一个你想存放数据集的位置,将 **Labelme.exe** 移动到文件夹下同时创建一个空的文件夹并命名为 **Dataset**,如下图:
+
+
+
+进入 **Dataset** 文件夹,创建 **images** 文件夹、**annotations** 文件夹、**flags.txt** 文件,如下图:
+
+
+
+进入 **Dataset** 文件夹,打开 **images**目录,将 **Lockzhiner Vision Module 图片获取助手** 保存的图片数据(在程序运行目录的 **LockzhinerVisionModuleImages** 文件夹内)移动到该文件夹内,如下图:
+
+
+
+进入 **Dataset** 文件夹,打开 **flags.txt** 按行写入待标注数据集的类别,写入完成后如下图所示:
+
+
+
+进入 **Dataset** 文件夹所在的目录,按住键盘`Shift`键后,单击鼠标右键,点击 **在此处打开 Powershell 窗口**。
+
+
+
+弹出 **Powershell 窗口**后,输入以下命令来打开 **Labelme**,如下图:
+
+```bash
+.\Labelme.exe .\Dataset\images --nodata --autosave --output .\Dataset\annotations --labels .\Dataset\flags.txt
+```
+
+
+
+参数意义如下:
+
+* --labels 类别标签路径。
+* --nodata 停止将图像数据存储到JSON文件。
+* --autosave 自动存储
+* --ouput 标签文件存储路径
+
+命令执行后将打开 **Labelme** 程序,如下图
+
+
+
+### 2.3 标注并产出数据集
+
+点击"编辑"选择标注类型
+
+
+
+选择创建矩形框
+
+
+
+在图片上拖动十字框选目标区域
+
+
+
+再次点击选择目标框类别
+
+
+
+标注好后点击存储。(若在启动 **labelme** 时未指定 --output 字段,会在第一次存储时提示选择存储路径,若指定 --autosave 字段使用自动保存,则无需点击存储按钮)
+
+
+
+然后点击"下一幅"进行下一张图片的标注
+
+
+
+最终标注好的标签文件如图所示
+
+
+
+进入 **Dataset** 文件夹所在的目录,将 **Dataset** 目录压缩为文件夹。注意,压缩包的最外层需要有 **Dataset** 目录。这里我们建议你使用 **Bandzip** 压缩软件进行压缩,具体的操作步骤如下:
+
+
+
+
+
+
+
+压缩完成后,打开压缩文件检查下最外层是否有 Dataset 目录
+
+
+
+
+
+## 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
GIT binary patch
literal 93330
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