如何查看aidemo库的yolov8_seg_postprocess()函数源代码

Viewed 34

问题描述


segment类kmodel输出结果,使用官方的后处理,不能得到期望的掩码。因此我想查找官方后处理的源码。试图在图中的YOLO.py里面寻找后处理源码但是YOLO.py里面的postprocess()代码又有一层封装,使用了aidemo库的yolov8_seg_postprocess()函数,使得我仍然无法看到后处理的完整逻辑:

def postprocess(self,results):
        with ScopedTiming("postprocess",self.debug_mode > 0):
           
            
            if self.task_type=="classify":
                scores=results[0][0]
                max_score=np.max(scores)
                res_idx=np.argmax(scores)
                cls_res=(-1,0.0)
                # 如果类别分数大于阈值,返回当前类别和分数
                if max_score>self.conf_thresh:
                    cls_res=(res_idx,max_score)
                return cls_res
            elif self.task_type=="detect":
                new_result=results[0][0].transpose()
                if self.mode=="image":
                    det_res = aidemo.yolov8_det_postprocess(new_result.copy(),[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.rgb888p_size[1],self.rgb888p_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.max_boxes_num)
                elif self.mode=="video":
                    det_res = aidemo.yolov8_det_postprocess(new_result.copy(),[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.display_size[1],self.display_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.max_boxes_num)
                return det_res
            elif self.task_type=="segment":
                new_result=results[0][0].transpose()
                if self.mode=="image":
                    seg_res = aidemo.yolov8_seg_postprocess(new_result.copy(),results[1][0],[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.rgb888p_size[1],self.rgb888p_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.mask_thresh,self.masks)
                elif self.mode=="video":
                    seg_res = aidemo.yolov8_seg_postprocess(new_result.copy(),results[1][0],[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.display_size[1],self.display_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.mask_thresh,self.masks)
                return seg_res
            elif self.task_type=="obb":
                new_result=results[0][0].transpose()
                if self.mode=="image":
                    obb_res = aidemo.yolo_obb_postprocess(new_result.copy(),[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.rgb888p_size[1],self.rgb888p_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.max_boxes_num)
                elif self.mode=="video":
                    obb_res = aidemo.yolo_obb_postprocess(new_result.copy(),[self.rgb888p_size[1],self.rgb888p_size[0]],[self.model_input_size[1],self.model_input_size[0]],[self.display_size[1],self.display_size[0]],len(self.labels),self.conf_thresh,self.nms_thresh,self.max_boxes_num)
                return obb_res

现在我的目的是找到这段代码里aidemo.yolov8_seg_postprocess()的源码,以理解后处理的真实原理。但是我目前尝试过的方法,都不能找到源码。

复现步骤


1.上电进入开发板系统硬盘
2.进入sdcard/libs/YOLO.py
3.找到YOLO11的类,找到postprocess()函数,找到"video"和"segment"分支,里面有一个aidemo.yolov8_seg_postprocess(),现在想找其源代码

硬件板卡


庐山派K230

软件版本


CanMV_K230_LCKFB_micropython_v1.5-legacy-0-g413737f_nncase_v2.9.0 (1).img

其他信息


尝试过的方法:pip install YOLO, pip install aidemo(结果安装不了或找不到这个函数),尝试打开sdcard的"MicroPython"系统文件也无效,在网上也找不到aidemo库的代码

1 Answers