Künstliches neuronales Netz mit zwei verdeckten Schichten mit 50 bzw. 25 Neuronen und einer ReLU-Aktivierungsfunktion. Die Ausgabeschicht hat eine sigmoide Aktivierungsfunktion. Für das Training wird ein Adam-Optimierer verwendet, der den mittleren quadratischen Fehler der Vorhersage gegenüber der erwarteten Ausgabe minimiert und so die Gewichte des Netzes bestimmt.
Eingänge zw. 0 und 1:
b: Blau im RGB-Farbraum
g: Grün im RGB-Farbraum
r: Blau im RGB-Farbraum
Ausgänge zw. 0 und 1:
hatch_um: Der Hatch-Abstand zwischen Scanlinien in µm
power_mw: Die Laserleistung in mW
pulse_us: Die Pulsrate in µs
speed_um_s: Die Scangeschwindigkeit in µm/s
Skaliert wie folgt:
r, b, g: von 0 bis 255 [-]
hatch_um: von 1 bis 100 in [µs]
power_mw: von 1000 bis 20000 in [mW]
pulse_us: von 2 bis 10 in [µs]
speed_um_s: von 41666 bis 3333333 in [µm/s]
Das Modell kann mit dem folgenden Python-Code ausgeführt werden:
from keras.models import load_model
def scale_value(x, new_min, new_max):
scaled_value = (x * (new_max - new_min)) + new_min
return scaled_value
r = 123
b = 231
g = 85
model = load_model('model.keras')
output = model.predict(np.array([b / 255, g / 255, r / 255]).reshape(1, -1))
hatch_um = int(scale_value(output[0][0], 1, 100))
power_mw = int(scale_value(output[0][1], 1000, 20000))
pulse_us = int(scale_value(output[0][2], 2, 10))
speed_um_s = int(scale_value(output[0][3], 41666, 3333333))