首页 > 其他分享 >养猪大户必备!教你用ModelBox开发一个AI数猪应用

养猪大户必备!教你用ModelBox开发一个AI数猪应用

时间:2024-06-20 13:55:41浏览次数:27  
标签:yanso Users ModelBox AI 0.0 System32 Windows miniconda3 数猪

本文分享自华为云社区《ModelBox-视频应用开发:AI智能数猪【玩转华为云】》,作者: 阳光大猫。

一、准备环境

ModelBox端云协同AI开发套件(Windows)环境准备ModelArts+ModelBox 端云协同AI应用开发实训课程

二、应用开发

1. 创建工程

ModelBox sdk目录下使用create.bat创建yolov7_pig工程:

(tensorflow) PS D:\modelbox-win10-x64-1.5.3> .\create.bat -t server -n yolov7_pig 

(tensorflow) D:\modelbox-win10-x64-1.5.3>set BASE_PATH=D:\modelbox-win10-x64-1.5.3\ 

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PATH=D:\modelbox-win10-x64-1.5.3\\python-embed;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3\envs\tensorflow;C:\Users\yanso\miniconda3\envs\tensorflow\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\usr\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Scripts;C:\Users\yanso\miniconda3\envs\tensorflow\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\Library\usr\bin;C:\Users\yanso\miniconda3\Library\bin;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin 

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONPATH=

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONHOME=

(tensorflow) D:\modelbox-win10-x64-1.5.3>python.exe -u D:\modelbox-win10-x64-1.5.3\\create.py -t server -n yolov7_pig
sdk version is modelbox-win10-x64-1.5.3
dos2unix: converting file D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig/graph\modelbox.conf to Unix format...
dos2unix: converting file D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig/graph\yolov7_pig.toml to Unix format...
dos2unix: converting file D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig/bin\mock_task.toml to Unix format...
success: create yolov7_pig in D:\modelbox-win10-x64-1.5.3\workspace

create.bat工具的参数中,-t表示所创建实例的类型,包括serverModelBox工程)、python(Python功能单元)、c++(C++功能单元)、infer(推理功能单元)等;-n表示所创建实例的名称,开发者自行命名。

2. 创建推理功能单元

ModelBox sdk目录下使用create.bat创建yolov7_infer推理功能单元:

(tensorflow) PS D:\modelbox-win10-x64-1.5.3> .\create.bat -t infer -n yolov7_infer -p yolov7_pig  

(tensorflow) D:\modelbox-win10-x64-1.5.3>set BASE_PATH=D:\modelbox-win10-x64-1.5.3\

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PATH=D:\modelbox-win10-x64-1.5.3\\python-embed;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3\envs\tensorflow;C:\Users\yanso\miniconda3\envs\tensorflow\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\usr\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Scripts;C:\Users\yanso\miniconda3\envs\tensorflow\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\Library\usr\bin;C:\Users\yanso\miniconda3\Library\bin;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONPATH=

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONHOME=

(tensorflow) D:\modelbox-win10-x64-1.5.3>python.exe -u D:\modelbox-win10-x64-1.5.3\\create.py -t infer -n yolov7_infer -p yolov7_pig
sdk version is modelbox-win10-x64-1.5.3

create.bat工具使用时,-t infer 即表示创建的是推理功能单元;-n xxx_infer 表示创建的功能单元名称为xxx_infer-p yolov7_pig 表示所创建的功能单元属于yolov7_pig应用。

a. 下载转换好的模型

运行Notebook下载转换好的ONNX格式模型

b. 修改模型配置文件

屏幕截图 2024-06-18 175317.png

模型和配置文件保持在同级目录下

# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.

[base]
name = "yolov7_infer"
device = "cpu"
version = "1.0.0"
description = "your description"
entry = "./best.onnx"  # model file path, use relative path
type = "inference" 
virtual_type = "onnx" # inference engine type: win10 now only support onnx
group_type = "Inference"  # flowunit group attribution, do not change

# Input ports description
[input]
[input.input1]  # input port number, Format is input.input[N]
name = "Input"  # input port name
type = "float"  # input port data type ,e.g. float or uint8
device = "cpu"  # input buffer type: cpu, win10 now copy input from cpu

# Output ports description
[output]
[output.output1] # output port number, Format is output.output[N]
name = "Output"  # output port name
type = "float"   # output port data type ,e.g. float or uint8

3. 创建后处理功能单元

ModelBox sdk目录下使用create.bat创建yolov7_post后处理功能单元

(tensorflow) PS D:\modelbox-win10-x64-1.5.3> .\create.bat -t python -n yolov7_post -p yolov7_pig

(tensorflow) D:\modelbox-win10-x64-1.5.3>set BASE_PATH=D:\modelbox-win10-x64-1.5.3\ 

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PATH=D:\modelbox-win10-x64-1.5.3\\python-embed;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3\envs\tensorflow;C:\Users\yanso\miniconda3\envs\tensorflow\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\usr\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Scripts;C:\Users\yanso\miniconda3\envs\tensorflow\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\Library\usr\bin;C:\Users\yanso\miniconda3\Library\bin;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONPATH=

(tensorflow) D:\modelbox-win10-x64-1.5.3>set PYTHONHOME=

(tensorflow) D:\modelbox-win10-x64-1.5.3>python.exe -u D:\modelbox-win10-x64-1.5.3\\create.py -t python -n yolov7_post -p yolov7_pig
sdk version is modelbox-win10-x64-1.5.3
success: create python yolov7_post in D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig/etc/flowunit/yolov7_post

a. 修改配置文件

# Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.

# Basic config
[base]
name = "yolov7_post" # The FlowUnit name
device = "cpu" # The flowunit runs on cpu
version = "1.0.0" # The version of the flowunit
type = "python" # Fixed value, do not change
description = "description" # The description of the flowunit
entry = "yolov7_post@yolov7_postFlowUnit" # Python flowunit entry function
group_type = "Generic"  # flowunit group attribution, change as Input/Output/Image/Generic ...

# Flowunit Type
stream = false # Whether the flowunit is a stream flowunit
condition = false # Whether the flowunit is a condition flowunit
collapse = false # Whether the flowunit is a collapse flowunit
collapse_all = false # Whether the flowunit will collapse all the data
expand = false #  Whether the flowunit is a expand flowunit

# The default Flowunit config
[config]
net_h = 640
net_w = 640
num_classes = 1
conf_threshold = 0.5
iou_threshold = 0.45

# Input ports description
[input]
[input.input1] # Input port number, the format is input.input[N]
name = "in_feat" # Input port name
type = "float" # Input port type

# Output ports description
[output]
[output.output1] # Output port number, the format is output.output[N]
name = "out_data" # Output port name
type = "string" # Output port type

b. 修改逻辑代码

# Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import _flowunit as modelbox
import numpy as np
import json
import cv2

class yolov7_postFlowUnit(modelbox.FlowUnit):
    # Derived from modelbox.FlowUnit
    def __init__(self):
        super().__init__()

    # Open the flowunit to obtain configuration information
    def open(self, config):
        # 获取功能单元的配置参数
        self.params = {}
        self.params['net_h'] = config.get_int('net_h')
        self.params['net_w'] = config.get_int('net_w')
        self.params['num_classes'] = config.get_int('num_classes')
        self.params['conf_thre'] = config.get_float('conf_threshold')
        self.params['nms_thre'] = config.get_float('iou_threshold')
        self.num_classes = config.get_int('num_classes')

        return modelbox.Status.StatusCode.STATUS_SUCCESS

    # Process the data
    def process(self, data_context):
        # 从DataContext中获取输入输出BufferList对象
        in_feat = data_context.input("in_feat")
        out_data = data_context.output("out_data")

        # yolov7_post process code.
        # 循环处理每一个输入Buffer数据
        for buffer_feat in in_feat:
            # 将输入Buffer转换为numpy对象
            feat_data = np.array(buffer_feat.as_object(), copy=False)
            feat_data = feat_data.reshape((-1, self.num_classes + 5))

            # 业务处理:解码yolov7模型的输出数据,得到检测框,转化为json数据
            bboxes = self.postprocess(feat_data, self.params)
            result = {"det_result": str(bboxes)}

            # 将业务处理返回的结果数据转换为Buffer
            result_str = json.dumps(result)
            out_buffer = modelbox.Buffer(self.get_bind_device(), result_str)

            # 将输出Buffer放入输出BufferList中
            out_data.push_back(out_buffer)

        return modelbox.Status.StatusCode.STATUS_SUCCESS
    
    # model post-processing function
    def postprocess(self, feat_data, params):
        """postprocess for yolo7 model"""
        boxes = []
        class_ids = []
        confidences = []
        for detection in feat_data:
            scores = detection[5:]
            class_id = np.argmax(scores)
            if params['num_classes'] == 1:
                confidence = detection[4]
            else:
                confidence = detection[4] * scores[class_id] 
            if confidence > params['conf_thre']:
                center_x = detection[0] / params['net_w']
                center_y = detection[1] / params['net_h']
                width = detection[2] / params['net_w']
                height = detection[3] / params['net_h']

                left = center_x - width / 2
                top = center_y - height / 2

                class_ids.append(class_id)
                confidences.append(confidence)
                boxes.append([left, top, width, height])

        # use nms algorithm in opencv
        box_idx = cv2.dnn.NMSBoxes(boxes, confidences, params['conf_thre'], params['nms_thre'])

        detections = []
        for i in box_idx:
            boxes[i][0] = max(0.0, boxes[i][0])  # [0, 1]
            boxes[i][1] = max(0.0, boxes[i][1])  # [0, 1]
            boxes[i][2] = min(1.0, boxes[i][0] + boxes[i][2])  # [0, 1]
            boxes[i][3] = min(1.0, boxes[i][1] + boxes[i][3])  # [0, 1]
            dets = np.concatenate(
                [boxes[i], np.array([confidences[i]]), np.array([class_ids[i]])], 0).tolist()
            detections.append(dets)

        return detections

    def close(self):
        # Close the flowunit
        return modelbox.Status()

    def data_pre(self, data_context):
        # Before streaming data starts
        return modelbox.Status()

    def data_post(self, data_context):
        # After streaming data ends
        return modelbox.Status()

    def data_group_pre(self, data_context):
        # Before all streaming data starts
        return modelbox.Status()

    def data_group_post(self, data_context):
        # After all streaming data ends
        return modelbox.Status()

