{"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/computing-cnn-loss-and-gradients-for-pose","title":"Computing CNN Loss and Gradients for Pose Estimation with Riemannian Geometry","arxiv_id":"1805.01026","date":"2018-05-02","proceeding":null,"authors":["Benjamin Hou","Nina Miolane","Bishesh Khanal","Matthew C. H. Lee","Amir Alansary","Steven McDonagh","Jo V. Hajnal","Daniel Rueckert","Ben Glocker","Bernhard Kainz"],"abstract":"Pose estimation, i.e. predicting a 3D rigid transformation with respect to a\nfixed co-ordinate frame in, SE(3), is an omnipresent problem in medical image\nanalysis with applications such as: image rigid registration, anatomical\nstandard plane detection, tracking and device/camera pose estimation. Deep\nlearning methods often parameterise a pose with a representation that separates\nrotation and translation. As commonly available frameworks do not provide means\nto calculate loss on a manifold, regression is usually performed using the\nL2-norm independently on the rotation's and the translation's\nparameterisations, which is a metric for linear spaces that does not take into\naccount the Lie group structure of SE(3). In this paper, we propose a general\nRiemannian formulation of the pose estimation problem. We propose to train the\nCNN directly on SE(3) equipped with a left-invariant Riemannian metric,\ncoupling the prediction of the translation and rotation defining the pose. At\neach training step, the ground truth and predicted pose are elements of the\nmanifold, where the loss is calculated as the Riemannian geodesic distance. We\nthen compute the optimisation direction by back-propagating the gradient with\nrespect to the predicted pose on the tangent space of the manifold SE(3) and\nupdate the network weights. We thoroughly evaluate the effectiveness of our\nloss function by comparing its performance with popular and most commonly used\nexisting methods, on tasks such as image-based localisation and intensity-based\n2D/3D registration. We also show that hyper-parameters, used in our loss\nfunction to weight the contribution between rotations and translations, can be\nintrinsically calculated from the dataset to achieve greater performance\nmargins.","url_abs":"http://arxiv.org/abs/1805.01026v3","url_pdf":"http://arxiv.org/pdf/1805.01026v3.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":"computing-cnn-loss-and-gradients-for-pose","repo_url":"https://github.com/farrell236/SVRnet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"camera-pose-estimation","task_name":"Camera Pose Estimation"},{"task_slug":"medical-image-analysis","task_name":"Medical Image Analysis"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"translation","task_name":"Translation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1805.01026","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1805.01026"}},"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/farrell236/SVRnet","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":4},"by_repo_kind":{"listed":{"samples":4,"ran":0,"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":0,"samples":[{"code_sha256_prefix":"c4d863da7c45742c","entry":"matrix_from_anchor_points","repo":"farrell236/SVRnet","repo_kind":"listed","path":"evaluate_ifind.py","file_url":"https://github.com/farrell236/SVRnet/blob/HEAD/evaluate_ifind.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c4d863da7c45742c"}},{"code_sha256_prefix":"f7f6bfdeee237f86","entry":"reflection_matrix","repo":"farrell236/SVRnet","repo_kind":"listed","path":"generate_data/transformations.py","file_url":"https://github.com/farrell236/SVRnet/blob/HEAD/generate_data/transformations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f7f6bfdeee237f86"}},{"code_sha256_prefix":"77cb383b0cd2a54e","entry":"translation_from_matrix","repo":"farrell236/SVRnet","repo_kind":"listed","path":"generate_data/transformations.py","file_url":"https://github.com/farrell236/SVRnet/blob/HEAD/generate_data/transformations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"77cb383b0cd2a54e"}},{"code_sha256_prefix":"edeb1406911ce025","entry":"translation_matrix","repo":"farrell236/SVRnet","repo_kind":"listed","path":"generate_data/transformations.py","file_url":"https://github.com/farrell236/SVRnet/blob/HEAD/generate_data/transformations.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"edeb1406911ce025"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}