Skip to content

SKEL-CF: Coarse-to-Fine Biomechanical Skeleton and Surface Mesh Recovery

Conference: ECCV 2026
arXiv: 2511.20157
Project Page: https://pokerman8.github.io/SKEL-CF/
Code: Yes (implementation included in the project page)
Area: 3D Vision / Human Understanding
Keywords: 3D Human Pose and Shape Estimation, SKEL Biomechanical Model, Coarse-to-Fine Estimation, Camera Intrinsic Modeling, Iterative Refinement

TL;DR

SKEL-CF proposes a coarse-to-fine framework to recover biomechanical skeletons and surface meshes from a single RGB image. Under this framework, the model is first trained on the high-quality HMR-SKEL dataset, followed by explicit camera intrinsic modeling to eliminate depth ambiguity. Finally, through an encoder coarse prediction + decoder layer-wise iterative refinement strategy, it significantly outperforms the previous SKEL method HSMR on challenging datasets such as MOYO (reducing MPJPE by 18.6%), while achieving comparable or even superior numerical accuracy to SMPL-based methods, and outputting anatomically more plausible poses.

Background & Motivation

While 3D human pose and shape estimation has made significant progress in recent years, its application in biomechanics (e.g., motion analysis, rehabilitation, human-computer interaction) remains limited. The fundamental reason is that the dominant parametric human model SMPL and its variants (SMPL-X, GHUM) use simplified kinematic structures and unconstrained axis-angle representations, which tend to generate anatomically implausible poses under complex joint motion scenarios like squats and yoga—such as knee bending that violates real human anatomical structures. The SKEL model fundamentally resolves this issue by re-skinning the SMPL mesh with an anatomically accurate skeleton and constraining the degrees of freedom of each joint (e.g., modeling the knee joint as a hinge joint). However, estimating SKEL parameters from a single image is extremely challenging: although SKEL's pose parameter space is reduced from 72 dimensions in SMPL to 46 dimensions, it has tighter constraints and lower tolerance for errors; coupled with the depth ambiguity of monocular images and a lack of training data, HSMR, the only prior end-to-end SKEL estimation method, has a far inferior accuracy compared to SMPL methods (PA-MPJPE of 79.6 vs. 50.2 of CameraHMR on MOYO).

Core Idea: Integrate high-quality SKEL annotation data construction, explicit camera intrinsic modeling, and a DETR-inspired coarse-to-fine iterative optimization into a unified SKEL parameter estimation framework, enabling the model to catch up with or even surpass unconstrained SMPL methods in numerical accuracy while maintaining biomechanical constraints.

Method

Overall Architecture

The goal of SKEL-CF is to estimate the set of SKEL parameters \(\boldsymbol{\Theta} = \{\boldsymbol{\theta}, \boldsymbol{\beta}, \boldsymbol{\pi}\}\) (46-dimensional pose, 10-dimensional shape, and camera extrinsics) from a single RGB image. The framework adopts a standard Transformer encoder-decoder architecture, with the core idea being "rough estimation by the encoder, layer-wise refinement by the decoder."

The input image is first cropped around the person using a human detector and then fed into a ViTPose-H encoder (32-layer Transformer, 16 attention heads, hidden dimension of 1280) to generate the initial coarse prediction \(\boldsymbol{\Theta}_0\) and contextual visual features. Meanwhile, a pre-trained camera intrinsic predictor inherited from CameraHMR estimates the focal length \(f\) from the full image and remains frozen during training. The focal length information is injected into the decoder via normalized bounding box geometric features \(\mathcal{F}_{\text{bbox}} = (c_x/f, c_y/f, s/f)\), where \((c_x, c_y)\) and \(s\) denote the center and scale of the bounding box, respectively. The decoder consists of 6 layers, each predicting a residual correction based on the prediction of the previous layer, combining encoder visual features and \(\mathcal{F}_{\text{bbox}}\) geometric cues to sequentially output \(\boldsymbol{\Theta}_1, \boldsymbol{\Theta}_2, \dots, \boldsymbol{\Theta}_T\), with the final \(\boldsymbol{\Theta}_T\) being the refined SKEL parameters.

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["Input: Single RGB Image"] --> B["Human Detection + Cropping"]
    B --> C["Camera Intrinsic Prediction<br/>(Frozen, estimates focal length f)"]
    B --> D["ViTPose-H Encoder<br/>Extracts visual features"]
    D --> E["Encoder Coarse Prediction<br/>Θ₀ = {θ₀, β₀, π₀}"]
    E --> F["Decoder Layer-wise Iterative Refinement<br/>Layer 1 → Layer 2 → ... → Layer 6"]
    C -->|"F_bbox = (cx/f, cy/f, s/f)"| F
    D -->|Visual Features| F
    F --> G["Final Output<br/>Θ_T = {θ_T, β_T, π_T}"]
    G --> H["SKEL Forward Process<br/>→ Human Mesh M + Skeletal Mesh Sk"]