4. 创建绘图功能单元

ModelBox sdk目录下使用create.bat创建draw_pig_bbox绘图功能单元:

a. 修改配置文件

# Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.

# Basic config
[base]
name = "draw_pig_bbox" # The FlowUnit name
device = "cpu" # The flowunit runs on cpu
version = "1.0.0" # The version of the flowunit
type = "python" # Fixed value, do not change
description = "description" # The description of the flowunit
entry = "draw_pig_bbox@draw_pig_bboxFlowUnit" # Python flowunit entry function
group_type = "Generic"  # flowunit group attribution, change as Input/Output/Image/Generic ...

# Flowunit Type
stream = false # Whether the flowunit is a stream flowunit
condition = false # Whether the flowunit is a condition flowunit
collapse = false # Whether the flowunit is a collapse flowunit
collapse_all = false # Whether the flowunit will collapse all the data
expand = false #  Whether the flowunit is a expand flowunit

# The default Flowunit config
[config]
item = "value"

# Input ports description
[input]
[input.input1] # Input port number, the format is input.input[N]
name = "in_image" # Input port name
type = "uint8" # Input port type

[input.input2] # Input port number, the format is input.input[N]
name = "in_box" # Input port name
type = "string" # Input port type

# Output ports description
[output]
[output.output1] # Output port number, the format is output.output[N]
name = "out_image" # Output port name
type = "uint8" # Output port type

b. 修改逻辑代码

# Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import _flowunit as modelbox
import numpy as np
import json
import cv2

class draw_pig_bboxFlowUnit(modelbox.FlowUnit):
    # Derived from modelbox.FlowUnit
    def __init__(self):
        super().__init__()

    def open(self, config):
        # Open the flowunit to obtain configuration information
        return modelbox.Status.StatusCode.STATUS_SUCCESS

    def process(self, data_context):
        # Process the data
        in_image = data_context.input("in_image")
        in_box = data_context.input("in_box")
        out_image = data_context.output("out_image")

        # draw_image process code.
        # Remove the following code and add your own code here.
        for buffer_img, buffer_box in zip(in_image, in_box):
            width =  buffer_img.get("width")
            height = buffer_img.get("height")
            channel = buffer_img.get("channel")

            img_data = np.array(buffer_img.as_object(), copy=False)
            img_data = img_data.reshape((height, width, channel))

            bbox_str = buffer_box.as_object()
            bboxes = self.decode_car_bboxes(bbox_str, (height, width))
            img_out = self.draw_bboxes(img_data, bboxes)

            out_buffer = modelbox.Buffer(self.get_bind_device(), img_out)
            out_buffer.copy_meta(buffer_img)
            out_image.push_back(out_buffer)

        return modelbox.Status.StatusCode.STATUS_SUCCESS
    
    def decode_car_bboxes(self, bbox_str, input_shape):
        try:
            labels = [0]  # pig
            bboxes = json.loads(json.loads(bbox_str)['det_result'])
            bboxes = list(filter(lambda x: int(x[5]) in labels, bboxes))
        except Exception as ex:
            print(str(ex))
            return []
        else:
            for bbox in bboxes:
                bbox[0] = int(bbox[0] * input_shape[1])
                bbox[1] = int(bbox[1] * input_shape[0])
                bbox[2] = int(bbox[2] * input_shape[1])
                bbox[3] = int(bbox[3] * input_shape[0])
            return bboxes
        
    def draw_bboxes(self, img_data, bboxes):
        '''画框'''
        count = len(bboxes)
        cv2.putText(img_data, 'pig_count: '+str(count), (20, 40), cv2.FONT_HERSHEY_TRIPLEX, 1.5, (255, 0, 0), thickness=2)
        for bbox in bboxes:
            x1, y1, x2, y2, score, label = bbox
            color = (0, 0, 255)
            names = ['pig']  
            score = '%.2f' % score
            label = '%s:%s' % (names[int(label)], score)
            cv2.rectangle(img_data, (x1, y1), (x2, y2), color, 2)
            cv2.putText(img_data, label, (x1, y1 - 10), cv2.FONT_HERSHEY_TRIPLEX, 0.5, (0, 255, 0), thickness=1)
        return img_data

    def close(self):
        # Close the flowunit
        return modelbox.Status()

    def data_pre(self, data_context):
        # Before streaming data starts
        return modelbox.Status()

    def data_post(self, data_context):
        # After streaming data ends
        return modelbox.Status()

    def data_group_pre(self, data_context):
        # Before all streaming data starts
        return modelbox.Status()

    def data_group_post(self, data_context):
        # After all streaming data ends
        return modelbox.Status()

5. 修改流程图

yolov7_pig工程graph目录下存放流程图,默认的流程图yolov7_pig.toml与工程同名,其内容为(以Windows版ModelBox为例):

 

屏幕截图 2024-06-18 193941.png

# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.

[driver]
dir = ["${HILENS_APP_ROOT}/etc/flowunit",
"${HILENS_APP_ROOT}/etc/flowunit/cpp",
"${HILENS_APP_ROOT}/model",
"${HILENS_MB_SDK_PATH}/flowunit"]
skip-default = true
[profile]
profile=false
trace=false
dir="${HILENS_DATA_DIR}/mb_profile"
[graph]
format = "graphviz"
graphconf = """digraph yolov7_pig {
    node [shape=Mrecord]
    queue_size = 4
    batch_size = 1
    input1[type=input,flowunit=input,device=cpu,deviceid=0]
    data_source_parser[type=flowunit, flowunit=data_source_parser, device=cpu, deviceid=0]
    video_demuxer[type=flowunit, flowunit=video_demuxer, device=cpu, deviceid=0]
    video_decoder[type=flowunit, flowunit=video_decoder, device=cpu, deviceid=0, pix_fmt=rgb]
    image_resize[type=flowunit, flowunit=resize, device=cpu, deviceid=0, image_width=640, image_height=640]
    image_transpose[type=flowunit, flowunit=packed_planar_transpose, device=cpu, deviceid=0]
    normalize[type=flowunit flowunit=normalize device=cpu deviceid=0 standard_deviation_inverse="0.0039215686,0.0039215686,0.0039215686"]
    yolov7_infer[type=flowunit, flowunit=yolov7_infer, device=cpu, deviceid=0, batch_size = 1]
    yolov7_post[type=flowunit, flowunit=yolov7_post, device=cpu, deviceid=0]
    draw_pig_bbox[type=flowunit, flowunit=draw_pig_bbox, device=cpu, deviceid=0]
    video_out[type=flowunit, flowunit=video_out, device=cpu, deviceid=0]
    
    input1:input -> data_source_parser:in_data
    data_source_parser:out_video_url -> video_demuxer:in_video_url
    video_demuxer:out_video_packet -> video_decoder:in_video_packet
    video_decoder:out_video_frame -> image_resize:in_image
    image_resize:out_image -> image_transpose:in_image
    image_transpose:out_image -> normalize:in_data
    normalize:out_data -> yolov7_infer:Input
    yolov7_infer:Output -> yolov7_post:in_feat
    video_decoder:out_video_frame -> draw_pig_bbox:in_image
    yolov7_post:out_data -> draw_pig_bbox:in_box
    draw_pig_bbox:out_image -> video_out:in_video_frame
}"""
[flow]
desc = "yolov7_pig run in modelbox-win10-x64"

yolov7_pig工程graph目录下存放流程图,新建流程图yolov7_pig_http.toml,其内容为(以Windows版ModelBox为例):

屏幕截图 2024-06-18 194152.png

# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.

[driver]
dir = ["${HILENS_APP_ROOT}/etc/flowunit",
"${HILENS_APP_ROOT}/etc/flowunit/cpp",
"${HILENS_APP_ROOT}/model",
"${HILENS_MB_SDK_PATH}/flowunit"]
skip-default = true
[profile]
profile=false
trace=false
dir="${HILENS_DATA_DIR}/mb_profile"
[graph]
format = "graphviz"
graphconf = """digraph yolov7_pig {
    node [shape=Mrecord]
    queue_size = 4
    batch_size = 1
    input1[type=input,flowunit=input,device=cpu,deviceid=0]

    httpserver_sync_receive[type=flowunit, flowunit=httpserver_sync_receive_v2, device=cpu, deviceid=0, time_out_ms=5000, endpoint="http://0.0.0.0:8083/v1/yolov7_pig", max_requests=100]
    image_decoder[type=flowunit, flowunit=image_decoder, device=cpu, key="image_base64", queue_size=4]
    image_resize[type=flowunit, flowunit=resize, device=cpu, deviceid=0, image_width=640, image_height=640]
    image_transpose[type=flowunit, flowunit=packed_planar_transpose, device=cpu, deviceid=0]
    normalize[type=flowunit flowunit=normalize device=cpu deviceid=0 standard_deviation_inverse="0.0039215686,0.0039215686,0.0039215686"]
    yolov7_infer[type=flowunit, flowunit=yolov7_infer, device=cpu, deviceid=0, batch_size = 1]
    yolov7_post[type=flowunit, flowunit=yolov7_post, device=cpu, deviceid=0]
    httpserver_sync_reply[type=flowunit, flowunit=httpserver_sync_reply_v2, device=cpu, deviceid=0]
    
    input1:input -> httpserver_sync_receive:in_url
    httpserver_sync_receive:out_request_info -> image_decoder:in_encoded_image
    image_decoder:out_image -> image_resize:in_image
    image_resize:out_image -> image_transpose:in_image
    image_transpose:out_image -> normalize:in_data
    normalize:out_data -> yolov7_infer:Input
    yolov7_infer:Output -> yolov7_post:in_feat
    yolov7_post:out_data -> httpserver_sync_reply:in_reply_info
}"""
[flow]
desc = "yolov7_pig run in modelbox-win10-x64"

