一般yolov3的資料集標籤格式為xml,其中bbox為xyxy格式
如圖:
每行乙個obj,第乙個欄位是name,後面4個字段是normalized xywh格式的bbox。
如下圖:
為了能用yolov3的資料訓練yolov5,所以需要乙個轉格式的**:
# 將xml格式的標籤轉換為txt格式,並且將bbox的格式由xyxy轉換為normalized xywh的格式。
import os
import xml.etree.elementtree as et
classes =
["crackle"
]# 輸入缺陷名稱,必須與xml標註名稱一致
f1 =
'e:/yolo/yolov4-pytorch-master/vocdevkit/voc2007/annotations'
# 原標籤位址
f2 =
'e:/yolo/yolov4-pytorch-master/vocdevkit/voc2007/imagexml.txt'
# 存放xml名稱的txt
txtflie =
open
(f2,
'w')
filename =
[i for i in os.listdir(f1)
]for i in filename:
txtflie.write(
str(i)
.strip(
'.xml')+
'\n'
)txtflie.close(
)def
convert
(size, box)
: dw =1.
/ size[0]
dh =1.
/ size[1]
x =(box[0]
+ box[1]
)/2.0 y =
(box[2]
+ box[3]
)/2.0 w = box[1]
- box[0]
h = box[3]
- box[2]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return
(x, y, w, h)
defconvert_annotation
(image_id)
: in_file =
open
('e:/yolo/yolov4-pytorch-master/vocdevkit/voc2007/annotations/%s.xml'
%(image_id)
)# 讀取xml檔案路徑
out_file =
open
('e:/yolo/yolov4-pytorch-master/vocdevkit/voc2007/yolov5_ann/%s.txt'
%(image_id)
,'w'
)# 需要儲存的txt格式檔案路徑
tree = et.parse(in_file)
root = tree.getroot(
) size = root.find(
'size'
) w =
int(size.find(
'width'
).text)
h =int(size.find(
'height'
).text)
for obj in root.
iter
('object'):
cals = obj.find(
'name'
).text
if cals not
in classes:
# 檢索xml中的缺陷名稱
continue
cls_id = classes.index(cals)
xmlbox = obj.find(
'bndbox'
) b =
(float
(xmlbox.find(
'xmin'
).text)
,float
(xmlbox.find(
'xmax'
).text)
,float
(xmlbox.find(
'ymin'
).text)
,float
(xmlbox.find(
'ymax'
).text)
) bb = convert(
(w, h)
, b)
out_file.write(
str(cls_id)
+" "
+" "
.join(
[str
(a)for a in bb])+
'\n'
)image_ids_train =
open
(f2)
.read(
).strip(
).split(
)# 讀取xml檔名索引
for image_id in image_ids_train:
convert_annotation(image_id)
yolov3的缺點 yolov3特點總結
p1,yolov3,簡單總結下比較特別的地方 1.bounding box 中心值x,y的 是通過乙個sigmoid 函式,來 在每乙個單元 cell 的相對位置。而不像普通那種 乙個相對於anchor的offset。然後bbox 損失是用的mse 一般都是用smooth l1 3.類別 沒有使用s...
YOLOv3生成中文標籤
前提 本文的yolov3為alexeyab的版本。step1 生成標籤 生成標籤的 借鑑了 先在data labels下建立python程式,寫入以下 其中label.names為自定義分類的彙總,如京滬 晉贛 g hqr 39儲存為txt,之後執行以下python程式 import os impo...
yolo v3模型測試及測試結果轉化
訓練完成生成模型後,進行模型測試。對測試集資料進行檢測,得到檢測結果 像製作訓練集時生產2019 train.txt 檔案內容為包含所有訓練的路徑和檔名 一樣,製作2019 test.txt檔案 檔案內容為包含所有測試的路徑和檔名 採用以下程式來生成測試集的 test.txt 檔案,其中包含每個測試...