Key Designs

1. HMR-SKEL Dataset: Providing high-quality supervision for SKEL with CameraHMR's refined annotations

Previously, HSMR fitted the SMPL pseudo-ground truth of the 4DHuman dataset to SKEL parameters, but 4DHuman itself suffers from low resolution and noisy annotations. Seizing the opportunity of the released refined SMPL annotations from CameraHMR, this work re-converts the higher-quality SMPL parameters of CameraHMR using the same SKEL fitting pipeline to construct the HMR-SKEL dataset (covering six sub-datasets: Human3.6M, MPI-INF-3DHP, COCO, MPII, AI Challenger, and InstaVariety, excluding AVA as CameraHMR did not provide annotations for it). The conversion follows the original SKEL fitting protocol: treating the SMPL mesh reconstructed by CameraHMR as the target and the SKEL parameters as learnable variables, the parameters are iteratively updated by minimizing the alignment loss between the generated SKEL mesh and the target SMPL mesh. To improve optimization stability, a hierarchical strategy is used—first optimizing lower body parameters, then upper body, and finally the whole body, while keeping the global orientation and translation terms fixed (empirically, permitting them to vary damages alignment quality). The entire process took about 58 hours on a single RTX 3090 to process 3 million images. Ablation studies show that simply replacing the training data from HSMR's 4DHuman+SKELify to HMR-SKEL reduces PA-MPJPE on MOYO from 79.6 to 53.7—meaning the data improvement alone contributes massive gains, indicating that high-quality annotations are critical for training tightly constrained models like SKEL.

2. Explicit Camera Intrinsic Modeling: Breaking the weak-perspective assumption to eliminate depth and scale ambiguity

One of the core difficulties in monocular 3D human body reconstruction is depth ambiguity—the same person appears in different sizes at different distances, and weak-perspective camera models cannot distinguish between "small person at a close distance" and "large person at a far distance." Previous HSMR implicitly relied on the weak-perspective assumption, rendering it less robust to diverse camera viewpoints. SKEL-CF inherits a pre-trained camera intrinsic predictor (HumanFOV) from CameraHMR to explicitly estimate focal length \(f\), injecting focal-length-normalized bounding box features \(\mathcal{F}_{\text{bbox}} = (c_x/f, c_y/f, s/f)\) into each layer of the decoder. The ingenuity of this design lies in: \(f\) captures the field of view of the camera, allowing the same cropped person region under different focal lengths to be distinguished and processed by the decoder (e.g., larger crop at a wide end vs. smaller crop at a telephoto end), thereby effectively decoupling person scale and camera distance. Ablation experiments confirm that simply adding camera intrinsic modeling (Only Cam configuration) drops the PVE on MOYO-HARD from the baseline (where MPJPE is 103.6) to 107.4, and further to 102.5 when combined with C2F and Refine—establishing camera modeling as the foundation for subsequent refinement steps.

3. Coarse-to-Fine Estimation + Layer-wise Supervised Iterative Refinement: Layer-by-layer residual refinement inspired by DETR