三、运行应用

准备测试视频和测试图片,在yolov7_pet工程目录下修改bin/mock_task.toml配置文件:

# 用于本地mock文件读取任务,脚本中已经配置了IVA_SVC_CONFIG环境变量, 添加了此文件路径
########### 请确定使用linux的路径类型,比如在windows上要用  D:/xxx/xxx  不能用D:\xxx\xxx  ###########
# 任务的参数为一个压缩并转义后的json字符串
# 直接写需要转义双引号, 也可以用 content_file 添加一个json文件,如果content和content_file都存在content会被覆盖
# content_file支持绝对路径或者相对路径,不支持解析环境变量(包括${HILENS_APP_ROOT}、${HILENS_DATA_DIR}等)
[common]
content = "{\"param_str\":\"string param\",\"param_int\":10,\"param_float\":10.5}"

# 任务输入配置,mock模拟目前仅支持一路rtsp或者本地url, 当前支持以下几种输入方式:
# 1. rtsp摄像头或rtsp视频流:type="rtsp", url="rtsp://xxx.xxx"  (type为rtsp的时候,支持视频中断自动重连)
# 2. 设备自带摄像头或者USB摄像头:type="url",url="摄像头编号,比如 0 或者 1 等" (需配合local_camera功能单元使用)
# 3. 本地视频文件:type="url",url="视频文件路径" (可以是相对路径 -- 相对这个mock_task.toml文件, 也支持从环境变量${HILENS_APP_ROOT}所在目录文件输入)
# 4. http服务:type="url", url="http://xxx.xxx"(指的是任务作为http服务启动,此处需填写对外暴露的http服务地址,需配合httpserver类的功能单元使用)
# 5. 支持多输入[input] [input1] [input2] ...,对应的输出为[output] [output1] [output2] ...,如果使用videoout功能单元输出,则输入和输出个数必须匹配,同时url不能重名
[input]
type = "url"
url = "${HILENS_APP_ROOT}/data/pig.mp4"

# 任务输出配置,当前支持以下几种输出方式:
# 1. rtsp视频流:type="local", url="rtsp://xxx.xxx" 
# 2. 本地屏幕:type="local", url="0:xxx" (设备需要接显示器,系统需要安装桌面)
# 3. 本地视频文件:type="local",url="视频文件路径" (可以是相对路径——相对这个mock_task.toml文件, 也支持输出到环境变量${HILENS_DATA_DIR}所在目录或子目录)
# 4. http服务:type="webhook", url="http://xxx.xxx" (指的是任务产生的数据上报给某个http服务,此处需填写上传的http服务地址)
[output]
type = "local"
# url = "0:pig_det"  
url = "${HILENS_APP_ROOT}/hilens_data_dir/pig_detection_result.mp4"

yolov7_pig工程目录下执行.\bin\main.bat运行应用:

(tensorflow) PS D:\modelbox-win10-x64-1.5.3> cd D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig
(tensorflow) PS D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig> .\bin\main.bat     

(tensorflow) D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig>set PATH=D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../../../python-embed;D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../../../modelbox-win10-x64/bin;D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../dependence/lib;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3\envs\tensorflow;C:\Users\yanso\miniconda3\envs\tensorflow\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\usr\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Scripts;C:\Users\yanso\miniconda3\envs\tensorflow\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\Library\usr\bin;C:\Users\yanso\miniconda3\Library\bin;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin

(tensorflow) D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig>modelbox.exe -c D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../graph/modelbox.conf
[2024-06-18 19:16:51,441][ WARN][    iva_config.cc:143 ] update vas url failed. Fault, no vas projectid or iva endpoint
open log file D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../hilens_data_dir/log/modelbox.log failed, No error
input dims is:1,3,640,640,
output dims is:1,25200,6,
[h264_mf @ 0000000046bab040] MFT name: 'H264 Encoder MFT'
[2024-06-18 19:17:44,535][ WARN][ffmpeg_video_muxer.cc:78  ] Success: video stream has been written to D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/hilens_data_dir/pig_detection_result.mp4
[2024-06-18 19:17:44,788][ERROR][flow_scheduler.cc:438 ] the scheduler caught an error : Stop operation
Press any key to continue . . . 

生成的视频保存在yolov7_pig工程目录下hilens_data_dir文件夹中:

屏幕截图 2024-06-18 191854.png

yolov7_pig工程目录下执行.\bin\main.bat http开启HTTP服务:

(tensorflow) PS D:\modelbox-win10-x64-1.5.3> cd D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig                                                                             
(tensorflow) PS D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig> .\bin\main.bat http

(tensorflow) D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig>set PATH=D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../../../python-embed;D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../../../modelbox-win10-x64/bin;D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../dependence/lib;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3\envs\tensorflow;C:\Users\yanso\miniconda3\envs\tensorflow\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\usr\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Library\bin;C:\Users\yanso\miniconda3\envs\tensorflow\Scripts;C:\Users\yanso\miniconda3\envs\tensorflow\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\yanso\miniconda3\envs\tensorflow\lib\site-packages\pywin32_system32;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Library\mingw-w64\bin;C:\Users\yanso\miniconda3\Library\usr\bin;C:\Users\yanso\miniconda3\Library\bin;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\bin;C:\Users\yanso\miniconda3\condabin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin;C:\Windows\System32\HWAudioDriverLibs;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\yanso\miniconda3;C:\Users\yanso\miniconda3\Scripts;C:\Users\yanso\miniconda3\Library\bin;.;C:\Program Files\Git LFS;C:\Users\yanso\AppData\Local\Microsoft\WindowsApps;.;C:\Users\yanso\AppData\Local\Programs\Microsoft VS Code\bin

(tensorflow) D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig>modelbox.exe -c D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../graph/modelbox.conf
[2024-06-18 19:23:53,655][ WARN][    iva_config.cc:143 ] update vas url failed. Fault, no vas projectid or iva endpoint
open log file D:/modelbox-win10-x64-1.5.3/workspace/yolov7_pig/bin/../hilens_data_dir/log/modelbox.log failed, No error
input dims is:1,3,640,640,
output dims is:1,25200,6,

HTTP服务启动后可以在另一个终端进行请求测试,进入yolov7_pig工程目录data文件夹中创建test_http.py脚本然后发起HTTP请求进行测试:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved.

import os
import cv2
import json
import base64
import http.client
class HttpConfig:
    '''http调用的参数配置'''
    def __init__(self, host_ip, port, url, img_base64_str):
        self.hostIP = host_ip
        self.Port = port

        self.httpMethod = "POST"
        self.requstURL = url
        self.headerdata = {
            "Content-Type": "application/json"
        }
        self.test_data = {
            "image_base64": img_base64_str
        }
        self.body = json.dumps(self.test_data)
def read_image(img_path):
    '''读取图片数据并转为base64编码的字符串'''
    img_data = cv2.imread(img_path)
    img_str = cv2.imencode('.jpg', img_data)[1].tostring()
    img_bin = base64.b64encode(img_str)
    img_base64_str = str(img_bin, encoding='utf8')

    return img_data, img_base64_str
def decode_car_bboxes(bbox_str, input_shape):
    try:
        labels = [0, 1]  # cat, dog
        bboxes = json.loads(json.loads(bbox_str)['det_result'])
        bboxes = list(filter(lambda x: int(x[5]) in labels, bboxes))
    except Exception as ex:
        print(str(ex))
        return []
    else:
        for bbox in bboxes:
            bbox[0] = int(bbox[0] * input_shape[1])
            bbox[1] = int(bbox[1] * input_shape[0])
            bbox[2] = int(bbox[2] * input_shape[1])
            bbox[3] = int(bbox[3] * input_shape[0])

        return bboxes
def draw_bboxes(img_data, bboxes):
    '''绘制检测框'''
    count = len(bboxes)
    cv2.putText(img_data, 'pig_count: '+str(count), (20, 40), cv2.FONT_HERSHEY_TRIPLEX, 1.5, (255, 0, 0), thickness=2)
    for bbox in bboxes:
        x1, y1, x2, y2, score, label = bbox
        color = (0, 0, 255)
        names = ['pig']  
        score = '%.2f' % score
        label = '%s:%s' % (names[int(label)], score)
        cv2.rectangle(img_data, (x1, y1), (x2, y2), color, 2)
        cv2.putText(img_data, label, (x1, y1 - 10), cv2.FONT_HERSHEY_TRIPLEX, 0.5, (0, 255, 0), thickness=1)

    return img_data, count
