目标检测图像

材料

范例

在本范例中,我们将使用开发板在保存于外部 SD 卡的单张图像上检测 80 种不同类型的目标,例如人、自行车、汽车、笔记本电脑等。

File -> Examples -> AmebaNN -> ObjectDetectionImage 中打开目标检测图像范例。

../../_images/image015.png

使用 modelSelect() 函数选择神经网络(NN)任务和模型。该函数接受 4 个参数:神经网络任务、目标检测模型、人脸检测模型和人脸识别模型。如果所选神经网络任务不需要某些模型,请用 "NA_MODEL" 替换。请注意,在调用 begin() 函数之前,必须调用 modelSelect() 函数。

  • 有效的神经网络任务: OBJECT_DETECTIONFACE_DETECTIONFACE_RECOGNITION

  • 有效的目标检测模型:

    • YOLOv3-tiny 模型: DEFAULT_YOLOV3TINYCUSTOMIZED_YOLOV3TINY

    • YOLOv4-tiny 模型: DEFAULT_YOLOV4TINYCUSTOMIZED_YOLOV4TINY

    • YOLOv7-tiny 模型: DEFAULT_YOLOV7TINYCUSTOMIZED_YOLOV7TINY

  • 有效的人脸检测模型: DEFAULT_SCRFDCUSTOMIZED_SCRFD

  • 有效的人脸识别模型: DEFAULT_MOBILEFACENETCUSTOMIZED_MOBILEFACENET

如果您想使用自己的神经网络模型,请选择自定义选项(例如 CUSTOMIZED_YOLOV4TINY/ CUSTOMIZED_SCRFD/ CUSTOMIZED_MOBILEFACENET)。要了解 AI 模型转换的流程,请参考 AI 模型转换工具 。此外,请参考 AI 模型部署指南 了解如何安装和使用转换后的模型。

小技巧

请注意,对于从 PyTorch 训练的 Yolov7 目标检测模型,您需要额外执行一个重参数化步骤。Realtek 已在 Yolov7_reparam_scripts 文件夹(位于 ~/NeuralNetwork/Yolov7_reparam_scripts)中提供了两个脚本。

运行命令: python reparam_yolov7-tiny.py --weights weights/best.pt --custom_yaml custom/yolov7-tiny-deploy.yaml --output best_reparam.pt

您也可以参考 自定义 YOLOv7-tiny 模型重参数化指南 获取指导。

接下来,创建一个名为 image_list.txt 的文本文件,或按您的需要重命名。

../../_images/image025.png

在创建的文本文件中列出要处理的图像。

编译并上传代码。打开串口监视器查看响应。

NN 检测结果将保存为与图像同名的 JSON 文件。您也可以在串口监视器上查看结果(如下所示)。

../../_images/image035.png

预训练模型总共可以识别 80 种不同类型的目标。每个目标的索引号是固定的,不应更改。

请参考以下由默认 YOLO 模型识别的目标列表,目标的索引对应 JSON 文件中的 "category_id" 值。

{0,  "person"         },
{1,  "bicycle"        },
{2,  "car"            },
{3,  "motorbike"      },
{4,  "aeroplane"      },
{5,  "bus"            },
{6,  "train"          },
{7,  "truck"          },
{8,  "boat"           },
{9,  "traffic light"  },
{10, "fire hydrant"   },
{11, "stop sign"      },
{12, "parking meter"  },
{13, "bench"          },
{14, "bird"           },
{15, "cat"            },
{16, "dog"            },
{17, "horse"          },
{18, "sheep"          },
{19, "cow"            },
{20, "elephant"       },
{21, "bear"           },
{22, "zebra"          },
{23, "giraffe"        },
{24, "backpack"       },
{25, "umbrella"       },
{26, "handbag"        },
{27, "tie"            },
{28, "suitcase"       },
{29, "frisbee"        },
{30, "skis"           },
{31, "snowboard"      },
{32, "sports ball"    },
{33, "kite"           },
{34, "baseball bat"   },
{35, "baseball glove" },
{36, "skateboard"     },
{37, "surfboard"      },
{38, "tennis racket"  },
{39, "bottle"         },
{40, "wine glass"     },
{41, "cup"            },
{42, "fork"           },
{43, "knife"          },
{44, "spoon"          },
{45, "bowl"           },
{46, "banana"         },
{47, "apple"          },
{48, "sandwich"       },
{49, "orange"         },
{50, "broccoli"       },
{51, "carrot"         },
{52, "hot dog"        },
{53, "pizza"          },
{54, "donut"          },
{55, "cake"           },
{56, "chair"          },
{57, "sofa"           },
{58, "pottedplant"    },
{59, "bed"            },
{60, "diningtable"    },
{61, "toilet"         },
{62, "tvmonitor"      },
{63, "laptop"         },
{64, "mouse"          },
{65, "remote"         },
{66, "keyboard"       },
{67, "cell phone"     },
{68, "microwave"      },
{69, "oven"           },
{70, "toaster"        },
{71, "sink"           },
{72, "refrigerator"   },
{73, "book"           },
{74, "clock"          },
{75, "vase"           },
{76, "scissors"       },
{77, "teddy bear"     },
{78, "hair dryer"     },
{79, "toothbrush"     }