1 Star 0 Fork 720

wuweikang / samples

forked from Ascend / samples 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

中文|English

sample

介绍

Ascend sample,请根据自己的需要进入对应文件夹获取应用,或者点击下面的说明链接选择需要的应用。

贡献要求

开发者提交的样例包括源码、readme、参考模型license文件、编译部署脚本(可选)、测试用例和readme,并遵循以下标准

  • 源码

样例实现的C++代码或者python代码

  • readme

readme用于指导用户理解和部署样例,要包含如下内容:

简介:

  1. 案例的原理,包括网络结构和应用框架图;

  2. 样例代码架构和实现流程说明;

关键要求:

  1. 模型的出处、对数据的要求、免责声明等;

  2. 模型转换方法、步骤和关键参数说明;

  3. 模型转换得到的离线模型对输入数据的要求;

  4. 案例编译运行方法;

  5. 应用部署环境配置,包括环境变量设置,依赖的第三方软件包和库,以及安装方法;

  6. 应用推理精度和性能要求:尽量达到原始模型水平。

建议:

  1. 该案例可优化点(可选)。
  • license文件

sample仓使用Apache License 2.0,如项目中未引用其他开源项目则不需要单独提供license,如引用了非Apache License 2.0的项目,请在代码中提供对应license。

  • 代码编译脚本

如果工程需要命令行编译,则需要提供编译脚本,并且运行正确

  • 样例部署和运行脚本

如果工程需要命令行部署,则需要提供部署脚本,并且运行正确

  • 测试用例和测试用例readme

提供测试用例和readme

编程规范

  • 规范标准
  1. C++代码遵循google编程规范:Google C++ Coding Guidelines;单元测测试遵循规范: Googletest Primer

  2. Python代码遵循PEP8规范:Python PEP 8 Coding Style;单元测试遵循规范: pytest

  • 规范备注
  1. 优先使用string类型,避免使用char*;
  2. 禁止使用printf,一律使用cout;
  3. 内存管理尽量使用智能指针;
  4. 不准在函数里调用exit;
  5. 禁止使用IDE等工具自动生成代码;
  6. 控制第三方库依赖,如果引入第三方依赖,则需要提供第三方依赖安装和使用指导书;
  7. 一律使用英文注释,注释率30%--40%,鼓励自注释;
  8. 函数头必须有注释,说明函数作用,入参、出参;
  9. 统一错误码,通过错误码可以确认那个分支返回错误;
  10. 禁止出现打印一堆无影响的错误级别的日志;

Sample介绍