def test_image(img_path, ip, port, url):
    '''单张图片测试'''
    img_data, img_base64_str = read_image(img_path)
    http_config = HttpConfig(ip, port, url, img_base64_str)

    conn = http.client.HTTPConnection(host=http_config.hostIP, port=http_config.Port)
    conn.request(method=http_config.httpMethod, url=http_config.requstURL,
                body=http_config.body, headers=http_config.headerdata)

    response = conn.getresponse().read().decode()
    print('response: ', response)

    bboxes = decode_car_bboxes(response, img_data.shape)
    imt_out, count = draw_bboxes(img_data, bboxes)
    cv2.imwrite('./result-' + os.path.basename(img_path), imt_out)

    return count
if __name__ == "__main__":
    port = 8083
    ip = "127.0.0.1"
    url = "/v1/yolov7_pig"
    img_folder = './test_imgs'
    file_list = os.listdir(img_folder)
    for img_file in file_list:
        print("\n================ {} ================".format(img_file))
        img_path = os.path.join(img_folder, img_file)
        count = test_image(img_path, ip, port, url)
        print("================ pig_count: {} ================".format(count))
(tensorflow) PS D:\modelbox-win10-x64-1.5.3> cd D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig\data
(tensorflow) PS D:\modelbox-win10-x64-1.5.3\workspace\yolov7_pig\data> D:\modelbox-win10-x64-1.5.3\python-embed\python.exe .\test_http.py

================ 20190515142012.jpg ================
.\test_http.py:33: DeprecationWarning: tostring() is deprecated. Use tobytes() instead.
  img_str = cv2.imencode('.jpg', img_data)[1].tostring()
response:  {"det_result": "[[0.5314995586872101, 0.41453492641448975, 0.6529222667217255, 0.6227057695388794, 0.9563100934028625, 0.0], [0.5491283953189849, 0.6111114203929902, 0.6829706609249114, 0.7607279121875763, 0.9505243301391602, 0.0], [0.7092265635728836, 0.32529172897338865, 0.7929001301527023, 0.5090352058410644, 0.9247245192527771, 0.0], [0.7478243410587311, 0.24942492246627807, 0.8540475308895111, 0.3306758046150208, 0.8886529207229614, 0.0], [0.2863448441028595, 0.7783691227436066, 0.40429784655570983, 0.9388670146465301, 0.8832182288169861, 0.0], [0.3198540091514588, 0.7068635761737824, 0.469990885257721, 0.8155526340007783, 0.8750752806663513, 0.0], [0.8573761910200118, 0.1112288475036621, 0.9163458853960037, 0.24985072612762452, 0.8558010458946228, 0.0], [0.19583110213279725, 0.4393650829792023, 0.3086510717868805, 0.5697859942913055, 0.8494003415107727, 0.0], [0.6343106091022491, 0.031079763174057015, 0.7757764041423798, 0.11533512473106385, 0.8335027098655701, 0.0], [0.32979671955108647, 0.24954813718795776, 0.41185748577117925, 0.4911258816719055, 0.8318935036659241, 0.0], [0.42157947421073916, 0.6686352252960205, 0.5486672222614288, 0.8406521320343017, 0.8014721274375916, 0.0], [0.036364993453025816, 0.3792011857032776, 0.11506653130054473, 0.5173661589622498, 0.7864469289779663, 0.0], [0.18477005362510682, 0.7536652505397796, 0.2830569803714752, 0.9396657049655914, 0.7493076324462891, 0.0], [0.7877487927675247, 0.0820700079202652, 0.8679187029600144, 0.16506505906581878, 0.7153295278549194, 0.0], [0.8873884886503219, 0.4463221430778504, 0.968685844540596, 0.6051429867744447, 0.6919704675674438, 0.0], [0.08014355301856996, 0.73122136592865, 0.14829849600791933, 0.8797563791275025, 0.6634459495544434, 0.0], [0.2530277907848358, 0.7759395956993104, 0.31589220166206355, 0.9465934395790101, 0.6256685853004456, 0.0], [0.059241372346878055, 0.7150145590305328, 0.1196309506893158, 0.8592026650905609, 0.6242099404335022, 0.0], [0.5020054757595062, 0.7558817148208619, 0.6267922461032867, 0.9292884588241578, 0.6164543032646179, 0.0], [0.12215411663055419, 0.6416930139064789, 0.2372045278549194, 0.7511061728000641, 0.5967950224876404, 0.0], [0.5455536484718323, 0.7130935192108154, 0.6122338652610779, 0.8517275333404541, 0.5695550441741943, 0.0]]"}
================ pig_count: 21 ================

================ 20190515142128.jpg ================
response:  {"det_result": "[[0.2530054211616516, 0.3259969651699066, 0.37694138288497925, 0.5073411047458649, 0.9552642107009888, 0.0], [0.7655192792415619, 0.37133423089981077, 0.8948265612125397, 0.5411525130271911, 0.946380078792572, 0.0], [0.7068361639976501, 0.6438457131385803, 0.8532623887062073, 0.7564051985740662, 0.9442737698554993, 0.0], [0.4689387619495392, 0.6953599870204925, 0.6093841254711152, 0.8904086172580719, 0.9394132494926453, 0.0], [0.5610995948314667, 0.41046096086502076, 0.7043379127979279, 0.5980172038078309, 0.9185187816619873, 0.0], [0.1679925262928009, 0.7986599743366241, 0.27840816378593447, 0.9098593890666961, 0.9116157293319702, 0.0], [0.6167296946048737, 0.47176125049591067, 0.7882755696773529, 0.5939736127853393, 0.9113425016403198, 0.0], [0.8483672857284545, 0.558952933549881, 0.9509815454483032, 0.6832078635692597, 0.9013326168060303, 0.0], [0.6976672232151032, 0.05890357494354248, 0.7643234193325044, 0.14790127277374268, 0.8907486200332642, 0.0], [0.3439214825630188, 0.764359337091446, 0.48462504148483276, 0.9410788953304292, 0.8897976875305176, 0.0], [0.9087600618600845, 0.41939428448677063, 0.9657777875661849, 0.5442929446697236, 0.8668227791786194, 0.0], [0.5307900249958039, 0.013786908984184262, 0.6927152812480927, 0.10742981731891632, 0.8617266416549683, 0.0], [0.06923194527626038, 0.2071500480175018, 0.1422653615474701, 0.354218989610672, 0.8515089154243469, 0.0], [0.46218110322952266, 0.543884563446045, 0.5642802119255066, 0.7718154907226563, 0.8315367102622986, 0.0], [0.12014133036136627, 0.7533746421337127, 0.20710271298885347, 0.8859859764575958, 0.8161348700523376, 0.0], [0.6099689096212387, 0.6311885595321655, 0.6959998518228531, 0.8344843149185179, 0.8158949613571167, 0.0], [0.47475093603134155, 0.15836940407752992, 0.5509012818336487, 0.3299554765224457, 0.7964221239089966, 0.0], [0.7360249996185303, 0.20219690799713136, 0.8462663173675538, 0.2739208459854126, 0.7939417958259583, 0.0], [0.8505313932895661, 0.15010038614273072, 0.905955308675766, 0.22253469228744507, 0.766402542591095, 0.0], [0.8721131294965744, 0.3546452701091766, 0.9455597907304764, 0.4159835159778595, 0.7579628825187683, 0.0], [0.8202457576990128, 0.07152213156223297, 0.8842441409826278, 0.16832662522792816, 0.7537699937820435, 0.0], [0.4672187626361847, 0.8035521984100341, 0.6121010005474091, 0.9495066165924071, 0.7330396771430969, 0.0], [0.7931241631507874, 0.07484636306762696, 0.8552763342857361, 0.2041161298751831, 0.7252987623214722, 0.0], [0.05245172083377838, 0.34656997919082644, 0.11882493197917937, 0.4487423300743103, 0.711035966873169, 0.0], [0.039842239022254936, 0.6570722877979278, 0.10100120007991789, 0.7980956733226776, 0.7003825902938843, 0.0], [0.07937039136886598, 0.6993482947349549, 0.14970344305038452, 0.808335554599762, 0.6464911699295044, 0.0], [0.0408034861087799, 0.24992489218711852, 0.08359875082969664, 0.36381874680519105, 0.6194641590118408, 0.0]]"}
================ pig_count: 27 ================

