Segmentation and Measurement of Skeletal Muscle Areas on CT Scans
Estimation of sarcopenia on different lumbar vertebrae levels (L3-L2-L1)
Abstract
Skeletal muscle area measured on CT is used to estimate sarcopenia, usually at the third lumbar vertebra (L3). Extending automatic measurement to L2 and L1 requires masks that did not exist at those levels.
We train a U-Net to segment skeletal muscle on 512 × 512 axial slices and grow the dataset step by step: models trained on L3 generate masks for L2 and L1, accepted masks are added back, and training repeats. A Laplacian "hard filter", rotations, artificial hands and corrected error masks improve robustness, and a ribs-removal post-processing step cleans the L2 and L1 masks.
The final training set holds 4,472 image–mask pairs across the three levels, and the final models reach a median validation Dice around 0.99 on both the L3-only and the L3-L2-L1 datasets.
Keywords: skeletal muscle · sarcopenia · CT segmentation · U-Net · data augmentation · continual adding
Method
The network is a classic U-Net on 512 × 512 inputs, with a 6-stage encoder (16 to 512 feature maps) and a matching decoder. It trains for 30 epochs with RMSProp on a 90:10 split, in 3 to 5 hours on a single NVIDIA TITAN RTX GPU. Images are clipped to [0, 2000] HU and normalized to [-1, 1].
- Hard filter. A Laplacian filter is applied to low-noise images so the model learns both soft and hard reconstruction textures.
- Rotation. Random rotations in [−30°, 30°] cover patients who lie slightly rotated.
- Artificial hands. Hands and objects extracted from the dataset are added to training images, so the model stops segmenting them.
- Ribs removal. A post-processing step removes regions inside the ribs, needed at L2 and L1.
- Continual adding. Models trained on L3 generate L2 and L1 masks; accepted masks join the training set and the cycle repeats.
Dataset
Table 1: Dataset after all augmentations
| Level | Final training | Error remaining | Augmentation | Total |
|---|---|---|---|---|
| L3 | 1,786 | 417 | 88 | 2,291 |
| L2 | 1,559 | 1,039 | 0 | 2,598 |
| L1 | 1,039 | 2,227 | 0 | 3,266 |
| Total | 4,472 | 3,683 | 88 | 8,155 |

Results
Table 2: Experiments, in chronological order.
| Models | Levels | Description |
|---|---|---|
| M1, M11 | L3 | Hard filter only |
| M2, M22 | L3 | Hard filter + rotation |
| M3, M33 | L3 | Hard filter + hand masks (88) |
| M4, M44 | L3 | Hard filter + hand masks (88) + error added (59) |
| M5, M55 | L3 | Hard filter + rotation + error added (59) |
| M6, M66 | L3 | Hard filter + rotation + hand masks (88) + error added (102) |
| M7, M77 | L3 | Same as M6 + GN 3 |
| M8, M88 | L3-L2 | Same as M7 + L2 added (1,093) |
| M9, M99 | L3-L2 | Same as M7 + L2 added (1,559) |
| M10, M100 | L3-L2-L1 | Same as M7 + L2 added (1,559) + L1 added (1,039) |
Experiments M1 to M77 train on L3 only, adding the hard filter, rotation, artificial hands and corrected error masks step by step. M8 to M100 add L2 and then L1 samples. Results between experiments are not directly comparable, since the validation set grows each time new image–mask pairs are added.


Key findings
- Final models: M7/M77 on L3 only and M10/M100 on L3-L2-L1 perform well, with median validation Dice around 0.99.
- Three levels from one: segmentation now works at L3, L2 and L1, starting from L3 masks only.
- Open challenges: noisy samples and images with unusual texture remain difficult.
Conclusions & limitations
The results obtained are both satisfying and promising: segmentation succeeds on the different lumbar vertebrae levels (L3, L2 and L1), but some challenges remain, such as noisy samples and texture variability. The next step is full fine-tuning of the models’ hyperparameters to improve segmentations.


