【Datawhale AI夏令营第五期】 CV方向 Task03 各种尝试,想方设法上分

【Datawhale AI夏令营第五期】 CV方向 Task03 各种尝试,想方设法上分

教程部分:

首先是我自己没事瞎点,发现了DataWhale的开源课程平台链接:
https://linklearner.com/learn
传送门
在这里插入图片描述

接下来看看本期教程:

我之前跟着B站大佬@同济子豪兄的视频《两天搞定人工智能毕业设计》项目的时候,有一个步骤就是把图片旋转翻转缩放一顿操作,当时只知道是增加模型适应奇葩数据的能力,现在才知道原来这是数据集增强,而且还有这么多我不知道的神奇操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
而且YOLO支持同时处理图像和视频
(说到这个“感兴趣的对象”,我还真的很好奇,计算机视觉能显示模型对什么感到好奇吗?如果没有认为给模型传达要识别什么东西的任务,模型眼里的世界是什么样子?模型会不会自发对环境的某个部分感到好奇想了解,并把注意力分配到那里去呢??)
在这里插入图片描述
感觉这张表有点不准确?都没具体数字,哪来的概率为0,置信度为92%??
在这里插入图片描述

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(["im1.jpg", "im2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

一些灵活的小技巧:在这里插入图片描述

应该看不到那去但还是搬来的参考资料:

https://docs.ultralytics.com/modes/predict/#inference-arguments
https://docs.ultralytics.com/yolov5/tutorials/tips_for_best_training_results/?h=result#model-selection
https://docs.ultralytics.com/yolov5/tutorials/test_time_augmentation/

想方设法跟着Baseline的提示再往上卷分:

之前把训练集从喂5个改成喂15个,结果一下子得分都翻了三倍。
下面这是第一次的结果:
在这里插入图片描述
改成喂15个视频的结果:
在这里插入图片描述
但是我感觉第二次的result图片有点怪,不太确定是不是我没搞对??现在想回去看结果发现机器的GPU无了,只能重开一台……

这次我又想了几个混分的可能优化方案:

1.把训练集拉满,有的全用上!
2.换参数尽可能多的模型,让他多学点特征!
3.超参数这边看看能不能在通义千问的帮助下,使用Optuna调参提升效果!
4.如果有需要的话,让通义千问和Kimi看看怎么避免过拟合?

第一点不用说,直接把训练集全送进去就是 。注意要给验证集留点数据,这俩不能重复,按照Kimi帮写的代码,我设置训练集:验证集为4:1.
在这里插入图片描述

注意这一步可能会把电脑搞得比较卡……过程很漫长。
在这里插入图片描述
然而这招行不通,会把机器占满:在这里插入图片描述
我重开了两台机器以后,看总数据量在52条左右,决定训练集就拿25条数据。在这里插入图片描述
就这样都还多了,CUDA不够训练的……那我还是就保持15条吧。在这里插入图片描述
这都还不行,6。给我整得有点不会了,看群里都讨论有没有人把训练集冲完了,咋个我这边没喂几条数据就报错呢???在这里插入图片描述
难道是下面这个第二点的yolo8x模型太大了???
第二点这是我以前学校学到的经验,模型的后缀其实表示了这个模型的参数量和计算量大小,我要试试这个顶配,也就是后缀为x的这一款。
在这里插入图片描述
把下载和使用的模型换了:在这里插入图片描述
在这里插入图片描述
鉴于这个机器实在太不能装了,我这次换最大的模型+10条训练数据看看。
在这里插入图片描述
即便这样,都还是报CUDA out of memory……在这里插入图片描述
在这里插入图片描述
好吧 ,那我就按默认模型的配置,把训练数据量往上拉,看看能不能配合一下Optuna。在这里插入图片描述
先看看最初模型+20组训练集的result表现如何:
在这里插入图片描述
所以训练数据多了还不如第二轮了是吗……66666。
我先把完整代码给Kimi,让它帮我写了Optuna的代码,但我看得陷入了沉思……
在这里插入图片描述

import optuna
from ultralytics import YOLO
import os

# 假设你有一个函数来计算验证集上的 mAP
def get_validation_map(model, data_path, img_size):
    # 这里应该是你的模型验证代码
    # 请用你的模型验证逻辑替换这里的代码
    # 返回验证集上的 mAP 值
    return 0.85  # 示例 mAP 值

# 定义 Optuna 目标函数
def objective(trial):
    data_dict = {
        "path": "./yolo-dataset/",
        "train": "./yolo-dataset/train/",
        "val": "./yolo-dataset/val/"
    }
    epochs = trial.suggest_int("epochs", 10, 50)
    batch_size = trial.suggest_categorical("batch_size", [8, 16, 32, 64])
    lr = trial.suggest_float("learning_rate", 1e-5, 1e-2, log=True)
    imgsz = trial.suggest_categorical("imgsz", [416, 512, 608, 864, 1080])

    # 配置模型
    model = YOLO("yolov8n.pt")
    # 训练模型(这里假设 YOLO 类有一个 train 方法)
    results = model.train(data=data_dict, epochs=epochs, imgsz=imgsz, batch=batch_size, lr=lr)

    # 计算验证集上的 mAP
    validation_map = get_validation_map(model, data_dict["val"], imgsz)
    return validation_map

# 创建 Optuna 研究
study = optuna.create_study(direction="maximize")

# 运行优化
study.optimize(objective, n_trials=100)

# 打印最佳超参数
print("Best trial:")
trial = study.best_trial
print(f"  Value: {trial.value}")
print(f"  Params: {trial.params}")

# 使用最佳超参数重新训练模型
best_params = {
    "epochs": trial.params["epochs"],
    "batch_size": trial.params["batch_size"],
    "lr": trial.params["learning_rate"],
    "imgsz": trial.params["imgsz"]
}

# 重新训练模型并保存最佳模型
model = YOLO("yolov8n.pt")
results = model.train(data=data_dict, **best_params)
# 假设模型训练结果中包含了最佳模型的路径
best_model_path = results.get("best_model_path", "path_to_best_model.pt")
# 保存模型(这里需要根据你的模型实现来调整)

我决定放弃了……真没搞懂我应该怎么用这玩意。试试原样拷贝粘贴进去吧,满屏幕爆红,真心崩溃。在这里插入图片描述
果然要干点啥还是不容易……像我之前还是有一些CV和机器学习基础的,好不容易想出这么多损招,就没啥能实现的。在这里插入图片描述
以及喜提全网第一合影留念打卡!感谢和鲸平台举办这么干货满满的学习活动,有缘再见!
在这里插入图片描述

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值