Làm thế nào chúng tôi chuyển đổi thư mục chú thích XML thành định dạng văn bản hoặc Yolov3 để phát hiện ??? Tôi đã sử dụng mã này để chuyển đổi nhưng nó chỉ lấy một hình ảnh XML và chuyển đổi thành .txt .. nhưng tôi muốn chuyển đổi thư mục đầy đủ của mình cùng một lúc. Bạn có bất kỳ giải pháp dễ dàng nào để chuyển đổi các tệp XML thành các tệp văn bản. Tôi có hơn 15000 hình ảnh.
from xml.dom import minidom
import os
import glob
lut={}
lut["14111"] =0
lut["14131"] =1
lut["14141"] =2
def convert_coordinates[size, box]:
dw = 1.0/size[0]
dh = 1.0/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]
def convert_xml2yolo[ lut ]:
for fname in glob.glob["/content/gdrive/MyDrive/Dataset /Annotation/14111_00000002.xml"]:
xmldoc = minidom.parse[fname]
fname_out = [fname[:-4]+'.txt']
with open[fname_out, "w"] as f:
itemlist = xmldoc.getElementsByTagName['object']
size = xmldoc.getElementsByTagName['size'][0]
width = int[[size.getElementsByTagName['width'][0]].firstChild.data]
height = int[[size.getElementsByTagName['height'][0]].firstChild.data]
for item in itemlist:
# get class label
classid = [item.getElementsByTagName['name'][0]].firstChild.data
if classid in lut:
label_str = str[lut[classid]]
else:
label_str = "-1"
print ["warning: label '%s' not in look-up table" % classid]
# get bbox coordinates
xmin = [[item.getElementsByTagName['bndbox'][0]].getElementsByTagName['xmin'][0]].firstChild.data
ymin = [[item.getElementsByTagName['bndbox'][0]].getElementsByTagName['ymin'][0]].firstChild.data
xmax = [[item.getElementsByTagName['bndbox'][0]].getElementsByTagName['xmax'][0]].firstChild.data
ymax = [[item.getElementsByTagName['bndbox'][0]].getElementsByTagName['ymax'][0]].firstChild.data
b = [float[xmin], float[xmax], float[ymin], float[ymax]]
bb = convert_coordinates[[width,height], b]
#print[bb]
f.write[label_str + " " + " ".join[[["%.6f" % a] for a in bb]] + '\n']
print ["wrote %s" % fname_out]
def main[]:
convert_xml2yolo[ lut ]
if __name__ == '__main__':
main[]
Có nhiều cách khác nhau để phát hiện đối tượng như phát hiện đối tượng TensorFlow, phát hiện đối tượng Yolo. Mỗi phương thức có định dạng dữ liệu đầu vào riêng. Phát hiện đối tượng TensorFlow lấy đầu vào ở định dạng XML và phát hiện đối tượng Yolo mất đầu vào ở định dạng TXT.
Ở đây tôi sẽ chia sẻ các mã để chuyển đổi dữ liệu có sẵn từ định dạng này sang định dạng khác.
- XML đến CSV
- XML đến TXT
- TXT đến XML
- TXT đến CSV
- CSV đến XML
- CSV đến TXT
- CSV đến JSON
Hãy vào phần mã hóa get into the coding part
XML đến CSV
Tải xuống tệp mã từ đây. Chạy lệnh dưới đây để thực thi nó. Python XML_TO_CSV.PY -I DATA/Train/XMLS -O Dữ liệu/Train/
python xml_to_csv.py -i data/train/xmls -o
data/train/train.csv
XML đến TXT
Bạn có thể tải xuống một tập tin từ đây. Ở đây bạn cần thay đổi từ điển LUT theo dữ liệu của bạn. Bạn có thể tăng hoặc giảm các lớp trong Từ điển [dòng 72 -Line 77]. Nhập lệnh sau vào thiết bị đầu cuối của bạn.
as per your data. you can increase or decrease the classes in the dictionary [line 72 -line 77]. Type the following command in your terminal.
python xml_to_txt.py -i data/Train/XMLS -O Dữ liệu/Train/Txts
TXT đến CSV
Tải xuống tệp mã từ đây. Chạy lệnh sau.
python txt_to_csv.py -i dữ liệu/txts -img dữ liệu/hình ảnh -o dữ liệu/data.csv
TXT đến XML
Tải xuống tập lệnh từ đây và chạy lệnh sau.
python txt_to_xml.py -i dữ liệu/txts -img dữ liệu/hình ảnh -o dữ liệu/xmls
CSV đến XML
Tải xuống tệp mã từ đây, và sau đó chạy lệnh sau.
Python CSV_TO_XML.PY -I DATA/Train.csv -o Data/XMLS
CSV đến TXT
Tải xuống tập lệnh từ đây, và sau đó chạy lệnh sau.
python csv_to_txt.py -i data/Train_data.csv -o data/txts
CSV đến JSON
Tải xuống tệp mã từ đây, và sau đó chạy lệnh sau.
Python CSV_TO_XML.PY -I DATA/Train.csv -o Data/XMLS
CSV đến TXT
Đặt tệp convert_voc_to_yolo.py vào thư mục dữ liệu của bạn ..
Nếu công cụ ghi nhãn của bạn xuất trình chú thích trong
VOC
định dạng, nhưng bạn đang cố gắng sử dụng
mô hình cần
Yolo Darknet
Chú thích, chúng tôi đã bảo vệ bạn. Bạn có thể chuyển đổi chúng trong 3 lần nhấp với Roboflow.
Bước 1: Tạo không gian làm việc công cộng Roboflow miễn phí
Roboflow là công cụ chuyển đổi phổ quát cho các định dạng chú thích tầm nhìn máy tính. Kế hoạch công cộng là cách tốt nhất cho những dự án cá nhân, bài tập lớp và các thí nghiệm khác để thử Roboflow. Để chuyển đổi bộ dữ liệu của bạn, hãy bắt đầu bằng cách tạo một không gian làm việc trong kế hoạch công khai.
Bước 2: Tải dữ liệu của bạn lên Roboflow
Khi tài khoản của bạn đã được tạo, nhấp vào Tạo tập dữ liệu.
Tải dữ liệu của bạn lên Roboflow bằng cách kéo và thả
Pascal VOC XML
Hình ảnh và chú thích vào không gian tải lên.
Để tìm hiểu cách dán nhãn thủ công hình ảnh của bạn trong định dạng VOC & NBSP; XML & NBSP;, Hướng dẫn CVAT & NBSP;
Bước 3: Tạo phiên bản dữ liệu
Tiếp theo, bạn có thể chọn các tùy chọn tiền xử lý và tăng cường cho phiên bản dữ liệu của mình và sau đó nhấp vào Tạo.
Bước 4: & NBSP; Xuất phiên bản dữ liệu
Sau khi tạo, bạn sẽ được nhắc xuất bộ dữ liệu của mình. Bạn có thể chọn nhận bộ dữ liệu của mình dưới dạng tệp .zip hoặc liên kết tải xuống Curl. Bạn cũng có thể chọn định dạng bạn muốn xuất. Chọn
Yolo Darknet TXT
.
Xin chúc mừng, bạn đã chuyển đổi thành công dữ liệu của mình từ
Pascal VOC XML
Hình ảnh và chú thích vào không gian tải lên.
Yolo Darknet TXT
.
Xin chúc mừng, bạn đã chuyển đổi thành công dữ liệu của mình từ
Định dạng để
Yolo Darknet
Chú thích, chúng tôi đã bảo vệ bạn. Bạn có thể chuyển đổi chúng trong 3 lần nhấp với Roboflow.
Bước 1: Tạo không gian làm việc công cộng Roboflow miễn phí