================ 20190515143224.jpg ================
response:  {"det_result": "[[0.33151587247848513, 0.7472196042537689, 0.4520726799964905, 0.944657951593399, 0.9549262523651123, 0.0], [0.6966262102127075, 0.38143407106399535, 0.8187609434127808, 0.5275840640068055, 0.9383824467658997, 0.0], [0.3309335768222809, 0.38504688739776616, 0.5029547631740571, 0.5163029432296753, 0.9308131337165833, 0.0], [0.22159602940082548, 0.2502309620380402, 0.2970270365476608, 0.4074728190898895, 0.9295130372047424, 0.0], [0.52587131857872, 0.6116060733795166, 0.6969760477542877, 0.7392594814300537, 0.9274167418479919, 0.0], [0.8019156157970428, 0.5839392662048339, 0.9134944260120392, 0.6862605094909667, 0.9207823276519775, 0.0], [0.22548656463623046, 0.7824307978153229, 0.3473879337310791, 0.9226225316524506, 0.9075026512145996, 0.0], [0.7616031408309937, 0.23449447751045227, 0.8773191690444947, 0.30470640063285825, 0.8723774552345276, 0.0], [0.47462679147720344, 0.7428544700145722, 0.659464204311371, 0.8985731422901153, 0.8692379593849182, 0.0], [0.7726404637098313, 0.047815185785293576, 0.8582356959581375, 0.16538638472557066, 0.857752799987793, 0.0], [0.04095276296138763, 0.35726237297058105, 0.09002236425876617, 0.4370449066162109, 0.8512980937957764, 0.0], [0.5121502339839935, 0.16153932213783262, 0.5878590166568756, 0.35389813780784607, 0.8481522798538208, 0.0], [0.6813990414142609, 0.5552682638168336, 0.8241379916667939, 0.7315007448196412, 0.8349569439888, 0.0], [0.7848798453807831, 0.2997883439064026, 0.8487448036670685, 0.4219695448875427, 0.8328686952590942, 0.0], [0.675277727842331, 0.5038471221923828, 0.788842660188675, 0.5971584320068359, 0.8305914998054504, 0.0], [0.36567584276199344, 0.1846299886703491, 0.4232009768486023, 0.32693817615509035, 0.8237928748130798, 0.0], [0.8332049459218979, 0.15594483613967897, 0.9077650934457778, 0.21918100118637085, 0.8095088005065918, 0.0], [0.8188231199979782, 0.5099769771099091, 0.9065980225801468, 0.5991565525531769, 0.789814293384552, 0.0], [0.16333829164505004, 0.7263919234275817, 0.23472834825515745, 0.8557828545570373, 0.77839595079422, 0.0], [0.09923059344291688, 0.5434492200613021, 0.2318732798099518, 0.6342397600412368, 0.7709190249443054, 0.0], [0.04113772809505463, 0.6769565641880035, 0.09518382847309112, 0.7874909341335297, 0.7675528526306152, 0.0], [0.12286571264266968, 0.7784929722547531, 0.18941720724105837, 0.8611520320177078, 0.7538224458694458, 0.0], [0.8486063361167908, 0.1046980857849121, 0.8987706780433655, 0.17449078559875486, 0.6860058307647705, 0.0], [0.8597557455301285, 0.3714954495429993, 0.9395408242940902, 0.5046039462089539, 0.6594332456588745, 0.0], [0.725972306728363, 0.2879889786243439, 0.8093014359474182, 0.4364859759807587, 0.6504802703857422, 0.0], [0.80337233543396, 0.43979210257530216, 0.9095016956329346, 0.5416744768619538, 0.5330303907394409, 0.0], [0.0, 0.44415642619132994, 0.03889097571372986, 0.5607487976551055, 0.5000762939453125, 0.0]]"}
================ pig_count: 27 ================

================ 20190515143432.jpg ================
response:  {"det_result": "[[0.6373811900615692, 0.4556077837944031, 0.7505947887897492, 0.6163338780403137, 0.958651065826416, 0.0], [0.7536835551261902, 0.19262979030609134, 0.853804886341095, 0.3675990819931031, 0.9556296467781067, 0.0], [0.24914194345474241, 0.1605188548564911, 0.37957080602645876, 0.2712996304035187, 0.9410728812217712, 0.0], [0.5784417808055878, 0.6893238723278046, 0.7007974922657013, 0.8144921600818634, 0.9311926364898682, 0.0], [0.4877449214458466, 0.838113933801651, 0.6275949299335479, 0.9414070546627045, 0.9248373508453369, 0.0], [0.7326700747013092, 0.5087914645671845, 0.8424749791622161, 0.6524371922016144, 0.9235878586769104, 0.0], [0.6557062178850174, 0.04749650359153747, 0.7422844856977463, 0.22362623810768129, 0.8662278056144714, 0.0], [0.7520786702632904, 0.37903311252593996, 0.8365497171878815, 0.5275002241134643, 0.8632115721702576, 0.0], [0.4560465335845947, 0.7834814339876175, 0.5788590908050537, 0.875244876742363, 0.8591019511222839, 0.0], [0.8486663192510605, 0.24308437108993527, 0.9209946304559707, 0.38057256937026973, 0.8481018543243408, 0.0], [0.06989501118659974, 0.21171223521232607, 0.14719852805137634, 0.2901284992694855, 0.8403106927871704, 0.0], [0.07931529581546784, 0.7274754464626313, 0.14586327970027924, 0.8284106314182282, 0.8276875019073486, 0.0], [0.8199215471744538, 0.5190264046192169, 0.916180557012558, 0.601987999677658, 0.8218949437141418, 0.0], [0.7753406018018723, 0.6247795641422271, 0.869887974858284, 0.7028177678585052, 0.8103967905044556, 0.0], [0.5350410103797912, 0.2904348909854889, 0.7034945845603943, 0.47202824950218203, 0.7742581367492676, 0.0], [0.7052563428878784, 0.594559383392334, 0.7930361032485962, 0.802627182006836, 0.7661027312278748, 0.0], [0.2078638195991516, 0.836474758386612, 0.3327731490135193, 0.9146723210811616, 0.7656165361404419, 0.0], [0.35651546716690063, 0.8356708973646164, 0.48673042058944704, 0.9123004466295243, 0.7651214599609375, 0.0], [0.04286686778068543, 0.651385509967804, 0.1189558446407318, 0.7819379687309265, 0.7318003177642822, 0.0], [0.16353363096714021, 0.7001014947891235, 0.23111434876918796, 0.8483508825302124, 0.7219746112823486, 0.0], [0.8943167269229888, 0.465467381477356, 0.9480641782283782, 0.5696653127670288, 0.7132480144500732, 0.0], [0.13475828468799592, 0.7123962700366974, 0.19173202216625213, 0.8635941207408905, 0.6760420203208923, 0.0], [0.9031854838132858, 0.37944490909576417, 0.9443069249391556, 0.4960151433944702, 0.6697810292243958, 0.0], [0.7169572085142135, 0.051375272870063785, 0.7699337750673294, 0.11804214417934418, 0.5670255422592163, 0.0]]"}
================ pig_count: 24 ================

================ 20190621141141.jpg ================
response:  {"det_result": "[[0.2858048617839813, 0.6920524835586548, 0.40033505558967586, 0.876273512840271, 0.9693846702575684, 0.0], [0.8160727888345719, 0.3245592772960663, 0.9153503984212876, 0.44209216237068183, 0.9652171730995178, 0.0], [0.3276993572711945, 0.2825296759605408, 0.48299114108085633, 0.4778394341468811, 0.9459359049797058, 0.0], [0.7524076730012894, 0.6082898855209351, 0.8520412176847458, 0.7410279512405396, 0.9435095191001892, 0.0], [0.52833012342453, 0.6118248403072357, 0.7453569531440735, 0.7360025942325592, 0.9292019009590149, 0.0], [0.7283130764961242, 0.24003291130065915, 0.8490503191947937, 0.41690392494201656, 0.9274832010269165, 0.0], [0.5753984153270721, 0.7113316237926484, 0.7098467171192169, 0.8695607483386993, 0.9142341613769531, 0.0], [0.3426991164684296, 0.160414856672287, 0.502489310503006, 0.24934423565864564, 0.8892913460731506, 0.0], [0.21955735087394712, 0.14540990591049194, 0.34493497014045715, 0.25439044237136843, 0.8848840594291687, 0.0], [0.17622598409652712, 0.7975501120090485, 0.28576570749282837, 0.894774717092514, 0.8471149206161499, 0.0], [0.4498146414756775, 0.7951198756694794, 0.602517569065094, 0.8975848972797394, 0.8465115427970886, 0.0], [0.336152708530426, 0.7672465980052948, 0.4467101454734802, 0.9145124733448029, 0.8383660912513733, 0.0], [0.8808505088090897, 0.5050277709960938, 0.9662985771894455, 0.6021172523498535, 0.8287425637245178, 0.0], [0.5983243703842164, 0.05242392122745514, 0.7141552209854126, 0.10514067113399506, 0.8067843317985535, 0.0], [0.03119544088840484, 0.5027143061161041, 0.09562594592571258, 0.6602520406246185, 0.8055742383003235, 0.0], [0.3866620540618897, 0.8470147281885146, 0.5265138149261475, 0.9368914455175399, 0.8049367666244507, 0.0], [0.8214336901903153, 0.2318374812602997, 0.8985568493604661, 0.337394791841507, 0.7954773902893066, 0.0], [0.6170122742652893, 0.07954724133014679, 0.7388171553611755, 0.14763021171092988, 0.7868005633354187, 0.0], [0.7230192244052887, 0.07258228063583373, 0.8153064668178558, 0.15148414373397828, 0.7648471593856812, 0.0], [0.050417631864547736, 0.6464603543281555, 0.11656169295310975, 0.7629135966300964, 0.7563851475715637, 0.0], [0.8766493797302246, 0.25733983516693115, 0.929527759552002, 0.373953652381897, 0.731341540813446, 0.0], [0.8231545478105545, 0.10986250042915345, 0.8790049523115159, 0.19118310809135436, 0.7140998840332031, 0.0], [0.10614479780197145, 0.7547796964645386, 0.18728572130203247, 0.8611701250076294, 0.6874741911888123, 0.0], [0.9011492043733597, 0.40590643882751465, 0.9454408377408982, 0.5230727672576905, 0.6780690550804138, 0.0], [0.0784837692975998, 0.7619574457406998, 0.13632536232471468, 0.8540185064077378, 0.602765679359436, 0.0]]"}
================ pig_count: 25 ================

