## 2 Proposed Workflow
### Network Training  
In the network training step, a neural network for image classification (VGG16 [30]) is trained on the previously generated synthetic images. Here, the training procedure is a supervised learning process (Figure 4). First, a network is initialized and a prediction is made using the network. Based on the prediction, the current training step's loss and gradient are calculated to adjust the weights of the neural network. This process is repeated until a stopping criterion is reached. Multiple network structures for image classification were evaluated before deciding on VGG16. This was intended to find a network structure that allows for fast inference and high classification accuracy for AM parts when trained on synthetic images. The influence of the network structure on the part classification accuracy is described in Section 3.2.1. For the training process, the synthetic training data are randomly split into 80% (training set) and 20% (validation set). The split excludes a test set, as during industrial application, there exists no labeled test data. All the testing for development and evaluation was realized using a separate dataset containing only real images (Section 3.1). During industrial application, each batch containing new parts to be recognized requires the training of a new network. This is necessary, as in the application scenario, AM parts that  
Figure 4: Supervised learning process used to train the neural network. Figure 3: Image rendering scene and examples of synthetic images of an AM part at different orientations. are to be produced are not known until ordered by a customer and the geometries can vary strongly. Testing prior to application is not possible without manually generating a test set, which would contradict the workflow's purpose. The training is realized on the training instance using the following parameters:  
* Input image size: 224 \(\times\) 224;
* Batch size: 32;
* Learning rate: \(5\times 10^{-5}\);
* Number of training epochs: 5;
* Loss function: categorical cross-entropy loss. These parameters have been defined with the help of the test set (Section 3.1). They were varied to reach a low number of network weights, short training and inference times, and high classification accuracy. Especially relevant to this is the input image size. Not only does a greater model input size increase training and inference times, it also leads to an increase in the rendering resolution for the synthetic images. Finally, this increases the duration of the rendering process. The input image size was therefore chosen to be as small as possible while still maintaining high part classification accuracy. The network is pretrained on a dataset of general objects (COCO, [31]), which reduces the training effort required to classify specific AM parts. This is an established practice known as transfer learning [32]. In addition, data augmentation is utilized to prevent overfitting, where the trained network too closely matches the training data. When overfitting occurs, the network does not generalize well to previously unseen data (i.e., the test data) [33]. The images are augmented using the following factors:  
* Zoom range: [0.95, 1.05];
* Brightness range: [0.8, 1.15];
* Rotation range: [\(-\)45, 45];
* Height shift range: [\(-\)25, 25];
* Width shift range: [\(-\)25, 25]. The network is compressed in the network training step to allow for inference on the low-cost inference instance. Here, the compression is realized by reducing the network's weights' precision by switching their format from a 32-bit float to an 8-bit float. This is known as quantization [34], and including this limitation in the training process is known as quantization-aware training. Typically, quantization-aware training leads to higher network accuracy than realizing quantization after the training process [35]. Before transferring the network to the inferencing instance, it is converted to the TensorFlow Lite format and compiled for hardware compatibility.