:mod:`nn` --- 神经网络 ============================= .. module:: nn :synopsis: neural networks ``nn`` 模块用于神经网络。 有关如何使用NN模块,请参阅OpenMV IDE附带的示例。 有关创建你自己的NN示例的更多信息,请参见 `README on our github here `_. nn_class 类 -- 神经网络检测结果 =================================== nn_class对象由 `net.search()` 返回。 构造函数 ------------ .. class:: nn.nn_class() 请调用 `net.search()` 来创建这个对象。 方法 ------- .. method:: nn_class.rect() 返回一个nn_class的边界框的矩形元组(x,y,w,h),用于像 `image.draw_rectangle()` 等 `image` 方法。 .. method:: nn_class.x() 返回nn_class的边界框的x坐标(int)。 您也可以通过索引 ``[0]`` 取得这个值。 .. method:: nn_class.y() 返回nn_class的边界框的y坐标(int)。 您也可以通过索引 ``[1]`` 取得这个值。 .. method:: nn_class.w() 返回nn_class的边界框的w坐标(int)。 您也可以通过索引 ``[2]`` 取得这个值。 .. method:: nn_class.h() 返回nn_class的边界框的h坐标(int)。 您也可以通过索引 ``[3]`` 取得这个值。 .. method:: nn_class.index() 返回nn类检测的索引(int)。 您也可以通过索引 ``[4]`` 取得这个值。 .. method:: nn_class.value() 返回nn类检测的值(float)。 您也可以通过索引 ``[5]`` 取得这个值。 Net 类 -- 神经网络 =========================== 构造函数 ------------ .. class:: nn.load(path) 将神经网络从 ``.network`` 二进制文件加载到内存中。 神经网络的层/权值/偏置/等。存储在MicroPython堆上。 返回一个可以在图像上进行操作的Net对象。 方法 ------- .. method:: net.forward(image, [roi, [softmax=False, [dry_run=False]]]) 在图像roi上运行网络(必要时自动缩放)并返回神经网络分类结果的浮点值列表。 ``roi`` 是感兴趣区域的矩形元组(x,y,w,h)。如果未指定,则它等于图像矩形。仅运算 ``roi`` 中的像素。 如果 ``softmax`` 为True,则列表中所有的输出总和为1。否则,列表中的任何输出都可以在0和1之间。 将 ``dry_run`` 设置为True以打印出正在执行的网络层而不是实际执行它们。这是为了调试debug。 .. method:: net.search(image, [roi, [threshold=0.6, [min_scale=1.0, [scale_mul=0.5, [x_overlap=0, [y_overlap=0, [contrast_threshold=1, [softmax=False]]]]]]]]) 以滑动窗口方式在图像roi上运行网络。 网络检测器窗口以多种比例滑过图像。 返回神经网络检测结果的 `nn_class` 对象列表。 ``roi`` 是感兴趣区域的矩形元组(x,y,w,h)。如果未指定,则它等于图像矩形。仅运算 ``roi`` 中的像素。 在图像中的区域上运行之后,将最大检测值超过 ``threshold`` 的对象添加到输出列表中。 ``min_scale`` 控制网络模型的缩放比例。在默认值下,网络不会缩放。但是,值为0.5将允许用于检测图像大小为50%的对象... ``scale_mul`` 控制测试多少个不同的比例。滑动窗口方法的工作原理是将默认比例1乘以 ``scale_mul`` , 并且结果需要大于 ``min_scale`` 。 ``scale_mul`` 的默认值0.5,测试每个比例变化减少50%。 但是,0.95的值仅为5%的缩小量。 ``x_overlap`` 控制与滑动窗口的下一个检测区域重叠的百分比。值为零表示没有重叠。值为0.95意味着95%重叠。 ``y_overlap`` 控制与滑动窗口的下一个检测区域重叠的百分比。值为零表示没有重叠。值为0.95意味着95%重叠。 ``contrast_threshold`` 控制跳过图像低对比度区域的阈值。在图像中的某个区域上运行nn之前,将在该区域上计算标准偏差,如果标准偏差低于 ``contrast_threshold`` ,则跳过该区域。 如果 ``softmax`` 为True,则列表中所有的输出总和为1。否则,列表中的任何输出都可以在0和1之间。