如何解决如何在python中编辑yaml文件?
首先,我要感谢所有给我答案的人。
我想使用 python 编辑我的 yaml 文件,但我不明白它是如何工作的。
我有一个名为“yolov5s.yaml”的 yaml 文件。
# parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
# anchors
anchors:
- [10,13,16,30,33,23] # P3/8
- [30,61,62,45,59,119] # P4/16
- [116,90,156,198,373,326] # P5/32
# YOlov5 backbone
backbone:
# [from,number,module,args]
[[-1,1,Focus,[64,3]],# 0-P1/2
[-1,Conv,[128,3,2]],# 1-P2/4
[-1,C3,[128]],[-1,[256,# 3-P3/8
[-1,9,[256]],[512,# 5-P4/16
[-1,[512]],[1024,# 7-P5/32
[-1,SPP,[5,13]]],False]],# 9
]
# YOlov5 head
head:
[[-1,1]],nn.Upsample,[None,2,'nearest']],[[-1,6],Concat,[1]],# cat backbone P4
[-1,# 13
[-1,4],# cat backbone P3
[-1,# 17 (P3/8-small)
[-1,14],# cat head P4
[-1,# 20 (P4/16-medium)
[-1,10],# cat head P5
[-1,# 23 (P5/32-large)
[[17,20,23],Detect,[nc,anchors]],# Detect(P3,P4,P5)
]
我只想编辑“锚点”部分。 所以我尝试了这段代码。
import yaml
with open('yolov5s.yaml') as f:
test = yaml.load(f,Loader=yaml.FullLoader)
for k,v in test.items():
if k == 'anchors': # anchors_size is list what i got
v[0] = [anchors_size[0][0],anchors_size[0][1],anchors_size[1][0],anchors_size[1][1],anchors_size[2][0],anchors_size[2][1]]
v[1] = [anchors_size[3][0],anchors_size[3][1],anchors_size[4][0],anchors_size[4][1],anchors_size[5][0],anchors_size[5][1]]
v[2] = [anchors_size[6][0],anchors_size[6][1],anchors_size[7][0],anchors_size[7][1],anchors_size[8][0],anchors_size[8][1]]
with open('yolov5s_test.yaml','w') as f:
yaml.safe_dump(test,f,sort_keys=False)
但我得到了我没想到的结果。
nc: 80
depth_multiple: 0.33
width_multiple: 0.5
anchors:
- - !!python/object/apply:numpy.core.multiarray.scalar
- &id001 !!python/object/apply:numpy.dtype
args:
- f8
- false
- true
state: !!python/tuple
- 3
- <
- null
- null
- null
- -1
- -1
- 0
- !!binary |
5sMvxp6DKkA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
K5qaAB+fheA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
TOaqxpwfheA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
Pn/D+kcOLUA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
V70M9euYLkA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
8jK4riH0H0A=
- - !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
nnhc0qL7IEA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
nVaoqHv/MEA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
MditMIAlL0A=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
9FUL7PZNJEA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
PUM1gUF8PEA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
9VsJDl5rI0A=
- - !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
u0BIL83XIkA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
hUoHjC8TQUA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
H8OdWCXNQ0A=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
c1ABB59WJEA=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
Wf1sNPojN0A=
- !!python/object/apply:numpy.core.multiarray.scalar
- *id001
- !!binary |
g8SAI8mONkA=
backbone:
- - -1
- 1
- Focus
- - 64
- 3
- - -1
- 1
- Conv
- - 128
- 3
- 2
- - -1
- 3
- C3
- - 128
- - -1
- 1
- Conv
- - 256
- 3
- 2
- - -1
- 9
- C3
- - 256
- - -1
- 1
- Conv
- - 512
- 3
- 2
- - -1
- 9
- C3
- - 512
- - -1
- 1
- Conv
- - 1024
- 3
- 2
- - -1
- 1
- SPP
- - 1024
- - 5
- 9
- 13
- - -1
- 3
- C3
- - 1024
- false
head:
- - -1
- 1
- Conv
- - 512
- 1
- 1
- - -1
- 1
- nn.Upsample
- - None
- 2
- nearest
- - - -1
- 6
- 1
- Concat
- - 1
- - -1
- 3
- C3
- - 512
- false
- - -1
- 1
- Conv
- - 256
- 1
- 1
- - -1
- 1
- nn.Upsample
- - None
- 2
- nearest
- - - -1
- 4
- 1
- Concat
- - 1
- - -1
- 3
- C3
- - 256
- false
- - -1
- 1
- Conv
- - 256
- 3
- 2
- - - -1
- 14
- 1
- Concat
- - 1
- - -1
- 3
- C3
- - 512
- false
- - -1
- 1
- Conv
- - 512
- 3
- 2
- - - -1
- 10
- 1
- Concat
- - 1
- - -1
- 3
- C3
- - 1024
- false
- - - 17
- 20
- 23
- 1
- Detect
- - nc
- anchors
有些答案建议使用 ruamel.yaml,但我不明白我该怎么做。
有人给我答案。谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。