common:sample运行依赖的第三方依赖及环境安装指导文档文件夹
classification:基于googlenet的分类应用,输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,对预处理后的图像中的物体进行分类,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,对预处理后的图像中的物体进行分类,最后通过opencv进行相应后处理。
classification_dynamicbatch :基于googlenet的分类应用,模型推理时调用AscendCL提供的接口设置模型推理时需使用的Batch数。输入为bin文件,输出为打印结果。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用ifstream读取已对图像做好预处理的bin文件,在模型推理时,需调用AscendCL提供的接口设置模型推理时需使用的Batch数。对预处理后的文件进行推理,最后将推理结果打印屏幕上。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用ifstream读取已对图像做好预处理的bin文件,在模型推理时,需调用AscendCL提供的接口设置模型推理时需使用的Batch数。对预处理后的文件进行推理,最后将推理结果打印屏幕上。
classification_multibatch :基于googlenet的分类应用。等输入数据满足多Batch的要求,申请Device上的内存存放多Batch的数据作为模型推理的输入。输入为bin文件,输出为打印结果。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用ifstream读取已对图像做好预处理的bin文件,等输入数据满足多Batch的要求,申请Device上的内存存放多Batch的数据,对预处理后的文件进行推理,最后将推理结果打印屏幕上。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用ifstream读取已对图像做好预处理的bin文件,等输入数据满足多Batch的要求,申请Device上的内存存放多Batch的数据,对预处理后的文件进行推理,最后将推理结果打印屏幕上。
classification_video:基于googlenet的分类应用,输入为视频,输出为视频。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧中的物体进行分类,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧中的物体进行分类,最后通过opencv进行相应后处理。
colorization:基于alexnet的黑白图像上色应用,输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,对预处理后的图像进行色彩通道预测,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,对预处理后的图像进行色彩通道预测,最后通过opencv进行相应后处理。
colorization_video:基于alexnet的黑白图像上色应用,输入为视频,输出为视频。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧进行色彩通道预测,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧进行色彩通道预测,最后通过opencv进行相应后处理。
objectdetection:基于yolov3的目标检测应用,输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用dvpp对图像进行预处理,对预处理后的图像中的物体进行目标检测,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用dvpp对图像进行预处理,对预处理后的图像中的物体进行目标检测,最后通过opencv进行相应后处理。
objectdetection_dynamic_aipp:基于yolov3的目标检测应用,输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,在模型推理时,需调用AscendCL提供的接口设置模型推理时需使用的AIPP配置,再对预处理后的图像中的物体进行目标检测,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对图像进行预处理,在模型推理时,需调用AscendCL提供的接口设置模型推理时需使用的AIPP配置,再对预处理后的图像中的物体进行目标检测,最后通过opencv进行相应后处理。
objectdetection_cvwithaipp:基于vgg_ssd的目标检测应用,使用opencv为输入图像数据进行预处理并在模型转换时开启AIPP功能。输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv为输入图像数据进行预处理,并在模型转换时开启AIPP功能,实现目标检测的功能。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv为输入图像数据进行预处理,并在模型转换时开启AIPP功能,实现目标检测的功能。
objectdetection_cvwithoutaipp:基于vgg_ssd的目标检测应用,使用opencv为输入图像数据进行预处理并在模型转换时关闭AIPP功能。输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv为输入图像数据进行预处理,并在模型转换时关闭AIPP功能,实现目标检测的功能。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv为输入图像数据进行预处理,并在模型转换时关闭AIPP功能,实现目标检测的功能。
objectdetection_dvppwithaipp:基于vgg_ssd的目标检测应用,使用dvpp对输入图像数据进行预处理并在模型转换时开启AIPP功能。输入为图片,输出为图片。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用dvpp对输入图像数据进行预处理,并在模型转换时开启AIPP功能,实现目标检测的功能。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用dvpp对输入图像数据进行预处理,并在模型转换时开启AIPP功能,实现目标检测的功能。
objectdetection_video:基于yolov3的目标检测应用,输入为视频,输出为视频。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧中的物体进行目标检测,最后通过opencv进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用opencv对视频帧进行预处理,对预处理后的视频帧中的物体进行目标检测,最后通过opencv进行相应后处理。
facedetection:基于caffe-ssd的人脸检测应用,输入为树莓派摄像头,输出为视频。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用dvpp对视频帧进行预处理,对预处理后的视频帧进行人脸检测,最后进行相应后处理。
mark_detection:基于yolov3的口罩识别应用,输入为图片,输出为图片。
  • for_atlas200dk_1.3x.0.0_python:该分支是运行在200DK上基于1.3x.0.0版本的python样例。使用opencv对图像进行预处理,对预处理后的图像进行口罩识别,最后通过opencv进行相应后处理。
mark_detection_video:基于yolov3的口罩识别应用,输入为视频,输出为视频。
  • for_atlas200dk_1.3x.0.0_c++:该分支是运行在200DK上基于1.3x.0.0版本的C++样例。使用dvpp对视频帧进行预处理,对预处理后的视频帧进行口罩识别,最后进行相应后处理。
  • for_atlas200dk_1.3x.0.0_python:该分支是运行在200DK上基于1.3x.0.0版本的python样例。使用opencv对视频帧进行预处理,对预处理后的视频帧进行口罩识别,最后进行相应后处理。
wav2word:基于test_model.pb的语言转换文字应用,输入为语音,输出为文本。
  • for_atlas200dk_1.7x.0.0_c++:该分支是运行在200DK上基于1.7x.0.0版本的C++样例。使用python wave库对音频文件进行特征提取,提取200维的音频特征进行计算输入,之后进行语音信号的预处理分帧,加窗,傅里叶变换等进行预处理,对预处理后语音转换成相应文字,最后通过调用Keras附带的CTC_decode函数库进行解码进行相应后处理。
  • for_atlas300_1.7x.0.0_c++:该分支是运行在ai1环境上基于1.7x.0.0版本的C++样例。使用python wave库对音频文件进行特征提取,提取200维的音频特征进行计算输入,之后进行语音信号的预处理分帧,加窗,傅里叶变换等对语音进行预处理,对预处理后语音转换成相应文字,最后通过调用Keras附带的CTC_decode函数库进行解码进行相应后处理。
hardware-peripheral:基于Atlas200DK的各硬件接口使用样例,详细介绍了gpio、i2c、uart使用说明。
  • for_atlas200dk_1.7x.0.0_c++:本仓包含Atlas200DK各硬件接口的使用样例,各文件夹对应不同硬件设备的样例,以供用户参考。
dvpp_samples:Atlas200DK和Atlas300支持的媒体数据处理功能。
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

Ascend Samples 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/HW_KK/samples.git
git@gitee.com:HW_KK/samples.git
HW_KK
samples
samples
master

搜索帮助