{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/spherical-regression-learning-viewpoints","title":"Spherical Regression: Learning Viewpoints, Surface Normals and 3D Rotations on n-Spheres","arxiv_id":"1904.05404","date":"2019-04-10","proceeding":"CVPR 2019 6","authors":["Shuai Liao","Efstratios Gavves","Cees G. M. Snoek"],"abstract":"Many computer vision challenges require continuous outputs, but tend to be\nsolved by discrete classification. The reason is classification's natural\ncontainment within a probability $n$-simplex, as defined by the popular softmax\nactivation function. Regular regression lacks such a closed geometry, leading\nto unstable training and convergence to suboptimal local minima. Starting from\nthis insight we revisit regression in convolutional neural networks. We observe\nmany continuous output problems in computer vision are naturally contained in\nclosed geometrical manifolds, like the Euler angles in viewpoint estimation or\nthe normals in surface normal estimation. A natural framework for posing such\ncontinuous output problems are $n$-spheres, which are naturally closed\ngeometric manifolds defined in the $\\mathbb{R}^{(n+1)}$ space. By introducing a\nspherical exponential mapping on $n$-spheres at the regression output, we\nobtain well-behaved gradients, leading to stable training. We show how our\nspherical regression can be utilized for several computer vision challenges,\nspecifically viewpoint estimation, surface normal estimation and 3D rotation\nestimation. For all these problems our experiments demonstrate the benefit of\nspherical regression. All paper resources are available at\nhttps://github.com/leoshine/Spherical_Regression.","url_abs":"http://arxiv.org/abs/1904.05404v1","url_pdf":"http://arxiv.org/pdf/1904.05404v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"spherical-regression-learning-viewpoints","repo_url":"https://github.com/leoshine/Spherical_Regression","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"spherical-regression-learning-viewpoints","repo_url":"https://github.com/QUVA-Lab/Spherical_Regression","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"3d-rotation-estimation","task_name":"3D Rotation Estimation"},{"task_slug":"surface-normal-estimation","task_name":"Surface Normal Estimation"},{"task_slug":"surface-normals-estimation","task_name":"Surface Normals Estimation"},{"task_slug":"viewpoint-estimation","task_name":"Viewpoint Estimation"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1904.05404","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1904.05404"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/leoshine/Spherical_Regression","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/QUVA-Lab/Spherical_Regression","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_violates":2,"ran_draft_wrong":1},"by_repo_kind":{"official":{"samples":3,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"cedaad168aff73bf","entry":"pred2angle","repo":"leoshine/Spherical_Regression","repo_kind":"official","path":"S3.3D_Rotation/lib/datasets/dataset_regQuatNet.py","file_url":"https://github.com/leoshine/Spherical_Regression/blob/HEAD/S3.3D_Rotation/lib/datasets/dataset_regQuatNet.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"cedaad168aff73bf"}},{"code_sha256_prefix":"e2d3cfd33f1ae44e","entry":"pred2angle_shift45","repo":"leoshine/Spherical_Regression","repo_kind":"official","path":"S3.3D_Rotation/lib/datasets/dataset_regQuatNet.py","file_url":"https://github.com/leoshine/Spherical_Regression/blob/HEAD/S3.3D_Rotation/lib/datasets/dataset_regQuatNet.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"e2d3cfd33f1ae44e"}},{"code_sha256_prefix":"7d289135d66d3dcf","entry":"sample_keys","repo":"leoshine/Spherical_Regression","repo_kind":"official","path":"S2.Surface_Normal/lib/datasets/dataengine_v2.py","file_url":"https://github.com/leoshine/Spherical_Regression/blob/HEAD/S2.Surface_Normal/lib/datasets/dataengine_v2.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7d289135d66d3dcf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}