# Feature and Attribute Balanced Train-Test Split for Facial Emotion Recognition (using a CNN)

I am trying to develop a CNN that is able to classify whether some musician is in a certain emotional state or not (i.e. binary). For this purpose, I have gathered and labeled videos using CVAT which allows to label unique frames. Now that I have around 300.000 frames in total of about 60 different musicians, I would like to do a well-balanced train-validation-test split.

During the data collection process, I have already paid attention to balance so that the complete data is balanced in the following way: e.g.

+---------+-------+---------+-------+---------+-------+---------+-------+
|                 1                 |                 0                 |
+---------+-------+---------+-------+---------+-------+---------+-------+
|      Gender1    |      Gender2    |      Gender1    |      Gender2    |
+---------+-------+---------+-------+---------+-------+---------+-------+
|  12,5%  | 12,5% |  12,5%  | 12,5% |  12,5%  | 12,5% |  12,5%  | 12,5% |
+---------+-------+---------+-------+---------+-------+---------+-------+


Now that I have everything set up (i.e. data generation and import, logging, e.t.c.) I am wondering how to split the data so that it is scientifically correct (i.e. that results are valid and generalizable) and at the same time well balanced.

Is it more important that no face contained in the training data shows up in one of the other subsets (i.e. since there are a thousand individual frames of the same face 500 could go in train, and 500 in validation) so that no one can claim that I am overfitting or should I put the emphasis on the balance so that my CNN is well generalized?