阅读代码的记录

文章介绍了如何在YOLO框架中从train.py的metrics扩展到predict.py阶段进行指标衡量,重点讨论了图像语义分割的像素准确率、类别像素准确率等指标,以及基于混淆矩阵的计算方法。同时提到了如何在TongueSeg类中结合YOLO和SAM模型进行眼部分割的实例。
摘要由CSDN通过智能技术生成

1-utils_metrics.py用在train.py中做指标衡量,现在想在推理(predict.py)的时候衡量一下指标
2-调研眼睛部位的单独分割。

https://blog.csdn.net/qq_40234695/article/details/88633094

衡量图像语义分割准确率主要有三种方法:
像素准确率(pixel accuracy, PA)
平均像素准确率(mean pixel accuracy, MPA)
平均IOU(Mean Intersection over Union, MIOU )

像素准确率(Pixel Accuracy,PA)、
类别像素准确率(Class Pixel Accuray,CPA)、
类别平均像素准确率(Mean Pixel Accuracy,MPA)、
交并比(Intersection over Union,IoU)、
平均交并比(Mean Intersection over Union,MIoU),
其计算都是建立在混淆矩阵(Confusion Matrix)的基础上。————————————————
原文链接:https://blog.csdn.net/weixin_38353277/article/details/121029978

from ultralytics.engine.model import Model
from ultralytics.models import yolo  \# noqa
from ultralytics.nn.tasks import ClassificationModel, DetectionModel, PoseModel, SegmentationModel
class YOLO(Model):
	    """YOLO (You Only Look Once) object detection model."""

    @property
    def task_map(self):
        """Map head to model, trainer, validator, and predictor classes."""
        return {
            'classify': {
                'model': ClassificationModel,
                'trainer': yolo.classify.ClassificationTrainer,
                'validator': yolo.classify.ClassificationValidator,
                'predictor': yolo.classify.ClassificationPredictor, },
            'detect': {
                'model': DetectionModel,
                'trainer': yolo.detect.DetectionTrainer,
                'validator': yolo.detect.DetectionValidator,
                'predictor': yolo.detect.DetectionPredictor, },
            'segment': {
                'model': SegmentationModel,
                'trainer': yolo.segment.SegmentationTrainer,
                'validator': yolo.segment.SegmentationValidator,
                'predictor': yolo.segment.SegmentationPredictor, },
            'pose': {
                'model': PoseModel,
                'trainer': yolo.pose.PoseTrainer,
                'validator': yolo.pose.PoseValidator,
                'predictor': yolo.pose.PosePredictor, }, }

YOLO类继承了ultralytics文件里面的engine文件里面的model.py文件里面的 Model类别。这个时候应该去看from ultralytics.engine.model import Model里面Model里的原码(但是下面的@property下面的代码又是什么意思呢)。

from yolov8.ultralytics import YOLO
from segment_anything.utils.transforms import ResizeLongestSide
from segment_anything import SamPredictor, sam_model_registry

class TongueSeg():
    def __init__(self, device = 'cuda:0', model_path="/share1/luli/yolov8SAM/pretrained_model") -> None:
        self.device = device
        self.model_type = 'vit_b'
        self.checkpoint = model_path+'/tonguesam.pth'
        self.det_model=YOLO('/share1/luli/yolov8/runs/detect/train20/weights/best.pt', task='detect') 
        self.sam_model = sam_model_registry[self.model_type](checkpoint=self.checkpoint).to(device) 
   self.det_model=YOLO('/share1/luli/yolov8/runs/detect/train20/weights/best.pt', task='detect') 
   是from yolov8.ultralytics import YOLO,导入YOLO--->>>点击继续入YOLO,进入到下面这个地方:
	from ultralytics.engine.model import Model
	from ultralytics.models import yolo  # noqa
	from ultralytics.nn.tasks import ClassificationModel, DetectionModel, PoseModel, SegmentationModel
	
	class YOLO(Model):
	上面又是继承了Model,Model是从ultralytics.engine.model里面导入的,这时候要点击Model去查看源码,如下:
	
	import inspect
	import sys
	from pathlib import Path
	from typing import Union
	from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir
	from ultralytics.hub.utils import HUB_WEB_ROOT
	from ultralytics.nn.tasks import attempt_load_one_weight, guess_model_task, nn, yaml_model_load
	from ultralytics.utils import ASSETS, DEFAULT_CFG_DICT, LOGGER, RANK, callbacks, checks, emojis, yaml_load		
	
	class Model(nn.Module):
	上面导入了cfg,nn.tasks,utils 

utils里面有个__init__.py函数,函数上面有个callbacks文件夹,文件夹里面有很多的 结构可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值