N E M O : N EURAL M ESH M ODELS OF C ONTRASTIVE F EATURES FOR R OBUST 3D P OSE E STIMATION
Anonymous authors
Paper under double-blind review
A BSTRACT
3D pose estimation is a challenging but important task in computer vision.
In this work, we show that standard deep learning approaches to 3D pose estimation are not robust to partial occlusion.
Inspired by the robustness of generative vision models to partial occlusion, we propose to integrate deep neural networks with 3D generative representations of objects into a uniﬁed neural architecture that we term
NeMo .
In particular, NeMo learns a generative model of neural feature activations at each vertex on a dense 3D mesh.
Using differentiable rendering we estimate the 3D object pose by minimizing the reconstruction error between NeMo and the feature representation of the target image.
To avoid local optima in the reconstruction loss, we train the feature extractor to maximize the distance between the individual feature representations on the mesh using contrastive learning.
Our extensive experiments on PASCAL3D+, occluded-PASCAL3D+ and ObjectNet3D show that
NeMo is much more robust to partial occlusion compared to standard deep networks, while retaining competitive performance on non-occluded data.
Interestingly, our experiments also show that NeMo performs reasonably well even when the mesh representation only crudely approximates the true object geometry with a cuboid, hence revealing that the detailed 3D geometry is not needed for accurate 3D pose estimation.
I NTRODUCTION
Object pose estimation is a fundamentally important task in computer vision with a multitude of realworld applications, e.g. in self-driving cars, or partially autonomous surgical systems.
Advances in the architecture design of deep convolutional neural networks (DCNNs) Tulsiani & Malik (2015);
Su et al. (2015); Mousavian et al.
; Zhou et al.
(2018) increased the performance of computer vision systems at 3D pose estimation enormously.
However, our experiment shows current 3D pose estimation approaches are not robust to partial occlusion.
This lack of robustness can have serious consequences in real-world applications and therefore needs to be addressed by the research community.
In general, recent works follow either of two approaches for object pose estimation: Keypoint-based approaches detect a sparse set of keypoints and subsequently align a 3D object representation to the detection result.
However, due to the sparsity of the keypoints, these approaches are highly vulnerable when the keypoint detection result is affected by adverse viewing conditions, such as partial occlusion.
On the other hand, rendering-based approaches utilize a generative model, that is built on a dense 3D mesh representation of an object.
They estimate the object pose by reconstructing the input image in a render-and-compare manner (Figure 1).
While rendering-based approaches can be more robust to partial occlusion Egger et al.
, their core limitation is that they model objects in terms of image intensities.
Therefore, they pay too much attention to object details that are not relevant for the 3D pose estimation task.
This makes them difﬁcult to optimize Blanz &
Vetter (2003);
Sch ¨ onborn et al.
(2017), and also requires a detailed mesh representation for every shape variant of an object class (e.g. they need several types of sedan meshes instead of using one prototypical type of sedan).
In this work, we introduce NeMo a rendering-based approach to 3D pose estimation that is highly robust to partial occlusion.
Our key idea is to learn a generative model of an object category in terms of neural feature activations, instead of image intensities (Figure 1).
In particular, NeMo is
[Figure]
composed of a prototypical mesh representation of the object category and feature representations at each vertex of the mesh.
The feature representations are learned to be invariant to instance speciﬁc details (such as shape and color variations) that are not relevant for the 3D pose estimation task.
Speciﬁcally, we use contrastive learning He et al.
; Wu et al.
; Bai et al.
(2020) to ensure that the extracted features of an object are distinct from each other (e.g. the features of the front tire of a car are different from those of the back tire), while also being distinct from non-object features in the background.
Furthermore, we train a generative model of the feature activations at every vertex of the prototypical mesh representation.
During inference, NeMo estimates the object pose by optimizing the neural mesh model to reconstruct a target feature map using render-andcompare with gradient-based optimization w.r.t.
the 3D object pose parameters of the mesh.
We evaluate NeMo at 3D pose estimation on the PASCAL3D+
Xiang et al.
(2014) and the ObjectNet3D Xiang et al.
(2016) dataset.
Both datasets contain a variety of rigid objects and their corresponding 3D CAD models.
Our experimental results show that NeMo outperforms popular approaches such as Starmap Zhou et al.
(2018) at 3D pose estimation by a wide margin under partial occlusion, and performs comparably when the objects are not occluded.
Furthermore, we show that the mesh representation in NeMo can also simply approximate the true object geometry with a cuboid, and still perform exceptionally well.
In summary, we make three main contributions in this work:
We propose a 3D neural mesh model of objects that is generative in terms of contrastive neural network features.
This representation combines a prototypical geometric representation of the object category with a generative model of neural network features that are invariant to irrelevant object details.
We demonstrate that standard deep learning approaches to 3D pose estimation are highly sensitive to partial occlusion.
In contrast, NeMo performs 3D pose estimation in a renderand-compare manner, that enables an exceptional robustness to partial occlusion.
In contrast to other rendering-based approaches that require instance-speciﬁc mesh representations of the target objects, we show that NeMo achieves a highly competitive 3D pose estimation performance even with a very crude prototypical approximation of the object geometry using a cuboid.
R ELATED W ORK
Category-Level Object Pose Estimation.
Category-Level object pose estimation has been well explored by the research community.
A classical approach as proposes by Tulsiani & Malik (2015) and Mousavian et al.
(2017) was to formulate object pose estimation as a classiﬁcation problem.
Another common category-level object pose estimation approach involves a two-step process Szeto & Corso (2017);
Pavlakos et al.
(2017): First, semantic keypoints are detected intedenpdently and subsequently a Perspective-n-Point problem is solved to ﬁnd the optimal 3D pose of an object mesh
Lu et al.
; Lepetit et al.
Zhou et al.
(2018) further improved pose estimation the performance of keypoint-based methods by utlizing depth information.
Recent work Wang et al.
Chen et al.
(2020) introduced render-and-compare to for category-level pose estimation.
However, both approaches used pixel-level image synthesis and required detailed mesh models during training, while Wang et al.
(2019) also required a depth map during inference to guide the pose ﬁtting process.
In contrast, NeMo preforms render-and-compare on the level of contrastive features, which are invariant to intra-category nuisances, such as shape and color variations.
This enables NeMo to achieve accurate 3D pose estimation results even with a crude prototypical category-level mesh representation.
Pose Estimation under Partial Occlusion.
Keypoint-based pose estimation methods are sensitive to outliers, which can be caused by partial occlusion Pavlakos et al.
; Sundermeyer et al.
Some rendering-based approaches achieve satisfactory results on instance-level pose estimation under partial occlusion Song et al.
; Peng et al.
; Zakharov et al.
; Li et al.
However, these approaches render RGB images or use instance-level constraints, e.g. pixellevel voting, to estimate object pose.
Therefore, these approaches are not suited for category-level pose estimation.
To the best of our knowledge, NeMo is the ﬁrst approach that performs categorylevel pose estimation robustly under partial occlusion.
Contrastive Feature Learning.
Contrastive learning is widely used in deep learning research.
Hadsell et al.
(2006) proposed the most intuitive form of contrastive loss, the tuple loss.
Schroff et al.
; Sohn (2016) extended the contrastive loss to triplets and N-Pair tuples.
Recent contrastive learning approaches showed high potential in unsupervised learning Wu et al.
; He et al.
Oord et al.
; Han et al.
(2019) demonstrated the effectiveness of feature-level contrastive losses in representation learning.
Bai et al.
(2020) proposed a keypoint detection framework by optimizing the feature representations of keypoints with a contrastive loss.
In this work, we use contrastive feature learning to encourage the feature extraction backbone to extract locally distinct features.
This, in turn, enables 3D pose estimation by simply optimizing the neural reconstruction loss with gradient descent.
N E M O : A 3D GENERATIVE MODEL OF NEURAL FEATURES
We denote a feature representation of an input image I as Φ( I ) =
F l ∈ R H
×
W
×
D .
Where l is the output of a layer l of a DCNN Φ , with D being the number of channels in layer l .
f li ∈ R D is a feaure vector in F l at position i on the 2D lattice P of the feature map.
In the remainder of this section we omit the superscript l for notational simplicity because this is ﬁxed a-priori in our model.
3. N EURAL R ENDERING OF F EATURE M APS
Similar to other graphics-based generative models, such as e.g. 3D morphable models Blanz &
Vetter (1999); Egger et al.
(2018), our model builds on a 3D mesh representation that is composed of a set of 3D vertices Γ = { r ∈ R 3 | r = 1 , . . .
, R } .
For now, we assume the object mesh to be given at training time but we will relax this assumption in later sections.
Different from standard graphics-based generative models, we do not store RGB values at each mesh vertex r but instead store feature vectors Θ
= { θ r ∈ R D | r = 1 , . . .
, R } .
Using standard rendering techniques, we can use this 3D neural mesh model N = { Γ , Θ } to render feature maps:
[Equation]
where m are the camera parameters for projecting the neural mesh representation (Figure 2).
3. N EURAL M ESH M ODELS
Neural Mesh Models are probabilistic generative models of neural feature activations.
Hence, our goal is to learn a generative model p ( F | N y ) of the real-valued feature activations F of an object class y by leveraging a 3D neural mesh representation N y .
Assuming that the 3D pose m of the object in the input image is known, we deﬁne the likelihood of the feature representation F as:
[Equation]
The foreground FG is the set of all positions on the 2D lattice P of the feature map F that are covered by the rendered neural mesh model.
We compute FG by projecting the 3D vertices of the mesh model Γ y into the image using the ground truth camera pose m to obtain the 2D locations of the visible vertices in the image FG =
{ s t ∈ R 2 | t = 1 , . . .
, T } .
We deﬁne foreground feature likelihoods to be Gaussian distributed:
[Equation]
Note that the correspondence between the feature vector f i in the feature map F and the vector θ r on the neural mesh model is given by the 2D projection of N y with camera parameters m .
Those features that are not covered by the neural mesh model
BG =
P \ {FG} , i.e. are located in the background, are modeled by a Gaussian likelihood:
[Equation]
with mixture parameters B = { β, σ } .
3. T RAINING USING M AXIMUM L IKELIHOOD AND C ONTRASTIVE L EARNING
During training we want to optimize two objectives: 1) The parameters of the generative model as deﬁned in Equation 2 should be optimized to achieve maxmimum likelihood on the training data.
The backbone used for feature extraction ψ should be optimized to make the individual feature vectors as disctinct from each other as possible.
Maximum likelihood estimation of the generative model.
We optimize the parameters of the generative model to minimize the negative log-likelihood of our model (Equation 2):
[Equation]
If we constrain the variances such that { σ 2 = σ 2 r = 1 |∀ r } then the maximum likelihood loss reduces to:
[Equation]
where C is a constant scalar.
Contrastive learning of the feature extractor.
The general idea of the contrastive loss is to train the feature extractor such that the individual feature vectors on the object are distinct from each other, as well as from the background:
[Equation]
The contrastive feature loss L Feature encourages the features on the object to be distinct from each other (e.g. the feature vectors at the front tire of a car are different from those of the back tire).
The contrastive background loss L Back encourages the features on the object to be distinct from the features in the background.
The overall loss used to train NeMo is:
[Equation]
3. R OBUST 3D P OSE E STIMATION WITH R ENDER AND C OMPARE
After training the feature extractor and the generative model in NeMo , we apply the model for estimating the camera pose parameters b .
In particular we aim to optimize the model likelihood from
[Figure]
Equation 2 w.r.t.
to the camera parameters in a render-and-compare manner.
Following related work on robust inference with generative models Kortylewski (2017); Egger et al.
we optimize a robust model likelihood:
[Equation]
Here z i ∈ { 0 , 1 } is a binary variable and p ( z i = 1) and p ( z i = 0) are the prior probabilities of the respective values.
Here z i is a binary variable that allows the background model p ( f i | B ) to explain those locations in the feature map F that are in the foreground region FG , but which the foreground model ( f i | N y , m ) cannot explain well.
A primary purpose of this mechanism is to make the cost function robust to partial occlusion.
Figure 2 illustrates the inference process.
Given an initial camera pose estimate we use the Neural Mesh Model to render a feature map ¯ F and evaluate the reconstruction loss in the foreground region FG (foreground score map), as well as the reconstruction error when using the background model only (background score map).
Pixel-wised comparison of foreground score and background score yield the occlusion map Z
= { z i ∈ { 0 , 1 }|∀ i ∈ P} .
The map Z indicates where feature vectors are explained by either the foreground or background model.
A fundamental beneﬁt of our Neural Mesh Models is that, they are generative on the level of neural feature activations.
This makes the overall reconstruction loss very smooth compared to related works who are generative on the pixel level.
Therefore, NeMo can be optimized w.r.t.
the pose parameters with standard stochastic gradient descent.
We visualize the loss as a function of the individual pose parameters in Figure 2.
Note that the losses are generally very smooth and contain one clear global optimum.
This is in stark contrast to the optimization of classic generative models at the level of RGB pixels, which often requires complex hand designed initialization and optimization procedures to avoid the many local optima of the reconstruction loss Blanz & Vetter (2003);
Sch¨onborn et al.
E XPERIMENT
We ﬁrst describe the experimental setup in Section 4.1.
Subsequently, we study the performance of
NeMo at 3D pose estimation in Section 4.2 and study the effect of crudely approximating the object geometry within NeMo single 3d cuboid, that one cuboid represent all object in each category, and multiple 3d cuboid, that one cuboid represent only one subtype of object in each category.
We ablate the important modules of our model in Section 4.4.
4. E XPERIMENTAL S ETUP
Evaluation.
The task of 3D object pose estimation involves the prediction of three rotation parameters (azimuth, elevation, in-plane rotation) of an object relative to the camera.
In our evaluation, we follow the protocol as proposed in related work Zhou et al.
(2018) to measure the pose estimation error between the predicted rotation matrix and the ground truth rotation matrix:
[Figure]
[Equation]
We report two commonly used evaluation metrics the median of the rotation error, the percentage of predicted angles within a given accuracy threshold.
Speciﬁcally, we use the thresholds pi 6 and pi 18 .
Following Zhou et al.
(2018), we assume the centers and scales of the objects are given in all experiments.
Datasets.
We evaluate NeMo on both the PASCAL3D+ dataset Xiang et al.
(2014) and the occluded
PASCAL3D+
dataset Wang et al.
PASCAL3D+ contains 12 man-made object categories with 3D pose annotations and 3D meshes for each category respectively.
We follow Wang et al.
(2020) and Bai et al.
(2020) to split the PASCAL3D+ into a training set with 11045 images and validation set with 10812 images.
The occluded PASCAL3D+ dataset is a benchmark to evaluate robustness under occlusion.
This dataset simulates realistic man-made occlusion by artiﬁcially superimposing occluders collected from the MS-COCO dataset Lin et al.
(2014) on objects in PASCAL3D+.
The dataset contains all 12 classes of objects from PASCAL3D+ dataset with three levels of occlusion, where L1: 20-40%, L2: 40-60%, L3: 60-80% of the object area are occluded.
We further test NeMo on the ObjectNet3D dataset Xiang et al.
(2016), which is also a category-level 3D pose estimation benchmark.
ObjectNet3D contains 100 different categories with 3D meshes, it contains totally 17101 training samples and 19604 testing samples, including 3556 occluded or truncated testing samples.
Following Zhou et al.
(2018), we report pose estimation results on 18 categories.
Note that different from StarMap, we use all images during evaluation, including occluded or truncated samples.
Training Setup.
In the training process, we use the 3D meshes (see Section 4.2 for experiments without the mesh geometry), the locations and scales of objects, and the 3D poses.
We use Blender
Community (2018) to reduce the resolution of the mesh because the meshes provided in PASCAL3D+ have a very high number of vertices.
In order to balance the performance and computational cost, in particular the cost of the rendering process, we limit the size of the feature map produced by backbone to 18 of the input image.
To achieve this, we use the ResNet50 with two additional upsample layers as our backbone.
We train a backbone for each category separately, and learn a Neural Mesh Model for each subtype in a category.
We follow hyperparameter settings from
Bai et al.
(2020) for the contrastive loss.
We train NeMo for 800 training epochs with a batch size of 108, which takes around 3 to 5 hours to train a category using 6 NVIDIA RTX Titan GPUs.
Baselines.
We compare our model to StarMap Zhou et al.
(2018) using their ofﬁcial implementation and training setup.
Following common practice, we also evaluate a popular baseline that formulates pose estimation as a classiﬁcation problem.
In particular, we evaluate the performance of a
[Table]
deep neural network classiﬁer that uses the same backbone as NeMo.
We train a category speciﬁc
Resnet50 (Res50-Speciﬁc)
[Table]
which formulates the pose estimation in each category as an individual classiﬁcation problem.
Furthermore, we train a non-speciﬁc Resnet50 (Res50-General), which performs pose estimation for all categories in a single classiﬁcation task.
We report the result of both architectures using the implementation provided by Zhou et al.
Inference via Feature-level Rendering.
We implement the NeMo inference pipeline (see 3.4) using PyTorch3D Ravi et al.
Speciﬁcally, we render the Neural Mesh Models into feature map ¯ F using the feature representations Θ stored at each mesh vertex.
We estimate the object pose by minimizing the reconstruction loss as introduced in Equation 12.
For initialization of pose optimization, we uniformly sample 144 different poses (12 azimuth angles, 4 elevation angles,in-plane rotations respectively).
Then we pick the initial pose with minimum reconstruction loss as a starting point of optimization (optimization conduct with only the chosen pose, others will be deprecated).
On average each image takes about 8s with a single GPU for inference.
The whole inference process on PASCAL3D+ takes about 3 hours using a 8 GPUs machine.
4. R OBUST 3D P OSE E STIMATION U NDER O CCLUSION
Baseline performances.
Table 1 (for categories speciﬁc scores, see 6) illustrates the 3D pose estimation results on PASCAL3D+
under different levels of occlusion.
In the low accuracy setting ( ACC π 6 ) StarMap performs exceptionally well when the object is non-occluded ( L 0 ).
However, with increasing level of partial occlusion, the performance of StarMap degrades massively, falling even below the basic classiﬁcation models Res50-General and Res50-Speciﬁc.
These results highlight that today’s most common deep networks for 3D pose estimation are not robust .
Similar, generalization patterns can be observed for the high accuracy setting ( ACC π 18 ).
However, we can observe that the classiﬁcation baselines do not perform as well as before, and hence are not well suited for ﬁne-grained 3D pose estimation.
Nevertheless, they outperform StarMap at high occlusion levels ( L 2 & L 3 ).
NeMo.
We evaluate NeMo in three different setups: NeMo uses a down-sampled object mesh as geometry representation, NeMo-MultiCuboid and NeMo-SingleCuboid approximate the 3D object geometry crudely using 3D cuboid boxes.
We discuss the cuboid generation and results in detail in the next paragraph.
Compared to the baseline performances, we observe that NeMo achieves competitive performance at estimating the 3D pose of non-occluded objects.
Moreover, NeMo is much more robust compared all baseline approaches .
In particular, we observe that NeMo achieves the highest performance at every evaluation metric when the objects are partially occluded.
Note that the training data for all models is exactly the same.
To further investigate and understand the robustness of NeMo, we qualitatively analyze the pose estimation and occluder location predictions of NeMo in Figure 3.
Each subﬁgure shows the input image, the pose estimation result, the occluder localization map and the loss as a function of the pose angles.
We visualize the loss landscape along each pose parameter (azimuth, elevation and in-plane rotation) by sampling the individual parameters in a ﬁxed step size, while keeping all other parameters at their ground-truth value.
We further split the binary occlusion map Z into three regions to highlight the occluder localization performance of NeMo.
In particular, we split the region that is explained by the background model into a yellow and a red region.
The red region is covered by rendered mesh and highlights the locations with the projected region of the mesh, which the neural mesh model cannot explain well.
Hence these mark the locations in the image that NeMo predicts
[Table] [Table]
to be occluded.
From the qualitative illustrations, we observe that NeMo maintains high robustness even under extreme occlusion, when only a small part of the object is visible.
Furthermore, we can clearly see that NeMo can approximately localize the occluders.
This occluder localization property of NeMo makes our model not just more robust but also much more human-interpretable compared to standard deep network approaches.
NeMo without detailed object mesh.
We approximate the object geometry in NeMo by replacing the downsampled mesh with 3D cuboid boxes (see Figure 5).
The vertices of the cuboid meshes are evenly distributed on all six sides of the cuboid.
For generating the cuboids, we use three constraint: The cuboid should cover all the vertices of the original mesh with minimum volume; 2)
The distances between each pair of adjacent vertices should be similar;
The
total number of vertices for each mesh should be around
vertices.
We generate two different types of models.
NeMo-MultiCuboid uses a separate cuboid for each object mesh in an object category, while NeMoSingleCuboid uses on cuboid for all instances of a category
We report the pose estimations results with NeMo using cuboid meshes in Table 1.
The results show that approximating the detailed mesh representations of a category with a single 3D cuboid gives surprisingly good results .
In particular, NeMo-SingleCuboid even often outperforms our standard model.
This shows that generative models of neural network feature activations must not retain the detailed object geometry, because the feature activations are invariant to detailed shape properties.
Moreover, NeMo-MultiCube outperforms the SingleCube model signiﬁcantly.
This suggests that for some categories the size between different sub-types can be very differnt (e.g. for the airplane class it could be a passanger jet or a ﬁghter jet).
Therefore, a single mesh may not be representative enough for some object categories.
The MultiCuboid model even outperforms our the model with detailed mesh geometry.
This is very likely caused by difﬁculties during the down-sampling of the original meshes in PASCAL3D+, which might remove important parts of the object geometry.
We also conduct experiment on ObjectNet3D dataset, which reported in Table 2.
The result demonstrates that NeMo outperforms StarMap in 14 categories out of all 18 categories.
Note that due to the considerable number of occluded and truncated images in ObjectNet3D dataset, this dataset is signiﬁcantly harder than PASCAL3D+, however, NeMo still demonstrates reasonable accuracy.
4. G ENERALIZATION TO U NSEEN V IEWS
To further investigate robustness of NeMo to out-of-distribution data, we evaluate performance of
NeMo wwhen objects are observed from previously unseen viewpoints.
For this, we split the PASCAL3D+ dataset into two sets based on the ground-truth azimuth angle.
In particular we use front and rear views for training and test if the models can successfully estiamte the object pose in a side view.
We evaluate all approaches on the full testing set and split the performance into seen and
[Table] [Table]
unseen poses.
The visualization in the left of Table 4 shows the distribution of ground-truth azimuth angles in the PASCAL3D+ test dataset.
The seen-test-set contains 7305 images while the unseentest-set contains 3507 images.
Table 4 shows that NeMo can signiﬁcantly better generalize to novel viewpoints compared to the baselines.
For some categories the accuracy of NeMo on the unseentest-set is even comparable to seen-test-set (Table 7).
These results highlight the importance of building neural networks with 3D internal representations, which enables very strong generalization abilities under 3D transformations.
4. A BLATION S TUDY
In Table 4, we study the effect of each individual module of NeMo.
Speciﬁcally, we remove the clutter feature, background score and occluder prediction during inference, and only use foreground score to calculate pose loss.
This reduces the robustness to occlusion signiﬁcantly.
Furthermore, we remove the contrastive loss and use neural features that were extracted with an ImageNet-pretrained
Resnet50 with non-parametric-upsampling.
This leads to a massive decrease in performance, and hence highlights the importance of learning locally distinct feature representations.
Table 5 (and Table 10) show the quantitative analysis of the sensitivity of NeMo to the random pose initialization before the pose optimization.
In this ablation, we evaluate NeMo-MultiCuiboid with 144 down to 1 uniformly sampled initialization poses.
Note that we do not run 144 optimization processes.
We instead evaluate the reconstruction error for each initialization and start the optimization from the initializaiton with the lowest error.
Hence, every experiment only involves one optimization run.
The results demonstrate that NeMo beneﬁts from the smooth lose landscape.
With 6 initial samples NeMo achieves a reasonable performance, while 72 initial poses almost yield the maximum performance.
This ablation clearly highlights that, unlike standard Render-and-Compare approaches Blanz & Vetter (1999); Sch¨onborn et al.
(2017), NeMo does not require complex designed initialization strategies.
C ONCLUSION
In this work, we considered the problem of robust 3D pose estimation with neural networks.
We found that standard deep learning approaches do not give robust predictions when objects are partially occluded.
In an effort to resolve this fundamental limitation we developed Neural Mesh
Models (NMMs), a new type of neural network architecture which integrates a prototypical mesh representations with a generative model of neural features .
We combine NMMs with contrastive learning and show that this makes possible to estimate the 3D pose with very high robustness to partial occlusion using simple gradient-based render-and-compare. Our experiments demonstrate the superiority of NMMs compared to related work on a range of challenging datasets.
A A PPENDIX
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table] [Table]
[Table]
65.2 w/o subtype 46.
L with subtype 23.
47.1 w/o subtype 26.
[Figure] [Figure]
[Table]