This is the most core design of the SKEL-CF method, which contains two tightly coupled sub-mechanisms. First, coarse-to-fine initialization: the encoder does not just output visual features, but also directly predicts a set of initial parameters \(\boldsymbol{\Theta}_0\), serving as a "generally reasonable" starting point; the task of the decoder is no longer "estimating from scratch" but "predicting residuals to refine the encoder's draft." Second, iterative refinement and layer-wise auxiliary supervision: each of the 6 decoder layers outputs a set of intermediate predictions \(\boldsymbol{\Theta}_i\), which are supervised by an auxiliary loss \(\mathcal{L}_{\text{refine}} = \sum_{i=1}^{T-1} \|\hat{\boldsymbol{\theta}}_i - \boldsymbol{\theta}_i\|_1\) (applied only to pose parameters, saving the expensive overhead of running the SKEL forward pass for each layer). Ablation data shows that removing the coarse-to-fine initialization (w.o C2F) causes the MPJPE on MOYO-HARD to rise from 90.0 to 91.5, and COCO [email protected] to drop from 0.80 to 0.67; removing the iterative refinement (w.o Refine) increases the PVE on MOYO-HARD from 102.5 to 107.7, proving that both are indispensable. The authors also attempted a "recurrent decoder" variant (reusing 1 layer 6 times), resulting in PA-MPJPE on MOYO-HARD degrading to 70.1, which proves that having multiple decoder layers learn different refinement strategies (e.g., shallower layers focusing on 2D translation, deeper layers focusing on scale/depth) is key to the effectiveness of iterative refinement.

A Complete Example: Layer-wise Refinement of a Yoga Pose

Using a squatting yoga pose in the MOYO dataset as an example, let's walk through the complete coarse-to-fine pipeline. The input is a frontal photo of a person. The human detector crops a \(256\times192\) region, and the camera intrinsic predictor estimates a focal length \(f=800\) from the original image (corresponding to an equivalent focal length of approximately 50mm), computing the normalized bounding box geometric feature \(\mathcal{F}_{\text{bbox}} = (c_x/800, c_y/800, s/800)\).

Encoder Phase: The ViTPose-H encoder processes the cropped visual tokens and simultaneously outputs visual features and the initial parameters \(\boldsymbol{\Theta}_0\) in the final layer. At this stage, this coarse prediction roughly captures the overall position and skeleton of the person, but has large detail errors—for example, the 3D position of the hip joint may deviate by 15-20cm, and the bending angle of the knees during the squat has a noticeable discrepancy. This is because the encoder does not receive the \(\mathcal{F}_{\text{bbox}}\) geometric cues (which are only input to the decoder), lacking awareness of the camera's field of view.

Decoder Layer-wise Refinement (6 layers): The 1st layer of the decoder receives \(\boldsymbol{\Theta}_0\), visual features, and \(\mathcal{F}_{\text{bbox}}\), and predicts the residual \(\Delta\boldsymbol{\Theta}_1\) to obtain \(\boldsymbol{\Theta}_1\). From the layer-wise attention analysis in the supplementary material, the first few layers mainly correct 2D translation \((t_x, t_y)\)—equivalent to "centering" the human body on the image plane. As shown in Table S4, at the 4th layer of the decoder, the [email protected] using \((t_x, t_y)\) alone reaches 0.56, while utilizing the scale \(s\) alone in the same layer yields a [email protected] of only 0.07. By the 5th layer, the 2D alignment is basically complete ([email protected] = 0.80), and the decoder begins to focus on correcting the depth/scale \(s\)—the scale [email protected] jumps to 0.80 in the 5th layer, and is further improved in the 6th (final) layer.

Final Effect: After 6 layers of iteration, the 3D position errors of the hip, knee, and ankle joints in the squatting pose are reduced from about 15-20cm in the coarse prediction to about 5-8cm (corresponding to an overall MOYO MPJPE of 85.0mm). Furthermore, due to SKEL's hinge constraint on the knee joint, the output knee bend angle complies with human anatomical limitations, avoiding the "lateral knee twisting" artifact that commonly occurs in SMPL methods. The entire inference process takes about 0.8 seconds per image (a single forward pass), which is 300 times faster than the two-stage CameraHMR+SKEL fitting scheme (about 4 minutes per image).

Loss & Training

The total loss function consists of three components:

\[\mathcal{L}_{\text{tot}} = \mathcal{L}_{\text{dec}} + \mathcal{L}_{\text{enc}} + \lambda_{ref}\mathcal{L}_{\text{refine}}\]

Where \(\mathcal{L}_{\text{enc}}\) and \(\mathcal{L}_{\text{dec}}\) supervise the encoder's draft and the final decoder output respectively, using the same SKEL loss:

