The initial prototype that we created had a model that was chosen completely randomly. For this second version, we tested a network architecture that already exists, VGG Net. Created by researchers at Visual Graphics Group at Oxford, this network architecture is focused on narrowing down the output layers, forming a pyramid structure.
For training and testing, the same data-set is used as for the initial prototype.
As described in the introduction, the VGG Network has a pyramid shape as can be seen in the image above. This network consists of stacked convolutional layers, followed by pooling layers that narrow the layers down.
Based on this structure, the following layers were created in our model. Note that the final (output) layer was replaced with a Dense layer with an output of 15, since we’re trying to solve a regression problem as opposed to a classification problem.
During training, we generated a graph that represents how the model was doing.
As can be seen in the image above, this model did quite well when compared to our own model. This is the type of graph that we would expect from training with the correct settings.
Where our own model ended up with a tested MSE of 24577.8300781, the VGG network model generated a mere 4825.74925785 MSE, which is quite an improvement. When comparing the results of our sample image, the VGG Net clearly beat our model in terms of accuracy.
These are the results of VGG Net.
Neck Base Circumference (mm): 5443.2305 Chest Girth (Chest Circumference at Scye) (mm): 11319.514 Bust/Chest Circumference Under Bust (mm): 9356.704 Waist Circumference, Pref (mm): 9928.152 Hip Circumference, Maximum (mm): 11999.997 Thigh Circumference (mm): 6919.885 Shoulder Breadth (mm): 5252.2485 Arm Length (Shoulder to Elbow) (mm): 4032.0461 Arm Length (Shoulder to Wrist) (mm): 7275.15 Hand Circumference (mm): 2366.9172 Hand Length (mm): 2291.44 Head Circumference (mm): 6671.074 Head Length (mm): 2272.1252 Crotch Height (mm): 9525.036 Ankle Circumference (mm): 3003.2024
When compared to the actual measurements, the following table is formed:
|Measurement||Predicted (mm)||Actual (mm)||Percentage (%)|
|Neck Base Circumference||5443.2305||467||1165.57398287|
|Chest Girth (Chest Circumference at Scye)||11319.514||888||1274.72004505|
|Bust/Chest Circumference Under Bust||9356.704||766||1221.50182768|
|Waist Circumference, Pref||9928.152||784||1266.34591837|
|Hip Circumference, Maximum||11999.997||924||1298.70097403|
|Arm Length (Shoulder to Elbow)||4032.0461||314||1284.09111465|
|Arm Length (Shoulder to Wrist)||7275.15||585||1243.61538462|
As can be seen in these results, the VGG network model produced results that were in the range of being roughly 10-13 times the actual measurements, as opposed to the results of 200-250 times the actual measurements that our own model produced.
The VGG network architecture worked surprisingly well and produced results that were far more accurate than our own first model. This was to be expected, due to the fact that our own model was built at random, as opposed to being based on any research.
Based on the structure and results of the VGG network, we feel like it’s worth exploring this type of architecture in depth. We’re going to adapt the network to see if we can optimize it, without changing our training or testing data. We feel like the biggest optimization can come from narrowing down the layers even more than they currently are. The last layer before the output layer, currently has an output of 4096. Perhaps it would be an interesting idea to see if adding extra layers that narrow the output towards 15 would benefit the results.
During this experiment, we’ve improved the training graph, so that it actually produces results that can be used to determine the model’s efficiency. The other goals that we set for ourselves in the last blog post for the next few weeks are still scheduled to be worked on.