{"id":2414,"date":"2015-12-20T09:06:00","date_gmt":"2015-12-20T09:06:00","guid":{"rendered":"https:\/\/mapir.isa.uma.es\/mapirwebsite_wordpress\/?p=2414"},"modified":"2021-12-20T09:13:14","modified_gmt":"2021-12-20T09:13:14","slug":"the-upgmpp-library","status":"publish","type":"post","link":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/?p=2414","title":{"rendered":"The UPGMpp library"},"content":{"rendered":"\n<p>The\u00a0<a href=\"https:\/\/github.com\/jotaraul\/upgmpp\"><strong>Undirected Probabilistic Graphical Models in C++ (UPGMpp)<\/strong><\/a>\u00a0is an open-source library for the building, training and managing of probabilistic graphical models.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/github.com\/jotaraul\/upgmpp\"><img loading=\"lazy\" width=\"1024\" height=\"352\" src=\"https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2-1024x352.png\" alt=\"\" class=\"wp-image-2415\" srcset=\"https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2-1024x352.png 1024w, https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2-300x103.png 300w, https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2-768x264.png 768w, https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2-1536x528.png 1536w, https:\/\/mapir.isa.uma.es\/mapirwebsite\/wp-content\/uploads\/2021\/12\/logo_UPGMpp2.png 1881w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>If you use this software, please cite it through:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" style=\"font-size:10px\"> @INPROCEEDINGS{Ruiz-Sarmiento-REACTS-2015,\n           author = {Ruiz-Sarmiento, J. R. and Galindo, Cipriano and Gonz{\\'{a}}lez-Jim{\\'{e}}nez, Javier},\n            title = {UPGMpp: a Software Library for Contextual Object Recognition},\n        booktitle = {3rd. Workshop on Recognition and Action for Scene Understanding (REACTS)},\n             year = {2015}\n      }<\/pre>\n\n\n\n<p>For getting the library and further information please check&nbsp;<a href=\"https:\/\/github.com\/jotaraul\/upgmpp\" target=\"_blank\" rel=\"noreferrer noopener\">the project webpage at GitHub<\/a>.&nbsp;<strong>New!<\/strong>A wrapper for its utilizantion within the ROS environment is now available&nbsp;<a href=\"https:\/\/github.com\/MAPIRlab\/upgmpp_wrapper\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>. The main features of UPGMpp are:<\/p>\n\n\n\n<ul><li>It works with&nbsp;<strong>discrete random variables<\/strong>.<\/li><li>Handles&nbsp;<strong>first order<\/strong>&nbsp;(local or unary) and&nbsp;<strong>second order<\/strong>&nbsp;(pairwise)&nbsp;<strong>relations<\/strong>.<\/li><li><strong>Nodes<\/strong>&nbsp;(random variables)&nbsp;<strong>of different types<\/strong>&nbsp;can appear in the same PGM.<\/li><li>If the value of a random variable is known, such an&nbsp;<strong>evidence<\/strong>&nbsp;can be considered.<\/li><li>It supports PGMs with an arbitrary structure (including graphs with loops).<\/li><li><strong>Log-linear potentials<\/strong>&nbsp;are considered, but the user can set a different way to model potentials.<\/li><\/ul>\n\n\n\n<p>Implementation details:<\/p>\n\n\n\n<ul><li>Fully implemented in&nbsp;<strong>C++<\/strong>.<\/li><li>It resorts to&nbsp;<a href=\"http:\/\/eigen.tuxfamily.org\/index.php?title=Main_Page\" target=\"_blank\" rel=\"noreferrer noopener\">Eigen<\/a>&nbsp;for&nbsp;<strong>efficient operations with matrices<\/strong>, and to&nbsp;<a href=\"http:\/\/www.boost.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Boost<\/a>&nbsp;for&nbsp;<strong>memory management<\/strong>&nbsp;and&nbsp;<strong>serialization<\/strong>&nbsp;purposes.<\/li><li><strong>Easy inference methods addition<\/strong>&nbsp;through clear interfaces.<\/li><li>Currently available&nbsp;<strong>inference methods<\/strong>:<ul><li>MAP:<ul><li>Iterated Conditional Modes<\/li><li>Greedy Iterated Conditional Modes<\/li><li>Exact Inference<\/li><li>Loopy Belief Propagation<\/li><li>Tree Reparametrization Belief Propagation<\/li><li>Residual Belief Propagation<\/li><li>Graph Cuts<\/li><li>Alpha-expansions Graph Cuts<\/li><li>Alpha-beta Swaps Graph Cuts<\/li><\/ul><\/li><li>Marginals:<ul><li>Loopy Belief Propagation<\/li><li>Tree Reparametrization Belief Propagation<\/li><li>Residual Belief Propagation<\/li><\/ul><\/li><\/ul><\/li><li><strong>Training<\/strong>&nbsp;can be performed through:<ul><li>Objective functions:<ul><li>Pseudo-likelihood<\/li><li>Score-matching<\/li><li>Piecewise<\/li><li>Marginal-based approximation<\/li><li>MAP-based approximation<\/li><\/ul><\/li><li>Optimization methods:<ul><li>Stochastic Gradient Descent (SGD)<\/li><li><a href=\"http:\/\/www.chokkan.org\/software\/liblbfgs\/\" target=\"_blank\" rel=\"noreferrer noopener\">libLBFGS library<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The\u00a0Undirected Probabilistic Graphical Models in C++ (UPGMpp)\u00a0is an open-source library for the building, training and managing of probabilistic graphical models.<\/p>\n","protected":false},"author":8,"featured_media":2417,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/posts\/2414"}],"collection":[{"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2414"}],"version-history":[{"count":1,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/posts\/2414\/revisions"}],"predecessor-version":[{"id":2416,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/posts\/2414\/revisions\/2416"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=\/wp\/v2\/media\/2417"}],"wp:attachment":[{"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mapir.isa.uma.es\/mapirwebsite\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}