\[\mathcal{L}_{\text{skel}}(\boldsymbol{\Theta}, \boldsymbol{\hat{\Theta}}) = \underbrace{\lambda_{kp}\mathcal{L}_{\text{kp}}}_{\text{keypoint level}} + \underbrace{\lambda_{\beta}\mathcal{L}_{\beta} + \lambda_{\theta}\mathcal{L}_{\theta}}_{\text{parameter level}}\]

The keypoint loss \(\mathcal{L}_{\text{kp}} = \|\hat{\mathbf{J}}_{3d} - \mathbf{J}_{3d}\|_1 + \|\hat{\mathbf{J}}_{2d} - \mathbf{J}_{2d}\|_1\) supervises both 3D joints and 2D projections; the parameter loss directly regresses pose \(\boldsymbol{\theta}\) and shape \(\boldsymbol{\beta}\) (both L1). Note that there is no direct supervision for the camera extrinsics \(\boldsymbol{\pi}\)—it is implicitly learned through 2D reprojection.

\(\mathcal{L}_{\text{refine}}\) is the auxiliary pose loss applied to the intermediate decoder layers: \(\sum_{i=1}^{T-1}\|\hat{\boldsymbol{\theta}}_i - \boldsymbol{\theta}_i\|_1\). Experiments compare "sparse supervision" (only pose L1) with "full supervision" (running the full SKEL forward pass on intermediate layers to compute the keypoint loss). Both achieve comparable accuracy, but sparse supervision is much more efficient as it bypasses the expensive SKEL forward process.

Hyperparameter settings: \(\lambda_{kp}=0.05\), \(\lambda_{\beta}=0.0005\), \(\lambda_{\theta}=0.001\), \(\lambda_{ref}=0.1\). The optimizer is AdamW (\(\beta_1=0.9\), \(\beta_2=0.999\), weight decay \(1\times10^{-4}\)), batch size is 64, and the learning rate is \(1\times10^{-5}\) with a 1-epoch warm-up. Training takes about 120 hours on 8 A100 GPUs for 30 epochs. Notably, the training epoch count is only 30% of that of HSMR (100 epochs) yet achieves significantly better accuracy, indicating that the HMR-SKEL data quality and the C2F architecture design jointy accelerate convergence.

Key Experimental Results

Main Results

Comparison with SKEL methods (Table 1): SKEL-CF comprehensively outperforms HSMR across all datasets, with the most significant improvement observed on the challenging MOYO yoga dataset.

Dataset Metric SKEL-CF HSMR CameraHMR+SKEL fit HMR2.0+SKEL fit
3DPW MPJPE / PA-MPJPE 61.5 / 38.7 81.5 / 54.8 70.4 / 41.8 81.0 / 54.4
Human3.6M MPJPE / PA-MPJPE 39.0 / 31.2 50.4 / 32.9 - 53.6 / 34.1
MOYO MPJPE / PA-MPJPE 85.0 / 51.4 104.5 / 79.6 75.5 / 49.9 130.5 / 93.7
MOYO-HARD MPJPE / PA-MPJPE 90.0 / 61.5 120.0 / 97.7 88.7 / 61.4 -

Comparison with SMPL methods (Table 2): SKEL-CF achieves comparable performance to the strongest SMPL-based single-frame method, CameraHMR, on 3DPW (both having an MPJPE of 61.5), and the performance gaps on EMDB and SPEC-SYN are also minuscule (PA-MPJPE gap < 1mm). However, SKEL-CF outputs skeletal poses that are anatomically much more plausible—due to SKEL's joint constraints naturally preventing the unnatural bending often seen in SMPL methods. The complete table for MOYO is provided in Supplementary Table S2.

Method 3DPW (MPJPE/PA/PVE) EMDB (MPJPE/PA/PVE) SPEC-SYN (MPJPE/PA/PVE)
CameraHMR (SMPL) 62.7 / 38.7 / 73.4 73.2 / 43.9 / 85.6 66.0 / 37.0 / 79.1
ReFit (SMPL) 57.6 / 38.2 / 67.6 91.7 / 55.5 / 106.2 103.6 / 51.3 / 116.3
WHAM (SMPL) 57.8 / 35.9 / 68.7 79.7 / 50.4 / 94.4 -
SKEL-CF (Ours) 61.5 / 38.7 / 73.5 72.0 / 44.5 / 84.7 69.4 / 37.1 / 83.4

