# Dieses Script enthält verschiedene nützliche Verarbeitungsoptionen für den Prozess der Trainingsdatensatzerstellung # Finden und entfernen ungelabelter Bilder aus den gelabelten Fotos um Auswahl zu beschleunigen import os import shutil # Ordner Pfade ordner_a = '_MOMMERT/konstanz_labeled' # Ordner mit den .png und .txt Dateien ordner_b = '_MOMMERT/sorted_images_with_konstanz/unlabeled' # Zielordner für die .png Dateien ohne zugehörige .txt Datei # Stelle sicher, dass der Zielordner 'b' existiert, andernfalls erstelle ihn if not os.path.exists(ordner_b): os.makedirs(ordner_b) # Liste alle .txt Dateien in 'a' txt_dateien = set([os.path.splitext(f)[0] for f in os.listdir(ordner_a) if f.endswith('.txt')]) # Liste alle .png Dateien in 'a' png_dateien = [f for f in os.listdir(ordner_a) if f.endswith('_bbox.png')] # Überprüfen, ob zu jeder .png Datei eine passende .txt Datei existiert for png_datei in png_dateien: # Entferne die Endung '_bbox.png', um den Basisnamen zu erhalten basisname = os.path.splitext(png_datei)[0].replace('_bbox', '') # Wenn keine entsprechende .txt Datei vorhanden ist, verschiebe die .png Datei nach 'b' if basisname not in txt_dateien: quelle = os.path.join(ordner_a, png_datei) ziel = os.path.join(ordner_b, png_datei) shutil.move(quelle, ziel) print(f"Verschiebe {png_datei} nach {ordner_b}") # Finden und verschieben von .txt Dateien, zu welchen keine .png Datei existiert. import os import shutil # Ordner Pfade ordner_a = '_MOMMERT/sorted_images' # Ordner mit den .png und .txt Dateien ordner_b = 'unwanted' # Zielordner für die .txt Dateien ohne zugehörige .png Datei # Stelle sicher, dass der Zielordner 'b' existiert, andernfalls erstelle ihn if not os.path.exists(ordner_b): os.makedirs(ordner_b) # Liste alle .png Dateien in 'a' png_dateien = set([os.path.splitext(f)[0].replace('_bbox', '') for f in os.listdir(ordner_a) if f.endswith('_bbox.png')]) # Liste alle .txt Dateien in 'a' txt_dateien = [f for f in os.listdir(ordner_a) if f.endswith('.txt')] # Überprüfen, ob zu jeder .txt Datei eine passende .png Datei existiert for txt_datei in txt_dateien: # Entferne die Endung '.txt', um den Basisnamen zu erhalten basisname = os.path.splitext(txt_datei)[0] # Wenn keine entsprechende .png Datei vorhanden ist, verschiebe die .txt Datei nach 'b' if basisname not in png_dateien: quelle = os.path.join(ordner_a, txt_datei) ziel = os.path.join(ordner_b, txt_datei) shutil.move(quelle, ziel) print(f"Verschiebe {txt_datei} nach {ordner_b}") # Überschreiben von Bildern mit Skala mit Bildern ohne Skala (gelabelt) import os import shutil # Pfade zu den Verzeichnissen folder_a = "_MOMMERT/sorted_images/false" # Pfad wo Bilder überschrieben werden sollen folder_b = "_MOMMERT/wuerzburg_labeled" # Pfad zu Ordner wo Bilder hergenommen werden sollen # Liste alle .png Dateien in Ordner 'a' for filename in os.listdir(folder_a): if filename.endswith('.png'): # Pfad zur Datei in Ordner 'b' file_b_path = os.path.join(folder_b, filename) # Prüfe, ob die Datei in Ordner 'b' existiert if os.path.exists(file_b_path): # Pfad zur Originaldatei in Ordner 'a' original_file_path = os.path.join(folder_a, filename) # Kopiere die Datei aus Ordner 'b' nach Ordner 'a' und überschreibe die ursprüngliche Datei shutil.copy(file_b_path, original_file_path) print(f"Datei {filename} wurde von '{folder_b}' nach '{folder_a}' kopiert und überschrieben.") else: print(f"Datei {filename} existiert nicht in '{folder_b}'.") # Vereinheitlichung aller .txt und .png files import os # Pfad zum Ordner 'a' folder_a = 'sorted_images/good' # Funktion zum Umbenennen von Dateien def rename_files_in_folder(): for filename in os.listdir(folder_a): # Pfad zur Datei file_path = os.path.join(folder_a, filename) # Überprüfen, ob es eine .txt-Datei ist und die Endung '_DOP20_BW.txt' hat if filename.endswith('_DOP20_BW.txt'): new_filename = filename.replace('_DOP20_BW.txt', '_rgbi_20cm.txt') new_file_path = os.path.join(folder_a, new_filename) os.rename(file_path, new_file_path) print(f"Umbenannt: {file_path} -> {new_file_path}") # Überprüfen, ob es eine .png-Datei ist und die Endung '_DOP20_BW.png' hat elif filename.endswith('_DOP20_BW_bbox.png'): new_filename = filename.replace('_DOP20_BW_bbox.png', '_rgbi_20cm_bbox.png') new_file_path = os.path.join(folder_a, new_filename) os.rename(file_path, new_file_path) print(f"Umbenannt: {file_path} -> {new_file_path}") # Umbenennung starten rename_files_in_folder() # Reduzierung des Datensatzes um alle bilder, welche die Klassen 2-6 beinhalten: import os import shutil # Originalverzeichnis source_dir = 'sorted_images' # Verzeichnis, das durchsucht werden soll good_dir = os.path.join(source_dir, 'good') # Neues Verzeichnis für unerwünschte Dateien unwanted_dir = 'unwanted' os.makedirs(unwanted_dir, exist_ok=True) # Kopie des 'sorted_images'-Ordners erstellen backup_dir = 'sorted_images_backup' if not os.path.exists(backup_dir): shutil.copytree(source_dir, backup_dir) print(f"Kopie des Verzeichnisses erstellt: {backup_dir}") else: print(f"Backup-Verzeichnis existiert bereits: {backup_dir}") # Klassen, die als unerwünscht gelten unwanted_classes = {2, 3, 4, 5, 6} # Funktion zum Verschieben der Dateien def move_files(txt_file, png_file, unwanted_dir): # Verschiebe die .txt Datei shutil.move(txt_file, os.path.join(unwanted_dir, os.path.basename(txt_file))) # Verschiebe die zugehörige .png Datei if os.path.exists(png_file): shutil.move(png_file, os.path.join(unwanted_dir, os.path.basename(png_file))) else: print(f"Keine entsprechende .png Datei gefunden für: {png_file}") # Durchlaufe das Verzeichnis 'good' for filename in os.listdir(good_dir): if filename.endswith('.txt'): txt_file_path = os.path.join(good_dir, filename) png_file_path = txt_file_path.replace('.txt', '_bbox.png') # Überprüfe die .txt Datei with open(txt_file_path, 'r') as file: lines = file.readlines() for line in lines: class_id = int(line.split()[0]) # Die erste Zahl in jeder Zeile ist die Klassen-ID if class_id in unwanted_classes: move_files(txt_file_path, png_file_path, unwanted_dir) break # Breche die Schleife ab, wenn eine unerwünschte Klasse gefunden wurde print("Verschieben unerwünschter Dateien abgeschlossen.")