TensorSpace.js
开始使用
基本概念
模型预处理
模型
网络层
网络层融合
YoloGrid
YoloGrid YOLO 系列模型的专用输出层,可以用来确定画框的中心位置。YOLO模型的核心思路是把原图分成多个栅格,针对每个中心在每个栅格的物体进行边框回归预测,YoloGrid层是和栅格交互的层,可以在对应栅格位置点击,后层连接OutputDetection画框层进行物体识别框的绘制。
特征图的大小会根据 inputShape 自动推断。
构造器
anchors classLabelList 等和YOLO配置参数相关的参数,一个点击触发函数 onCeilClicked 进行构造
let yoloGrid = new TSP.layers.YoloGrid( {

    anchors: [ 1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52 ],

    //voc class label name list
    classLabelList: [ "aeroplane", "bicycle", "bird", "boat", "bottle",
        "bus", "car", "cat", "chair", "cow",
        "diningtable", "dog", "horse", "motorbike", "person",
        "pottedplant", "sheep", "sofa", "train", "tvmonitor" ],

    onCeilClicked: onYoloCeilClicked

} );
Fig. 1 - Yolo特征划分层示意图(左:收缩 | 右:展开)
参数列表

参数名

标签

类型

简介

具体用法细节和例子

anchors

📦

Float32[] 锚点框的先验概率 根据不同的训练集进行调整,可以在yolo官网darknet的cfg文件中找到对应。也可以在我们的例子中查看。

classLabelList

📦

String[] 输出类别的名称 由训练集决定,VOC20类,COCO80类,ImageNet1000类

onCeilClicked

📦

function 用户点击"小格"事件触发的回调函数 查看这个 例子 了解更多有关该回调函数的使用
ceilData: 返回当前栅格的预测源数据数组
rectList: 图片物体框的坐标数据字典

name

🔧

String 层的命名
建议添加
name: “layerName”

color

⚙️🎨

color format 层的颜色 YoloGrid默认颜色是 #EEEEEE

closeButton

⚙️🎨

Dict 层关闭按钮外观控制列表, 查看详情

display : Boolean. true [default] 显示按钮, false 隐藏按钮

ratio : Int 为正常大小的几倍,默认为1倍

例如,设为2为正常大小的2倍大

initStatus

⚙️️🎦

String 初始化时,本层是否收缩 close[default] : 收缩

animation-
TimeRatio

⚙️🎦

Int 张开和伸缩的调整速度,呈倍速关系 例如2就是2倍,数字越大速度越快
属性
.name : String
filter_center_focus本层的自定义名称。
filter_center_focus创建后即可取到。
.layerType : String
filter_center_focus本层的类型,返回一个定值,字符串YoloGrid
filter_center_focus创建后即可取到。
方法
filter_center_focus此方法只在 Functional Model 中使用(非序列型,图结构)。
filter_center_focus将此层连接到layer上,layer即此层的上一层
filter_center_focus使用此方法来建立一个连接。在 Sequential Model 中不需要专门使用此方法来建立链接,参照 Keras or TensorFlow.js 构建模型语法,直接添加层即可。
let convLayer = new TSP.layers.Conv2d( {

    // 配置Conv2d。

} );

let yoloGrid = new TSP.layers.YoloGrid( {

    // 配置YoloGrid。

} );

yoloGrid.apply( convLayer );
filter_center_focus通过直接和3d场景中物体交互直接点击层打开。
filter_center_focus代码中通过调用方法打开。
let yoloGrid = new TSP.layers.YoloGrid( {

    // 配置YoloGrid。

} );

model.add( yoloGrid );

// ... 给模型添加更多的layer。

model.init();

// 调用openLayer API来打开layer。

yoloGrid.openLayer();
filter_center_focus通过直接和3d场景中物体交互点击按钮关闭。
filter_center_focus代码中通过调用方法打开。
let yoloGrid = new TSP.layers.YoloGrid( {

    // 配置YoloGrid。

} );

model.add( yoloGrid );

// ... 给模型添加更多的layer。

model.init();

// 如果layer已经是打开状态,调用closeLayer API来关闭layer。

yoloGrid.closeLayer();
使用样例
filter_center_focus声明一个YoloGrid的实例,方便复用
let yoloGrid = new TSP.layers.YoloGrid( {

    anchors: [ 1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52 ],

    //voc class label name list
    classLabelList: [ "aeroplane", "bicycle", "bird", "boat", "bottle",
        "bus", "car", "cat", "chair", "cow",
        "diningtable", "dog", "horse", "motorbike", "person",
        "pottedplant", "sheep", "sofa", "train", "tvmonitor" ],

    onCeilClicked: onYoloCeilClicked

} );
model.add( yoloGrid );

function onYoloCeilClicked( ceilData, rectList ) {

    // some operation with ceilData and rectList

}
filter_center_focus直接添加YoloGrid
model.add( new TSP.layers.YoloGrid( {

    anchors: [ 1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52 ],

    //voc class label name list
    classLabelList: [ "aeroplane", "bicycle", "bird", "boat", "bottle",
        "bus", "car", "cat", "chair", "cow",
        "diningtable", "dog", "horse", "motorbike", "person",
        "pottedplant", "sheep", "sofa", "train", "tvmonitor" ],

    onCeilClicked: onYoloCeilClicked

} ) );

function onYoloCeilClicked( ceilData, rectList ) {

    // some operation with ceilData and rectList

}
标签详情
符号 参数性质 说明
⭐️ 必要 使用时必须提供,不能为空,只要提供了这些参数,就能正常创建实例,控制参数使用默认值。
🔧 推荐 使用时推荐给定,未给定也可以运行,但在体验和易用性上有隐患。
⚙️ 可选 根据模型配置参数选择性添加,这里的参数对于层的结构(3D可视化外观)没有影响。
📦 模型 配置卷积层的相关属性,并对输出特征图形状有影响。
🎨 外观 可覆盖TSP.model下的属性进行细调(查看详情
🎦 动画控制 可覆盖TSP.model下的属性进行细调(查看详情
源码
tensorspace/src/layer/output/YoloGrid.js