Additional_operations_script 6.69 KB
Newer Older
Mayer's avatar
Mayer committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# 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.")