0%

大部分都是网上粘的,只是记录一下方便自己查找

置信度

在YOLO中,置信度是一个介于0和1之间的数值,表示模型对检测到的目标的确信程度。如果置信度接近1,那么模型相信该框中包含了目标对象。如果置信度接近0,模型认为该框中可能没有目标。所以,置信度可以看作是一个概率值,表示目标的存在概率。

在YOLO中,置信度代表了算法对于其预测结果的自信程度。简单地说,就是算法觉得“这个框里真的有一个物体”的概率

开始

在当前目录下

1
pip install ultralytics

训练.yaml配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 这里的path需要指向你项目中数据集的目录
path: C:/Users/admin/Desktop/CSDN/YOLOV8_DEF/ultralytics-detect/datasets/coco128/
# 这里分别指向你训练、验证、测试的文件地址,只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应
train: images/train2017 # train images (relative to 'path') 128 images
val: images/test2017 # val images (relative to 'path') 128 images
test: images/test2017 # test images (optional)

# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
......
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush

数据集标注信息(txt)

  • 类别ID:对应.yaml中的names,代表对象的类别
  • 中心X、Y坐标:对象边界框中心的水平、垂直方向坐标(比例)
  • 边界框宽、高度:这个值是相对于整个图像的比例

若一个图片的txt标注文件中某一行为:1 0.5 0.5 0.2 0.3则代表:

  • 类别:1
  • 边界框中心坐标对应图像水平、垂直的各50%处(中心)
  • 边界框宽度为图像宽度的20%,高度为图像高度的30%

训练对应的各参数说明

超详细YOLOv8全解:学v8只用看一篇文章-CSDN博客

最好在运行时通过命令行或.train函数添加参数实现,不在default.yaml中修改

预测大概步骤

训练自带的coco128数据集

1
2
3
4
5
6
7
from ultralytics import YOLO

model = YOLO("./yolov8n.pt")

if __name__ == '__main__':

result = model.train(data='coco128.yaml',epochs=5, lr0=0.01)

查看coco128.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush

在数据集中随便找张图和其标注信息:

训练完毕后用训练后的模型预测这张图:

1
result=model.predict(source='F:\\python\\ultralytics-main\\ultralytics-main\\ultralytics\\models\\yolo\\detect\\datasets\\coco128\\images\\train2017\\000000000009.jpg',save=True)

可得:

注意:

用命令行得到的数据在文件根目录的runs文件夹下,而python代码得到的数据在ultralytics/runs下

结果分析

yolov8实战第二天——yolov8训练过程、结果分析(保姆式解读)_yolov8跑出来的指标怎么看-CSDN博客

监督学习

监督学习是从对应了某种特定标签的的训练数据(例如房价预测中的输入里,一个面积对应一个的价格)中学习并建立模型,然后基于该模型预测未知的样本。其中,模型的输入是某个样本数据的特征,而函数的输出是与该样本相对应的标签。监督学习算法则负责预测输入到输出之间的映射关系

例如:输入为语音,输出为文字,则该监督学习的应用即为语音识别

分类:

  • 回归算法(regression)
  • 分类算法(classfication)。分类预测的是一个小的、有限的一套阐述类别(输出大多为离散、有限的)

线性回归模型(linear regression)

  • 训练集(training set):用于训练模型的已知数据集合
  • 输入变量x(input/feature):训练集中的输入
  • 输出变量y (output/target):训练集中的输出
  • 模型:用于预测的函数
  • 预测y-hat(^)(prediction):模型的输出,注意区分y和y-hat

代价函数(cost function)or损失函数(loss)

用于评估模型输出和训练数据的拟合程度

因此代价函数输出应尽可能

平方误差代价函数(squared error cost function)

模型参数w,b会影响代价函数的输出,而找到当前训练集下使代价函数输出最小的参数w,b,即可找到对当前训练集最适合的线性回归模型

对于使用平方误差代价函数的线性回归中总会出现弓形、吊床形的图像

即只有一个最小值

梯度下降算法(gradient descent)

可用于尝试最小化任何函数

  • 参数w、b必须同时更新,而不算将更新后的w用于b的更新中

  • α:学习率,学习率过大会导致代价函数无法收敛,甚至效果越来越差

  • 由式可以看出,梯度下降算法只 能找到代价函数中的某个极小值,而对于找到的极小值则与w,b在梯度下降算法中的初始值有关

