mirror of
https://github.com/NohamR/Stage-2024.git
synced 2026-01-11 16:58:23 +00:00
test setup
This commit is contained in:
75
yolov7-setup/vott2yolov.py
Normal file
75
yolov7-setup/vott2yolov.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import numpy as np
|
||||
import json, sys, os, shutil
|
||||
|
||||
## cliquer sur export dans Vott puis :
|
||||
|
||||
# prefix = "../exports_VOTT/CH01-20230614-083436-091514-Zone2/vott-json-export/"
|
||||
# vottjson_filename = "Poulets-export.json"
|
||||
# cc = 1000000
|
||||
|
||||
prefix = "/Users/noham/Documents/GitHub/Stage-2024/yolov7-tracker/"
|
||||
print('Working folder: ', prefix)
|
||||
jsonname = 'vott-json-export'
|
||||
jsonfile = 'track-2fps-export.json'
|
||||
json_path = prefix + jsonname + '/' + jsonfile
|
||||
print('Working json file: ', json_path)
|
||||
jsonfolder = prefix+jsonname
|
||||
print('Working json folder: ', jsonfolder)
|
||||
|
||||
outputname = 'dataset2fps'
|
||||
print('Ooutput folder: ', outputname)
|
||||
output = '/Users/noham/Documents/GitHub/Stage-2024/test/yolov7-tracker/data/'+outputname
|
||||
print('Output folder: ', output)
|
||||
cc = 0
|
||||
|
||||
label = 'runner'
|
||||
|
||||
for folder in [output, output+"/images",output+"/labels"]:
|
||||
if not os.path.exists(folder):
|
||||
os.makedirs(folder)
|
||||
|
||||
with open(json_path, "r") as read_file:
|
||||
data = json.load(read_file)
|
||||
|
||||
imglist = []
|
||||
for a in data["assets"]:
|
||||
asset = data["assets"][a]["asset"]
|
||||
regions = data["assets"][a]["regions"]
|
||||
img_name = asset["name"]
|
||||
width = asset["size"]["width"]
|
||||
height = asset["size"]["height"]
|
||||
# print("\nimage name : ",img_name," width =",width," height =",height)
|
||||
shutil.copyfile(jsonfolder+"/"+img_name,output+"/images/image_"+str(cc).zfill(12)+".jpg")
|
||||
imglist.append(output+"/images/image_"+str(cc).zfill(12)+".jpg")
|
||||
f = open(output+"/labels/image_"+str(cc).zfill(12)+".txt", "w")
|
||||
# f = open(prefix+"/"+img_name.replace(".jpg",".txt"), "w")
|
||||
for region in regions:
|
||||
boundingBox = region["boundingBox"]
|
||||
points = region["points"]
|
||||
# print(" tags =",region["tags"]," boundingBox =",boundingBox," points =",points)
|
||||
# ## Labels :
|
||||
# D’après la doc on doit avoir :
|
||||
# Label_ID_1 X_CENTER_NORM Y_CENTER_NORM WIDTH_NORM HEIGHT_NORM
|
||||
# The label_id is the index number in the classes.names file. The id of the first label will be 0 and an increasing integer after that. Note all the position attributes in the label file are not absolute but normalised.
|
||||
# X_CENTER_NORM = X_CENTER_ABS/IMAGE_WIDTH centre image
|
||||
# Y_CENTER_NORM = Y_CENTER_ABS/IMAGE_HEIGHT centre image
|
||||
# WIDTH_NORM = WIDTH_OF_LABEL_ABS/IMAGE_WIDTH largeur boite
|
||||
# HEIGHT_NORM = HEIGHT_OF_LABEL_ABS/IMAGE_HEIGHT hauteur boite
|
||||
# dans un repere dont l'origine est en haut a gauche et X de gauche à droite, Y du haut vers le bas
|
||||
Label_ID = "0"
|
||||
X_CENTER_NORM = (boundingBox["left"]+boundingBox["width"]/2)/width
|
||||
Y_CENTER_NORM = (boundingBox["top"]+boundingBox["height"]/2)/height
|
||||
WIDTH_NORM = boundingBox["width"]/width
|
||||
HEIGHT_NORM = boundingBox["height"]/height
|
||||
f.write(Label_ID+" "+str(X_CENTER_NORM)+" "+str(Y_CENTER_NORM)+" "+str(WIDTH_NORM)+" "+str(HEIGHT_NORM)+"\n" ) # 0 = poulet si l'on a qu'une classe d'objet...
|
||||
f.close()
|
||||
cc += 1
|
||||
# print(" written file :",prefix+"/"+img_name.replace(".jpg",".txt"))
|
||||
with open(output+"/liste_images.txt", "w") as file:
|
||||
for item in imglist:
|
||||
file.write(item + "\n")
|
||||
with open(output+"/dataset.yaml", "w") as file:
|
||||
file.write(f"""train: data/{outputname}/liste_images.txt
|
||||
val: data/{outputname}/liste_images.txt
|
||||
nc: 1
|
||||
names: ['{label}']""")
|
||||
Reference in New Issue
Block a user