Skip to content

Commit d4a196f

Browse files
committed
feature: add service.ai.od
Signed-off-by: lewiscutey <949124363@qq.com>
1 parent 8b2eb0f commit d4a196f

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

rfcs/0000-add-ai-od-ability.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
- 提案时间: 2023-11-21
2+
- 影响版本: 1400
3+
- 相关 Issues: 无
4+
5+
## 【必填】概述
6+
7+
物体识别(Object Detection, OD)是指用于识别图片中特定类型的物体(人,猫,狗,车等)的轮廓以及包围盒。
8+
9+
## 【必填】动机
10+
11+
方便开发者更便利的使用AI相关一些能力,降低开发难度,从而可以开发更丰富的快应用;
12+
13+
## 【必填】API规格和使用案例
14+
15+
#### 接口声明
16+
```javascript
17+
{ "name": "service.ai.od" }
18+
```
19+
20+
#### 导入模块
21+
```javascript
22+
import od from '@service.ai.od' 或 const od = require('@service.ai.od')
23+
```
24+
25+
#### 接口定义
26+
---
27+
##### od.getProvider()
28+
检查当前设备是否支持OD,获取服务提供商。
29+
30+
##### 参数:
31+
32+
33+
##### 返回值:
34+
字符串,服务提供商的代号,如厂商的英文品牌名称,假如无此服务则返回空字符串;
35+
36+
##### 代码案例:
37+
```javascript
38+
console.log(od.getProvider())
39+
```
40+
41+
#
42+
43+
44+
##### od.detect(object)
45+
对目标图片进行物体识别。
46+
47+
##### 参数:
48+
| 参数名 | 类型 | 是否必填 | 说明 |
49+
| :----- | :---- | :--: |:---------------------------------------------------------- |
50+
| data | Object || 输入的数据资源 |
51+
| config | Object || 物体识别能力配置 |
52+
| success | Function || 成功回调函数 |
53+
| fail | Function || 失败回调函数 |
54+
55+
###### 参数 - data值:
56+
| 参数名 | 类型 | 是否必填 | 说明 |
57+
| :----- | :---- | :--: |:---------------------------------------------------------- |
58+
| type | String || 输入的数据资源类型,可以为uri、rawString; |
59+
| content | String || 与type匹配的资源描述; |
60+
61+
###### 参数 - data - type值:
62+
| type参数值 | 说明 |
63+
| :-----|:---------------------------------------------------------- |
64+
| uri | content表示数据从文件获取,提供文件的本地路径,类型为String; |
65+
| rawString | content表示数据实际内容,类型为String,表示base64类型图片; |
66+
67+
###### 参数 - config值:
68+
| 参数名 | 类型 | 是否必填 | 说明 |
69+
| :-----: | :----: | :--: |:----------------------------------------------------------: |
70+
| limit | Number || 最大识别物体数,默认值为无限制; |
71+
72+
73+
##### 返回值:
74+
| 参数名 | 类型 | 是否必填 | 说明 |
75+
| :-----: | :----: | :--: |:----------------------------------------------------------: |
76+
| result | Array\<ODResult> || 识别出的物体; |
77+
78+
##### 返回值 ODResult值:
79+
| 参数名 | 类型 | 是否必填 | 说明 |
80+
| :----- | :---- | :--: |:---------------------------------------------------------- |
81+
| type | String || 识别出的数据传递方式,与入参data中的type字段定义一致,这里一般为“rawString” |
82+
| content | String || 识别出的数据描述,与入参data中的content字段含义一致,这里是识别出的图片的URI或者像素点阵数据; |
83+
| contour | Number[] || 被识别出的物体的不规则轮廓,包含偶数个浮点数,每2个浮点数表示一个轮廓上的点的坐标; |
84+
| boundingBox | Number[] || 被识别出的物体的不规则包围盒,包含4个浮点数[x, y, w, h],表示包围盒左上顶点坐标和包围盒宽,高; |
85+
86+
87+
##### 代码案例:
88+
```javascript
89+
const uri = "internal://tmp/c2e94480-9d45-4666-bf0a-41b41782bb1f/IMG_20230905_171143.jpg"
90+
od.detect({
91+
data: {
92+
type: 'uri',
93+
content: uri
94+
},
95+
config: {
96+
limit: 10
97+
},
98+
success: (data) => {
99+
const objects = data.result
100+
for(const object of objects){
101+
const {type, content, contour, boundingBox} = object
102+
}
103+
console.log("OD success")
104+
}
105+
})
106+
```
107+
108+
109+
110+
## 【必填】提案人员是否愿意自行实现该功能
111+
112+
是:提案人员愿意在提案通过后自行实现该功能;
113+
114+
## 详细设计
115+
116+
可选,请向一个熟悉 hapjs内部实现的人讲解如何在 hapjs中实现这个功能,或讲解实现这一功能需要什么步骤。
117+
118+
## 缺陷
119+
120+
我们是不是可以不做这个功能,请考虑:
121+
122+
- 实现这个功能的投入:包括代码的复杂度、代码体积的增加、实现功能投入的人力
123+
- 这个功能是不是不需要 hapjs提供,使用 hapjs的开发者也可以在应用层实现,甚至实现得更好
124+
- 对 hapjs既有惯用开发习惯的影响
125+
- 对已发布版本和现有功能的影响,以及用户进行迁移的成本
126+
- 对其它未有代码实现的 RFC 提案的影响
127+
128+
## 替代选择
129+
130+
还有其他的方案也可以实现这个功能吗?
131+
132+
## 适配策略
133+
134+
如果我们实现了这个提案,有没有什么办法可以帮助开发者更好地适应这个改动?

0 commit comments

Comments
 (0)