Ablation Study

Ablation experiments are conducted on MOYO-HARD and COCO by progressively adding components. The starting point is the HSMR architecture with 4DHuman data, with HMR-SKEL data, camera intrinsic modeling (Cam), coarse-to-fine (C2F), and iterative refinement (Refine) progressively integrated.

Configuration Cam C2F Refine Dataset MOYO-HARD MPJPE / PA / PVE COCO [email protected] / 0.1
Baseline (HSMR) - - - 4DHuman+SKELify 120.0 / 97.7 / 140.5 0.86 / 0.96
Baseline w. HMR-SKEL - - - HMR-SKEL 103.6 / 67.4 / 121.4 0.76 / 0.91
Only Cam + - - HMR-SKEL 92.7 / 66.4 / 107.4 0.77 / 0.92
w.o C2F + - + HMR-SKEL 91.5 / 63.1 / 105.6 0.67 / 0.91
w.o Refine + + - HMR-SKEL 92.7 / 65.4 / 107.7 0.77 / 0.92
Full SKEL-CF + + + HMR-SKEL 90.0 / 61.5 / 102.5 0.80 / 0.93

Key Findings

  • Data quality is the primary driver of performance: Simply replacing the dataset (Baseline → Baseline w. HMR-SKEL) drops the PA-MPJPE on MOYO-HARD from 97.7 to 67.4, contributing the largest share of the overall improvement. This indicates that highly constrained models like SKEL are extremely sensitive to annotation noise.
  • Coarse-to-fine and iterative optimization are more effective in difficult scenarios: On the relatively simpler 3DPW, removing C2F barely affects accuracy (MPJPE 61.5 vs. 61.8); but on MOYO-HARD, C2F and Refine each contribute about 2-4mm PVE—the more challenging the data, the more valuable the layer-wise refinement.
  • COCO 2D PCK is a blunt metric: The paper notes that COCO PCK can only measure 2D projection alignment and is insensitive to 3D pose errors (the same PCK can correspond to drastically different 3D reconstructions), and thus serves only as an auxiliary reference.
  • Decoders have clear division of labor: The layer-wise attention analysis in the supplementary material reveals that the Pose token progressively scans different body parts, the Beta token expands from the head region to the overall body contour, and the Cam token gradually incorporates scene context from the human body region. Quantitative analysis further reveals that shallower layers (1-5) mainly learn 2D translation \((t_x, t_y)\), while the final layer mostly captures scale/depth \(s\).

Highlights & Insights

  • Data-Model Joint Design Loop: CameraHMR provides better SMPL annotations → SKEL-CF constructs better HMR-SKEL → training a better SKEL model, forming a positive feedback loop: "a better SMPL model helps build a better SKEL model." This paradigm of "using mature model outputs to train a new paradigm model" can be transferred to other parametric model migration scenarios.
  • DETR-style Layer-wise Refinement for Regression: Originally designed for query-based refinement in object detection, SKEL-CF elegantly adapts DETR's layer-wise object refinement to the hand-crafted human parameter regression task—the encoder predicts coarse parameters (analogous to the initial content of object queries), and the decoder sequentially predicts residuals. The ingenuity of this adaptation lies in each decoder layer learning a distinct refinement strategy (translation vs. scale), rather than simply "running the same process multiple times."
  • Lightweight Design of Camera Intrinsic Injection: Rather than concatenating camera intrinsics with image features or treating them as trainable tokens, they are injected into the decoder as normalized geometric features \(c_x/f, c_y/f, s/f\) while keeping the camera predictor frozen. This avoids introducing additional training instability while providing the decoder with sufficient geometric cues for projection-sensitive residual refinement.
  • Engineering Trade-off of Sparse Intermediate Supervision: Applying only pose L1 supervision to intermediate layers rather than running the full SKEL forward pass to calculate the keypoint loss maintains accuracy while greatly speeding up training—a classic trade-off between computational efficiency and precision, and the approach is highly reusable. The empirical support is solid (full vs. sparse supervision comparison table) and avoids trial-and-error optimization.