================ 20190621141249.jpg ================
response:  {"det_result": "[[0.32586483359336854, 0.24259638190269472, 0.44065051674842837, 0.4332111418247223, 0.9233660697937012, 0.0], [0.7415802776813507, 0.20339409708976744, 0.8526828944683075, 0.3355763256549835, 0.9134587645530701, 0.0], [0.5598558843135834, 0.06444359421730042, 0.6583136141300201, 0.2255875051021576, 0.9114824533462524, 0.0], [0.25549439787864686, 0.3045780062675476, 0.3439884722232819, 0.5094657063484191, 0.8858470916748047, 0.0], [0.13424646258354186, 0.4089730978012085, 0.25759304165840147, 0.6323755502700805, 0.8812260031700134, 0.0], [0.8928446710109711, 0.36205734610557555, 0.9444068014621735, 0.5137213289737701, 0.8466163277626038, 0.0], [0.23145273327827454, 0.6901010632514953, 0.3217297732830048, 0.8946843981742858, 0.8444425463676453, 0.0], [0.8465079367160797, 0.11456479430198671, 0.89749955534935, 0.22315168976783756, 0.8440980911254883, 0.0], [0.6389145582914353, 0.08545876145362855, 0.7304814606904984, 0.15657412409782412, 0.8438040614128113, 0.0], [0.8596288859844208, 0.2315908432006836, 0.9259816944599152, 0.37012472152709963, 0.8362818956375122, 0.0], [0.3882917046546936, 0.8376923948526382, 0.524693238735199, 0.9266737550497055, 0.8342019319534302, 0.0], [0.6816271901130677, 0.6371851027011872, 0.7663943171501161, 0.8309317529201509, 0.8334851264953613, 0.0], [0.3005506873130798, 0.6813186645507812, 0.3791545510292053, 0.8741531372070311, 0.8274812698364258, 0.0], [0.33739756345748906, 0.33437139391899107, 0.5387834668159486, 0.5037173092365265, 0.8089301586151123, 0.0], [0.8224694639444351, 0.579327318072319, 0.9104406923055649, 0.6655360966920852, 0.8041741847991943, 0.0], [0.6123552083969116, 0.05221189558506012, 0.7181327104568481, 0.11119897067546844, 0.7695637345314026, 0.0], [0.8055596232414245, 0.09786717295646667, 0.8591267704963683, 0.20656116604804992, 0.7643899917602539, 0.0], [0.424746036529541, 0.10845542550086976, 0.5769085884094238, 0.19416474699974062, 0.7628222107887268, 0.0], [0.10420677959918975, 0.7469959199428557, 0.19218709170818327, 0.8613018095493316, 0.7571574449539185, 0.0], [0.17412686347961426, 0.40185985565185545, 0.27423748970031736, 0.5151351928710938, 0.7561619877815247, 0.0], [0.05058914422988891, 0.6416772782802582, 0.1131001591682434, 0.7677843153476716, 0.7416978478431702, 0.0], [0.3409019768238068, 0.7796604573726654, 0.4453953921794892, 0.9214360773563386, 0.7141085863113403, 0.0], [0.18340975642204282, 0.7990216165781021, 0.27464697957038875, 0.8974507421255111, 0.6413347125053406, 0.0], [0.04150465726852417, 0.49037010669708253, 0.08957942724227905, 0.6455666303634644, 0.546801745891571, 0.0]]"}
================ pig_count: 24 ================

================ 20190621141252.jpg ================
response:  {"det_result": "[[0.33483492136001586, 0.24801833033561704, 0.46570180654525756, 0.42209818959236145, 0.9716753363609314, 0.0], [0.2519586384296417, 0.36687822341918946, 0.3474899470806122, 0.5718529701232911, 0.9303265810012817, 0.0], [0.4155482828617096, 0.8238115727901458, 0.533502334356308, 0.9323083460330963, 0.9205400347709656, 0.0], [0.3207600831985473, 0.3376201748847961, 0.5225308179855346, 0.515419566631317, 0.8988451361656189, 0.0], [0.554785406589508, 0.05943803191184999, 0.6596805930137634, 0.22677205204963685, 0.8893870711326599, 0.0], [0.46912367045879366, 0.06897258758544922, 0.5670793324708939, 0.2043828248977661, 0.8699984550476074, 0.0], [0.8252426624298096, 0.4277828633785247, 0.9124511241912842, 0.5882897913455962, 0.8698359131813049, 0.0], [0.6787687718868256, 0.6382624804973602, 0.7658585131168366, 0.8285960018634796, 0.8679203391075134, 0.0], [0.7809970557689666, 0.18303799629211426, 0.8583998024463653, 0.3013877868652344, 0.862260639667511, 0.0], [0.2980193674564362, 0.6860662639141083, 0.3834327161312104, 0.8751100361347199, 0.8417824506759644, 0.0], [0.821492999792099, 0.5867913573980331, 0.9123088419437408, 0.6672211319208144, 0.8390227556228638, 0.0], [0.6389112740755082, 0.0899557739496231, 0.7319891661405564, 0.15791340768337248, 0.8321851491928101, 0.0], [0.33291764855384826, 0.8251787841320037, 0.4365656316280365, 0.954769641160965, 0.8283060789108276, 0.0], [0.8935729414224625, 0.35864530801773076, 0.9461084932088852, 0.5104689955711366, 0.8208484053611755, 0.0], [0.050797092914581295, 0.6406578123569489, 0.11242005825042725, 0.7678249299526214, 0.8082728385925293, 0.0], [0.08978922665119171, 0.7454609930515289, 0.18675152957439423, 0.8624686181545257, 0.8028767704963684, 0.0], [0.23195808827877046, 0.6860327363014221, 0.31602269709110264, 0.8831139922142028, 0.7864329218864441, 0.0], [0.8766951024532319, 0.23855491876602175, 0.9269677698612214, 0.36291831731796265, 0.7816985249519348, 0.0], [0.6164859116077424, 0.051790457963943486, 0.7212261855602264, 0.110322505235672, 0.7430948615074158, 0.0], [0.8110435038805008, 0.095573490858078, 0.8672638386487961, 0.21423617005348206, 0.7066771984100342, 0.0], [0.13872788548469545, 0.4524787902832031, 0.24725345969200135, 0.6506900787353516, 0.6665958762168884, 0.0], [0.8341281533241272, 0.10387264490127564, 0.8950199484825134, 0.2346912741661072, 0.6608691811561584, 0.0], [0.1852737754583359, 0.7818301141262054, 0.28252197802066803, 0.8940926611423492, 0.5649592876434326, 0.0], [0.18228755295276644, 0.38649161458015446, 0.27544007003307347, 0.5115441977977753, 0.5577556490898132, 0.0], [0.3280117630958557, 0.7540877401828766, 0.4142733454704285, 0.9178435266017915, 0.5334183573722839, 0.0]]"}
================ pig_count: 25 ================

================ 20190621141536.jpg ================
response:  {"det_result": "[[0.2564292013645172, 0.33026397228240967, 0.3786363542079925, 0.46099493503570554, 0.9311189651489258, 0.0], [0.2409549355506897, 0.8311348974704742, 0.38049153089523313, 0.9368552148342132, 0.9104359149932861, 0.0], [0.22517320513725278, 0.7295086562633515, 0.35199616551399227, 0.8581309616565704, 0.9079555869102478, 0.0], [0.509332823753357, 0.16211927831172943, 0.678995442390442, 0.2507202297449112, 0.8845471143722534, 0.0], [0.8918281033635139, 0.359416526556015, 0.9418209597468375, 0.5050676882266998, 0.8670594096183777, 0.0], [0.13428189754486083, 0.22141119837760925, 0.23520941734313966, 0.2884054481983185, 0.8528635501861572, 0.0], [0.3410702019929886, 0.3611745774745941, 0.4340797632932663, 0.558493810892105, 0.8483645915985107, 0.0], [0.7241697609424591, 0.07349232137203217, 0.8059853255748749, 0.12879067957401275, 0.8442279696464539, 0.0], [0.6255776345729828, 0.0848228543996811, 0.7324755728244782, 0.146994486451149, 0.8437628746032715, 0.0], [0.653466972708702, 0.670866173505783, 0.746815600991249, 0.820464926958084, 0.8422113656997681, 0.0], [0.6650887668132782, 0.5841597139835358, 0.7750390827655792, 0.768796867132187, 0.8336865901947021, 0.0], [0.2169145882129669, 0.21263003945350648, 0.3436411082744598, 0.3021322667598724, 0.8271554112434387, 0.0], [0.4619706332683563, 0.05729991793632507, 0.6198791325092315, 0.14921229481697082, 0.8270950317382812, 0.0], [0.06911774277687073, 0.6581771194934845, 0.155986088514328, 0.7640855491161346, 0.8267779350280762, 0.0], [0.3990143120288849, 0.14327797889709473, 0.49909006953239443, 0.35340886116027836, 0.8233563899993896, 0.0], [0.8789778590202332, 0.5045474946498871, 0.94303218126297, 0.6238326132297516, 0.8230924606323242, 0.0], [0.3704736530780792, 0.829938891530037, 0.5245399653911591, 0.914329144358635, 0.8186348080635071, 0.0], [0.02738518118858338, 0.28757553100585936, 0.10491183400154114, 0.3996100902557373, 0.8149338364601135, 0.0], [0.797269806265831, 0.09430788457393648, 0.8423305660486221, 0.17682687342166903, 0.8068960309028625, 0.0], [0.03154720366001129, 0.4114041835069656, 0.09893070161342621, 0.4865117520093918, 0.8057674169540405, 0.0], [0.6097052663564682, 0.05152719318866729, 0.7083381563425064, 0.12496560513973236, 0.7765578627586365, 0.0], [0.08852570354938508, 0.7560727655887604, 0.18432852923870086, 0.8482656896114349, 0.7733961343765259, 0.0], [0.8717862963676453, 0.23248609304428097, 0.9263553738594055, 0.3671873688697814, 0.768665611743927, 0.0], [0.18057649135589598, 0.7914771914482117, 0.2740844964981079, 0.8918428540229798, 0.6631293892860413, 0.0], [0.043877321481704715, 0.49001536369323734, 0.08380160927772523, 0.6480004787445068, 0.6335869431495667, 0.0], [0.024194097518920904, 0.3770942836999893, 0.09230124950408936, 0.4345268100500107, 0.6028335690498352, 0.0], [0.05362071692943572, 0.6374618589878083, 0.11426236927509306, 0.7620976388454438, 0.5033589005470276, 0.0]]"}
================ pig_count: 27 ================

