更新时间:2022-02-22 GMT+08:00

示例-难例上传

难例上传示例如下所示:

import hilens
import cv2
import numpy as np

def run():
    # 构造摄像头
    cap = hilens.VideoCapture()

    disp = hilens.Display(hilens.HDMI)

    hard_sample = hilens.HardSample(0.5,0.5,1) # 1,2为检测模型使用的算法
    #hard_sample = hilens.HardSample(0.5,0.5,0) # 0为分类模型使用的算法

    hard_sample_flag = False # 是否存在难例上传配置

    hard_sample_config = hilens.get_hard_sample_config() # 获取难例配置
    if not hard_sample_config:
        hilens.warning("hardSampleConfig is empty")
    else:
        hard_sample_flag = True
        data_count = hard_sample_config["hard_sample_setting"][0]["data_count"]
        data_current_count = hard_sample_config["hard_sample_setting"][0]["datacur_count"]
        upload_jpeg_url = hard_sample_config["hard_sample_setting"][0]["dataset_path"]
        model_name = hard_sample_config["hard_sample_setting"][0]["model_name"]
        camera_name = "default"
        if data_count > data_current_count:
            upload_flag = True # upload_flag是否继续上传
        else:
            upload_flag = False

    while True:
        # 获取一帧画面
        frame = cap.read()
        if hard_sample_flag:
            if upload_flag:
                if hard_sample.hard_sample_detection_filter([[0.,0.,1280.,720.,0.4,1]]): # 检测算法的输入为后处理之后的检测框,每个检测框包括[xmin, ymin, xmax, ymax, conf, label](包括置信度和类别标签)
                #if hard_sample.hard_sample_classification_filter([0.2, 0.2, 0.2, 0.2, 0.2],5):  # 分类算法的输入为各类别的概率,即模型的输出
                    hard_sample.upload_jpeg(upload_jpeg_url, data_current_count, model_name, camera_name, frame)
                    data_current_count += 1
                    hard_sample_config["hard_sample_setting"][0]["datacur_count"] = data_current_count
                    if data_current_count == 1 or data_current_count == data_count:
                        if data_current_count == data_count:
                            upload_flag = False
                    hilens.set_hard_sample_config(hard_sample_config) # 更新端侧难例配置文件

        #输出到HDMI
        disp.show(frame)

if __name__ == '__main__':
	#参数【hello】要与基本信息的【检验值】一致。详情请查看开发指南
    hilens.init("hello")
    run()
    hilens.terminate()