Limitations & Future Work

  • Limited coverage of SKEL itself: SKEL only models the human skeleton and body surface mesh, excluding fine hand and face details (like FLAME face + MANO hands in SMPL-X), and thus cannot be directly applied to scenarios requiring precise hand gestures or facial expressions.
  • HMR-SKEL dataset relies on the CameraHMR pipeline: If CameraHMR has systematic biases on certain subsets, these biases will be inherited by HMR-SKEL and propagated to SKEL-CF. The authors' exclusion of the AVA subset is a telling signal—each link in the data pipeline can be a bottleneck.
  • Risk of information leakage in MOYO-HARD construction: Partitioning the hard subset based on frame position (first 25% / last 25%) rather than motion difficulty may lead to scenarios where "hard frames are actually the most seen frames by the model." Although yoga sequences indeed present a "simple-complex-simple" structure, a more precise difficulty partitioning (such as using joint angle variation range) would be more convincing.
  • Lack of comparison with video-based methods: The paper only compares against single-frame methods, missing comparisons with video-based temporal methods like WHAM in the SKEL space. Temporal consistency in videos could be even more beneficial for tightly constrained models like SKEL.
  • Future Directions: Extending SKEL-CF to video inputs, adding support for hand and face parameters, exploring the use of SKEL's joint constraints as regularization terms to improve SMPL model training (forming a bidirectional complement), and end-to-end evaluation on biomechanical downstream tasks (gait analysis, sports injury assessment).
  • vs. HSMR: HSMR is the first end-to-end SKEL method, but the supervision is applied only to the final layer, a weak-perspective camera is used, and the training data comes from 4DHuman (lower quality). SKEL-CF comprehensively improves upon HSMR in three dimensions: data (CameraHMR refined annotations → HMR-SKEL), camera model (explicit intrinsic prediction), and refinement strategy (layer-wise supervised coarse-to-fine iteration). Mechanistically, HSMR "re-targets a SMPL method to SKEL," whereas SKEL-CF "is custom-designed for the characteristics of SKEL."
  • vs. CameraHMR: CameraHMR is the strongest single-frame method in the SMPL space, and its HumanFOV camera model and CamSMPLify data refinement pipeline directly inspired the camera intrinsic design and HMR-SKEL construction in this work. The key differences lie in the output space—CameraHMR outputs unconstrained SMPL parameters, which might perform well numerically but do not guarantee anatomical plausibility; SKEL-CF outputs joint-constrained SKEL parameters, yielding comparable numerical accuracy but with much stronger physical plausibility.
  • vs. TokenHMR: TokenHMR handles SMPL pseudo-ground truth noise and 2D/3D keypoint inconsistency through VQ-VAE quantized token dictionaries and TALS loss. SKEL-CF takes a different path—instead of regularizing against noise, it directly reduces noise at the source with a better data pipeline (CameraHMR). The two lines of work are complementary: TokenHMR's concepts can be used on top of HMR-SKEL to further clean residual noise.
  • vs. DETR / Deformable DETR: The coarse-to-fine + layer-wise refinement strategy in this paper directly inherits from the DETR-series object detection frameworks, but its verified effectiveness in regression tasks (especially the discovery of different layers learning different semantics) provides design insights for non-detection Transformer architectures.

Rating

  • Novelty: 4/5 [Each of the three components has precedents (DETR coarse-to-fine, CameraHMR camera model, HSMR SKEL estimation), but integrating them into a custom pipeline tailored to SKEL's characteristics with thorough ablation showing that every component is indispensable demonstrates a clear internal design logic]
  • Experimental Thoroughness: 5/5 [Evaluated on 5 datasets, compared with 10+ methods, complete ablations (across data, camera, C2F, Refine), iterative refinement sub-ablations (sparse vs. full supervision vs. recurrent decoder), camera extrinsic analysis, layer-wise attention visualization, and 2D metric discussions—the experimental design is nearly flawless]
  • Writing Quality: 4/5 [Clear structure, detailed method descriptions, complete equations, and well-reasoned analyses; the discussion of COCO PCK's limitations in Fig. 5 reflects an honest attitude toward data interpretation; the only room for improvement is the justification for the MOYO-HARD construction logic]
  • Value: 4/5 [Provides a strong baseline for the SKEL ecosystem, and the dataset HMR-SKEL has independent contribution value; serves as a good reference for bringing DETR-style refinement into regression tasks; however, given SKEL's currently limited coverage (no hands/face), the application scenarios remain somewhat narrow]