================ 20190621141547.jpg ================
response:  {"det_result": "[[0.25542197823524476, 0.3353059649467468, 0.4001975476741791, 0.46317635774612426, 0.9657758474349976, 0.0], [0.19315977990627287, 0.19535972476005556, 0.27108272612094875, 0.33660319447517395, 0.949517011642456, 0.0], [0.43480150699615483, 0.3039972484111786, 0.5892340421676636, 0.4782595932483673, 0.909212052822113, 0.0], [0.37013662457466123, 0.8164689779281616, 0.5137144267559051, 0.9206547021865845, 0.8970624804496765, 0.0], [0.22979669570922853, 0.7306497871875763, 0.35400352478027347, 0.8579780280590058, 0.888817310333252, 0.0], [0.5079127192497254, 0.15616052746772766, 0.6740846753120422, 0.2519838035106659, 0.8762063384056091, 0.0], [0.8885972797870636, 0.35916802287101746, 0.9409824550151825, 0.5116722404956817, 0.8757234811782837, 0.0], [0.3222222745418548, 0.18495855331420902, 0.38973417878150934, 0.34347743988037116, 0.8678868412971497, 0.0], [0.6322253465652465, 0.09085698425769807, 0.7458428144454956, 0.17094678580760958, 0.8662753701210022, 0.0], [0.8779263228178024, 0.5219457924365997, 0.9453038483858108, 0.6253760993480681, 0.8568877577781677, 0.0], [0.5138076961040497, 0.8030386507511139, 0.6839913189411164, 0.9039411008358001, 0.8443552851676941, 0.0], [0.7182290017604828, 0.0744344174861908, 0.8086081564426422, 0.12769191861152648, 0.8384566307067871, 0.0], [0.1342449128627777, 0.7035930752754211, 0.24380694031715394, 0.8636772990226745, 0.8185152411460876, 0.0], [0.041655927896499634, 0.24391731023788454, 0.11607009768486024, 0.3222251534461975, 0.8157849907875061, 0.0], [0.6842417269945145, 0.600456154346466, 0.769045302271843, 0.8204650759696961, 0.807222843170166, 0.0], [0.04178522527217866, 0.428575050830841, 0.09567042887210847, 0.5276386141777039, 0.7973988652229309, 0.0], [0.8679279178380966, 0.2271733820438385, 0.9221431881189347, 0.3715844571590423, 0.7918534278869629, 0.0], [0.10267244279384613, 0.19571231603622435, 0.18719500601291655, 0.27740641832351687, 0.7810215353965759, 0.0], [0.7959055691957474, 0.09352061152458191, 0.8447329729795456, 0.17925546765327455, 0.7788087129592896, 0.0], [0.4553974390029907, 0.060482102632522586, 0.6319695234298706, 0.14058579802513121, 0.7483526468276978, 0.0], [0.15876931250095366, 0.14991192817687987, 0.22859269082546232, 0.26780047416687014, 0.7464203238487244, 0.0], [0.6014808595180511, 0.056060454249382025, 0.7039685308933258, 0.12097258865833282, 0.7415891289710999, 0.0], [0.05432936996221543, 0.6389926671981812, 0.1036943569779396, 0.7548634767532348, 0.7370787262916565, 0.0], [0.08496533930301667, 0.7542163580656052, 0.16024259030818938, 0.8530056267976761, 0.6618684530258179, 0.0], [0.08317945897579193, 0.6818564742803573, 0.15303505957126617, 0.7622250229120254, 0.5794874429702759, 0.0], [0.04344537556171417, 0.5141217648983002, 0.08364923894405366, 0.6476760447025299, 0.504276692867279, 0.0]]"}
================ pig_count: 26 ================

================ 20190621141550.jpg ================
response:  {"det_result": "[[0.6838599711656571, 0.6606208086013794, 0.7710892170667649, 0.8272748708724975, 0.9402938485145569, 0.0], [0.26520926952362056, 0.32953397631645204, 0.38649857044219965, 0.4697645485401154, 0.8982011675834656, 0.0], [0.5156374216079712, 0.15312602519989013, 0.6798028707504273, 0.2708028078079224, 0.8904911875724792, 0.0], [0.36130602955818175, 0.8099759340286256, 0.5101854026317596, 0.9193880796432495, 0.8739372491836548, 0.0], [0.1700303077697754, 0.15172920227050782, 0.23570561408996582, 0.2642632484436035, 0.8728594779968262, 0.0], [0.1329492390155792, 0.21252053380012514, 0.24662813544273374, 0.3257600009441376, 0.8699913620948792, 0.0], [0.8888531982898712, 0.3569968342781067, 0.9418507277965545, 0.5080092310905456, 0.8673768639564514, 0.0], [0.5139020681381226, 0.8026381134986877, 0.6852060556411743, 0.9051722884178162, 0.8656722903251648, 0.0], [0.23541388511657715, 0.7340538442134857, 0.35212721824646, 0.8585911333560944, 0.859419047832489, 0.0], [0.719459256529808, 0.07310810685157776, 0.8092071443796157, 0.12624335885047913, 0.8516564965248108, 0.0], [0.34085788726806643, 0.3349116802215576, 0.5023260116577148, 0.44398775100708004, 0.8464704751968384, 0.0], [0.24616360664367676, 0.13308675289154054, 0.35294475555419924, 0.2814420938491822, 0.8323164582252502, 0.0], [0.795803265273571, 0.09264526665210723, 0.8423913910984994, 0.17893531024456022, 0.8284755349159241, 0.0], [0.4587976574897766, 0.06322473287582397, 0.6270232081413268, 0.14883238077163696, 0.8243702054023743, 0.0], [0.326967653632164, 0.06881043910980225, 0.4206260830163956, 0.2294994354248047, 0.8068063259124756, 0.0], [0.8782558888196945, 0.5038030922412873, 0.943597748875618, 0.6235027015209198, 0.8011397123336792, 0.0], [0.867403370141983, 0.22882308959960937, 0.9206940114498138, 0.3692127227783203, 0.7902088761329651, 0.0], [0.03723717927932739, 0.4061479508876801, 0.0984946608543396, 0.5185569822788239, 0.7802959084510803, 0.0], [0.11167682707309723, 0.763188025355339, 0.1834775060415268, 0.8457253962755203, 0.7796980142593384, 0.0], [0.04055920243263245, 0.23195657432079317, 0.11710016131401063, 0.3247019797563553, 0.7576957941055298, 0.0], [0.6161630868911743, 0.07711478769779206, 0.7365776777267455, 0.16915811002254488, 0.7339129447937012, 0.0], [0.05336735397577286, 0.6376380324363708, 0.10140782445669175, 0.7546170830726624, 0.7209601998329163, 0.0], [0.13452087640762328, 0.7048075258731842, 0.24099754095077514, 0.8507577359676362, 0.7165915369987488, 0.0], [0.17935211658477784, 0.7974438011646271, 0.2714140176773071, 0.897455757856369, 0.6387768387794495, 0.0], [0.08230576813220977, 0.6784022957086563, 0.15640814006328582, 0.7686613410711288, 0.6189611554145813, 0.0], [0.08143793940544128, 0.7604445695877075, 0.1541825830936432, 0.848276400566101, 0.602925181388855, 0.0]]"}
================ pig_count: 26 ================

================ 20190621141553.jpg ================
response:  {"det_result": "[[0.25505531430244444, 0.1648145318031311, 0.36948043704032896, 0.319969117641449, 0.9663053750991821, 0.0], [0.6804072797298432, 0.6567524552345275, 0.7649277269840241, 0.8261979460716247, 0.9214552640914917, 0.0], [0.5162991523742676, 0.1550707459449768, 0.6786110877990723, 0.26980427503585813, 0.89951092004776, 0.0], [0.04029585719108582, 0.39804551005363464, 0.09393433928489686, 0.5120114624500275, 0.8869109749794006, 0.0], [0.2331909120082855, 0.7339452266693115, 0.35462484955787654, 0.8563205242156983, 0.8849216103553772, 0.0], [0.8875470131635665, 0.35947387814521786, 0.9421267539262771, 0.5058832347393035, 0.8830375671386719, 0.0], [0.35890615582466123, 0.8096627533435822, 0.5082674205303193, 0.9209826171398163, 0.8803096413612366, 0.0], [0.22905958890914918, 0.32565538287162776, 0.3996945500373841, 0.466394692659378, 0.8800082206726074, 0.0], [0.3235291659832001, 0.09731526970863341, 0.46806238293647767, 0.2023240029811859, 0.8659636378288269, 0.0], [0.7194619923830032, 0.07266746759414673, 0.8077177256345749, 0.12683988809585572, 0.8515225648880005, 0.0], [0.5173878550529479, 0.8031063377857208, 0.6822316288948058, 0.9041860282421113, 0.8419069051742554, 0.0], [0.7942464396357537, 0.09258331954479218, 0.8421867802739144, 0.17845857441425322, 0.8290656208992004, 0.0], [0.8780211091041564, 0.5133154094219208, 0.9525304198265075, 0.6248787701129913, 0.8264977335929871, 0.0], [0.1312229812145233, 0.23110288381576538, 0.26738985180854796, 0.32273465394973755, 0.8258971571922302, 0.0], [0.1273337364196777, 0.7012694180011749, 0.24159545898437498, 0.8553301990032196, 0.8090124130249023, 0.0], [0.869355183839798, 0.2267285704612732, 0.9228637874126435, 0.37382589578628544, 0.7690571546554565, 0.0], [0.1645243227481842, 0.16016942262649536, 0.23051308989524844, 0.2507018446922302, 0.7572027444839478, 0.0], [0.4552234292030334, 0.06282475888729096, 0.6467123389244078, 0.14914280474185942, 0.7095248699188232, 0.0], [0.6207995533943176, 0.07808120846748351, 0.7318315386772155, 0.17110306620597837, 0.6961165070533752, 0.0], [0.08310246467590332, 0.7593006700277328, 0.16655261516571046, 0.8486085325479508, 0.6946851015090942, 0.0], [0.0550129920244217, 0.6377000391483307, 0.10035936534404755, 0.7601681172847748, 0.6907160878181458, 0.0], [0.1823414504528046, 0.8208630412817001, 0.2753485023975373, 0.8927535206079482, 0.6773250102996826, 0.0], [0.03336356282234192, 0.33990943133831025, 0.09926139712333679, 0.4163350373506546, 0.6322934031486511, 0.0], [0.09137872457504273, 0.6876684784889221, 0.1576262593269348, 0.7882758498191833, 0.5370994806289673, 0.0]]"}
================ pig_count: 24 ================

