RKNN
rknn-toolkit2开发套件
用于模型转换、推理、性能评估
提供python编程接口
图形采集=》npu处理=》
SDK提供图像分类、目标检测、
rknn-toolkit2开发套件
用于模型转换、推理、性能评估
提供python编程接口
图形采集=》npu处理=》
SDK提供图像分类、目标检测、
1 | @startuml |
1 | // Singleton.h |
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另外一个类的某个方法的话,可以通过第三者转发调用。
降低对象间的耦合,提高系统的可维护性,在模块间应该只通过接口编程,而不会理会模块的内部工作原理,它可以使各个模块耦合度讲到最低,促进软件的复用。
组件协作
1、模板模式:
驱动器状态机存在稳定的整体结构、子步骤存在多变的需求.父类实现框架、调用虚函数,推荐声明为protected注:父类的西沟为虚函数
2、策略模式:
速度模式位置模式切换使用的算法经常变化,可能新增传统做法:switch case,违背开闭原则。拓展方式解决:提取基类算法纯虚,派生具体子类算法.使用基类指针,可以结合工厂模式,创建返回具体的子类算法,可互相替换.消除条件判断解耦.绝对稳定不变的可以用枚举坏味道
3、观察者模式(事件模式)
目标对象变化,观察者对象自动得到通知并响应;
观察者依赖抽象,抽象通知;
逻辑不要耦合业务界面,松耦合;
vector或者list支持多个观察者;
可增删单一职责类装饰模式组合(has a)优于继承(is a)继承+组合:完善接口规范,支持shi?x解决主体类在多个方向上的拓展多继承:继承多个接口.抽象基类:具体转抽象静态转动态、继?转组合框架与应用、晚绑定:lib调用app(面向对象),延迟到子类(父类定义虚函数,子类重写)实现松耦合早绑定:app调用lib职责链避免发送者和接收者之间的耦合.行为变化类命令模式与函数对象类似.行为封装为对象.请求与实现解耦.
Entity实体
Factory工厂:一种封装机制,把复杂创建逻辑封装,抽象出创建的对象类型;
Function函数:没有副作用的操作;
Repository仓库:一种把存储、检索行为封装起来的机制,类似于对象集合;
Service服务:一种作为接口提供的操作,无封装的状态;
Standalone class(孤立的类);
Value Object值对象:
Ubiquitous Language:通识语言,术语;
任何元素仅依赖本层其他元素或下层元素。(内聚)
向上通信需要通过间接传递机制(回调、观察者模式)。
有边界的上下文(Bounded Context)
特征:
建模思路:
设计标识:
属性:与标识有关的属性留在实体内;(关注必要属性、避免陷入细节属性)
行为:转移到关联的其他对象中;
确保连续性(措施:保持实体简练)
示例:
特征:
示例:
复制和共享
| 优点 | 缺点 | 场景 | |
|---|---|---|---|
| 复制 | 可能导致被大量对象阻塞 | 实现可变 | |
| 共享 | 节省数据空间减少对象数量 | 减慢分布式系统的速度 | 传递引用通信开销低对象不可变 |
特征
建模思路
特征:
按技术分包
按需求任务分包
基于同样属性的遍历机制
关联越少越简单
Entity的双向关联难以维护
VO双向关联无意义
对关联进行规则限定,可以简化模型;
定义对象的所属关系和边界;
外部对象无法引用聚合内部的entity(除了根entity);
可以传递VO
职责
特征
查找对象
在模型中加入对象或关系,将概念显示表达出来
组件的使用者,应该不需要研究其内部实现;
命名中描述效果和目的,不要表露通过何种方式实现;
命令
查询
明确定义模型应用的上下文;