由于两个参数的梯度下降式是互相独立的,因此对w或b的更新可以视作,另一个参数固定。再结合梯度下降算式可以看出该算法其实是利用了斜率的正负特性进行找极小值的过程

分类算法

逻辑回归算法(非回归算法)logistic regression

非监督学习

非监督学习算法的输入样本不对应某种特定的标签,而是自动地从样本中学习以找到某种结构、模式……

分类:

  • 聚类算法(clustering):例如从数万篇文章中找到相似词(非特定)并聚类
  • 异常检测(anomaly detection)
  • 降维(dimensionality reduction)

吴恩达の小练习:(其中两个为监督两个为非监督)

jupyter Notebook

1
2
python -m pip install --upgrade pip
pip install jupyter notebook

剩下的一些操作lab1文件写的很清楚,忘了就去看看

参数归一化(normalization)

由于各参数(特征)的变化范围、大小、单位不同,需要先进行归一化处理后才输入到模型

平均归一化(mean normalization)

Z-score normalization

先写成万能的手稿格式,再根据期刊格式改

1、封面 Title

根据所投期刊确定,通常包括:

  • 标题,加粗
    • 可利用SCI数据库中高被引论文的题名,研究如何写好英文题名。题名通常由名词性短语构成,其中的动词多以分词或动名词形式出现,用词需准确。
  • 作者,用上角标、*号标注顺序和通讯作者
  • 机构
    • 院系+学校+城市+城市邮编+国家;英文译名结尾处应加”China”
  • 联系方式
  • 利益冲突

2、摘要 Abstract

  • 引言(背景),1句话

  • 整篇文章做的事,1句话

  • 创新点/过程/如何实现。2-3句话

  • 重要的定性结论、数据,不用非常详细,2-3句

  • 研究意义,1句

  • 关键词

图文摘要(TOC)

和摘要放在一起,总结性、可读性要强,展示研究的特色、方法,可适当进行文字标注

3、引言 Introduction

第一部分

需给出背景信息,从广泛到具体分析研究对象,每个观点都需要引用文献,最好不超过3篇,且越新越好

第二部分

通过分析某个具体研究对象的不足引出本文研究内容的迫切性

第三部分

文献综述段(重要),对各文献要有深刻、到位的理解(不可只是xxx使用xxx做了xxx),优缺点都要写出

结论部分

对上文进行总结,提出问题,如何解决,列出创新点

4、Materials & Methods

可大致分为模拟类和实验类,其中:

  • 模拟类:
    • 理论方法
      • 用到的公式、理论
    • 模型说明
      • 函数内容,参数说明,模拟方法
    • 模型验证
    • 表证手段(数据与结论)
  • 实验类:
    • 实验对象
      • 介绍对象的信息、作用、原理等
    • 实验依据与过程
      • 如何实验、说明参数、控制参数的方法与细节
    • 表征手段(数据与结论)

5、Result & discussion

  • 多引用其他文献的实验结果与自己的进行分析对比
  • 进行图片说明时避免太多单图,可以整合成一张大图进行综合讨论

6、Conclusion

  • 总结做过的工作,给出一些规律和有意义数据
  • 说明研究意义与价值
  • 展望

其他注意事项

  • 总体要求

    • 8-12页,3000-6000词左右
    • 重复率根据期刊而定
  • 提交前记得生成行号,布局-行号

  • 参考文献尽量饱满一点,记得列DOI号
  • 投稿需准备(具体需根据各期刊要求)
    • 手稿
    • Cover Letter
    • High Light
    • Support Information
    • 利益冲突说明
  • 期刊分析网站LetPub

一些常识

SCI(科学引文索引 )、EI (工程索引 )、ISTP (科技会议录索引 ) 是世界著名的三大科技文献检索系统。SCI论文 (Science Citation Index):在SCI所收录的科学期刊上发表的论文。

影响因子 (impact factor,IF):指的是某一期刊的文章在特定年份或时期被引用的频率,是衡量学术期刊影响力的一个重要指标。老的计算方式:某杂志2008年的IF:2006、 2007两年论文在2008年被引总数,除以在2006、2007两年所发论文总数。

  • 杂志的IF愈高,品牌效应愈大,审稿更严格,投稿难度愈大;
  • 发表在IF高的杂志,不见得学术价值就大。
  • 单篇学术论文的引用频率更重要。引用频率愈高,其学术价值愈大。
  • 所发杂志的IF高,单篇的引用频率也高,就是最有价值的论文?也不尽然!高水平的论文与高影响因子论文不是一回事