================ 20190621141702.jpg ================
response:  {"det_result": "[[0.22350141406059268, 0.6762887954711914, 0.3731423199176789, 0.8184487342834472, 0.9548922181129456, 0.0], [0.3554376900196075, 0.8033478677272797, 0.5178024947643279, 0.916188532114029, 0.9342366456985474, 0.0], [0.41963348984718324, 0.10559765100479125, 0.5215966165065765, 0.31351484060287477, 0.9148365259170532, 0.0], [0.24928047060966493, 0.327079701423645, 0.40166056752204893, 0.4416670560836792, 0.8924790620803833, 0.0], [0.5149345755577087, 0.17052462100982668, 0.6779902100563049, 0.29205095767974854, 0.8909578323364258, 0.0], [0.5388258635997771, 0.7447358965873718, 0.6867108643054961, 0.8399172902107239, 0.8849926590919495, 0.0], [0.71777563393116, 0.06494015455245972, 0.7983715027570725, 0.12339491844177246, 0.8744017481803894, 0.0], [0.7954665750265122, 0.5785638570785522, 0.8826254278421403, 0.7036791086196899, 0.8737918138504028, 0.0], [0.6637972176074982, 0.6482859671115876, 0.8199613273143769, 0.7434307992458344, 0.8732413649559021, 0.0], [0.8661074936389923, 0.22600043416023252, 0.9228401839733124, 0.3657041251659393, 0.8627683520317078, 0.0], [0.7602462828159332, 0.11995237469673156, 0.8734313905239105, 0.23398701548576356, 0.8567670583724976, 0.0], [0.8956452071666717, 0.3657357215881347, 0.9450255692005157, 0.5135135650634766, 0.8445569276809692, 0.0], [0.14634484350681304, 0.7393070816993714, 0.23839896619319914, 0.8807906508445741, 0.8305044770240784, 0.0], [0.8794899225234986, 0.5026386678218842, 0.9294854879379273, 0.634317833185196, 0.8270094394683838, 0.0], [0.5092974722385407, 0.815280893445015, 0.6741485536098482, 0.9056802958250046, 0.8193835616111755, 0.0], [0.07616996467113496, 0.21829421520233155, 0.15875621140003204, 0.32190282344818116, 0.8052489757537842, 0.0], [0.6853458523750305, 0.07137364149093627, 0.7411078333854676, 0.2028606295585632, 0.7820446491241455, 0.0], [0.07674590349197388, 0.7687113344669342, 0.14894877672195433, 0.8493100583553314, 0.7341012954711914, 0.0], [0.039960877597332, 0.3126288890838623, 0.08451076298952104, 0.4022897243499756, 0.7196946144104004, 0.0], [0.06600799262523652, 0.6542474508285523, 0.16344936192035675, 0.8114694833755494, 0.6840709447860718, 0.0], [0.5587529957294464, 0.06180830597877503, 0.7073469340801238, 0.2052306354045868, 0.5386325716972351, 0.0], [0.6123762965202332, 0.05824828445911408, 0.7150348782539367, 0.12364704310894013, 0.5344389081001282, 0.0]]"}
================ pig_count: 22 ================

四、本章小结

本章我们介绍了如何使用ModelBox开发一个AI智能数猪的原创应用,我们只需要在之前的基础上重新训练一个猪只目标检测模型进行替换,之后修改配置文件和工程的流程图即可进行视频推理。同时我们可以了解到图片标注、数据处理和模型训练方法,以及对应的推理应用逻辑。

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:yanso,Users,ModelBox,AI,0.0,System32,Windows,miniconda3,数猪
From: https://www.cnblogs.com/huaweiyun/p/18258518

相关文章

  • 独家|GenAI年中回顾,2024网络内容审核的API实战指南
    GenAI,即生成式人工智能,正在不断推动各个领域的创新和发展。一、年中回顾2024年被称为视频生成技术的爆发之年,各类GenAI在全球范围引领了一波又一波的潮流,真称得上是神仙打架。让我们共同回顾2024上半年的GenAI有哪些主要表现,并讨论,大量AI生成内容的涌现,又对互联网内......
  • 不是吧?爱上用AI绘画Stable Diffusion 出图的老板搞这出?打工人的时间真不多了
    家人们!AI留给职场打工人的时间真的不多了!有长远打算的老板们,已经开始研究AI了!甚至有设计师说,自己辛辛苦苦做的海报没过,AI做的却被老板通过了!?这两年,伴随着AI技术的爆炸,不少公司加快了降本增效步伐,身边不少朋友都感到危机重重。比较明显的,是职场竞争环境的变化:外部招聘......
  • 聊一聊 Monitor.Wait 和 Pluse 的底层玩法
    一:背景1.讲故事在dump分析的过程中经常会看到很多线程卡在Monitor.Wait方法上,曾经也有不少人问我为什么用!syncblk看不到Monitor.Wait上的锁信息,刚好昨天有时间我就来研究一下。二:Monitor.Wait底层怎么玩的1.案例演示为了方便讲述,先上一段演示代码,Worker1在执行的过......
  • ChatmoneyAI如狂风般席卷广告创意舞台,轻松闯荡财富之海!
    本文由ChatMoney团队出品引言在广告创意行业,创新和高效是赢得市场的关键。而我今天要分享的就是如何利用ChatmoneyAI这款强大的人工智能工具,打破创新难题,赚取丰厚收益。让我告诉你一个小秘密,有客户曾在一个月内,利用ChatmoneyAI创作了超过100条广告文案,涵盖了多个行业和产品。......
  • AI浪潮下24年毕业生的就业新机遇,人工智能高薪岗位!
    前言据教育部数据统计,2024高校毕业生规模预计达1179万人,将再创历史新高,“就业难”仍是当前大学毕业生需要直面的问题。在此背景下,选择一个就业前景好的专业尤为重要。如果说2023是人工智能爆发的一年,那么2024年,人工智能的影响力将进一步增强,它对我们的生产生活、学习工作......
  • Dell R630硬盘Raid信息恢复
    现象:一台DellR630无法开机,按电源键没反应解决思路:Dell服务器上的Raid卡和硬盘各自保存了一份Raid配置信息,需要将Raid卡的配置信息删掉,使用磁盘上保存的Raid信息进行恢复解决办法:1.找一台可正常开机的DellR630,拆掉所有硬盘,然后开机启动,按Ctrl-R进入Raid配置界面,切换到“VDMg......
  • 初学者学习AI大模型必看指南,一文尽览大模型知识点!绝对干货!!!
    一、什么是大模型?当我们提及大模型时,通常指的是大语言模型(LargeLanguageModel,简称LLM),即文字问答模型,其典型代表便是OpenAI的GPT系列。然而,随着技术的日新月异,大模型已经不单单局限于自然语言处理(NaturalLanguageProcessing)领域的发光发热,而是逐渐渗透到了其他多个领域......
  • 【一文开启StableDiffusion】最火AIGC绘画工具SD阿里云部署指南(含踩坑经验)
     Midjonery使用简单,效果出色,不过需要付费。本文将介绍完全开源的另一款产品StableDiffusion,它的社区目前非常活跃,各种插件和微调模型都非常多,而且它无需付费注册,没有速度、网络限制,非常推荐一试。目前主流AI绘画产品:产品优点缺点StableDiffusionStablityAI公司开源、免费,可......
  • Naive组件-表单的验证 只验证表单的部分规则 单项校验某个表单项
    表单的规则可以只写在表单项上表单校验可以多个判断<n-form-itempath="data":label="$t('Date')":rule="dataRule"><n-select:disabled="props.mode==='编辑'||(props.mode==='添加'&&dialog......
  • [AAAI2024]Out-of-Distribution Detection in Long-Tailed Recognition with Calibrat
    这篇文章设置的问题是:考虑长尾分布的训练集下,对测试集上的OOD样本进行检测。作者在训练集中引入了openset样本学习异常表征,以OCL(OutlierClassLearn)为baseline,训练时引入prototype方法,推理时对logits进行调整校准。问题背景DNNs会把OOD(out-of-distribution)样本误分类为ID(in-di......