{"id":94,"date":"2022-04-29T23:01:27","date_gmt":"2022-04-29T23:01:27","guid":{"rendered":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/?page_id=94"},"modified":"2022-04-29T23:09:49","modified_gmt":"2022-04-29T23:09:49","slug":"supervised-learning-appraoch","status":"publish","type":"page","link":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/","title":{"rendered":"Supervised learning approach"},"content":{"rendered":"\n<p>As introduced in the home page, we can now represent an image as a quadtree. But how do we learn the quadtree structure with a CNN?&nbsp;<\/p>\n\n\n\n<p>Looking into the literature, a typical approach to generate image from a latent code is to utilize a \u201cdecoder\u201d network. A decoder network consists of a series of transpose convolution, which upsamples the feature gradually to the image dimension. Our idea is that we could map the blocks at each tree level to the output feature map of each transpose convolution. Starting from the first 2&#215;2 feature map produced by transpose convolution, we map it to the second level in the quadtree. The transpose convolution would further upsample the feature map to 4&#215;4, which corresponds to the third tree level.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8\" alt=\"\" \/><\/figure>\n\n\n\n<p>On top of each feature map, we develop two heads with a 1&#215;1 convolution. First is the class head, which predicts whether each node should further split or terminate. During training, we employ cross-entropy loss and supervise it with two classes, where class \u201c0\u201d represents termination and class \u201c1\u201d represents split. Second is the color head, which predicts the color of each node. We use L2 loss to supervise it during training. One thing to note is that we only compute loss for leaf nodes in the ground truth quadtree, while other locations are masked out.<\/p>\n\n\n\n<p>Before passing the feature map to the next stage of each transpose convolution, we mask the feature map with 0 so that only nodes that need further splitting retain their feature value. In practice, we could utilize \u201cSparse Convolution\u201d&nbsp; [2]&nbsp; to incorporate this masking operation and only compute the features that are non-zero throughout the whole network. By applying a series of transpose convolution, we obtain the final quadtree structure. And we could get the generated image by aggregating the color prediction masked by the class prediction at each stage.<\/p>\n\n\n\n<p>In our experiment, we give our network a 8-dimension latent code, which controls the location, rotation, scale, color of a rectangle in a black background image. We ask our network to predict the quadtree structure for representing the rendered image. Results are shown below. There are three main observations:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>During training, the network could represent the image very well. However, the quality starts to deteriorate drastically during testing.<\/li><li>The color prediction is not uniform, even though we think it is an easy task for the network to learn to predict the same color in all color heads.<\/li><li>There are some weird gray artifacts in the final representation.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/7g8hogUlBNBMVNlGpzLLjtxjfpiSu8Ph0d4YE9BjaJfrKz-lseYc7BLVzHi-di2BwzM75tnsLPQyVvipMuwlYhaDTEgE4CMN-_9rR9ZJLcvbVHhAFP7HBl7uRj4OIxyLhPY77zW0\" alt=\"\" width=\"609\" height=\"434\" \/><\/figure>\n\n\n\n<p>Here, we won\u2019t go into the detailed analysis of those failure cases. But the conclusion is that the network has a hard time learning tree structures that it hasn\u2019t seen during test time. This is because we\u2019re only supervising the training with a single ground truth tree structure. So the network couldn\u2019t really learn to explore unknown tree structures on itself. Another problem is more fundamental. As the network makes a decision to split each node or not in each tree level, it doesn\u2019t know whether making the opposite decision is better or not. This makes the gradient-based CNN learning very difficult to learn this sequential decision process. One evidence is that when we visualize the images predicted by our network as we interpolate one dimension of the latent code (down below), the transition is not smooth because we couldn\u2019t really \u201cinterpolate\u201d between different tree structures.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_0_real.gif\" alt=\"\" class=\"wp-image-76\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_1_real.gif\" alt=\"\" class=\"wp-image-78\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_2_real.gif\" alt=\"\" class=\"wp-image-79\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_3_real.gif\" alt=\"\" class=\"wp-image-80\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_4_real.gif\" alt=\"\" class=\"wp-image-81\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_5_real.gif\" alt=\"\" class=\"wp-image-82\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_6_real.gif\" alt=\"\" class=\"wp-image-83\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_7_real.gif\" alt=\"\" class=\"wp-image-84\"><figcaption>Ground truth<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"http:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-content\/uploads\/sites\/48\/2022\/02\/val_iter0400000_quad_0_fake.gif\" alt=\"\" class=\"wp-image-75\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/3ieTFEw3gKOwpE_RBf13V_HwHmLj2M7EgTdvIMtPf1pczWiXnVmRjyKw5vTEeCDTb-P3W9vumrntHrpdlZR-1Fr9VmeoxPzDOrUQcMuvBrLn-0r44GreohoCsL88BhU8bPJC0XIc\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/7QgIoeAZMzJX6O9L3KHfE90SipJdhZGh4GRchJytAG2gmRRg08u4IKFFDfm5Z_fZ181_u98qhY-u70Of-zOJihdRWXKr7jeO1i1KQrcM1Kppw5HSUZ-CN_p8YFgyWIbXU3brNaV9\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/_qucll-CqdE52zfhwbKFDetdWzDRHEKtgNzGlht8hsaXmcs7ygjy8MbROUXeq9tMkXzGHM2yUFwP4jySR7sovyfAGMwcwkYmLwVQfUmMgNTY5wNep2RczZbPBQB8UnJvGCwHD56X\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/FDgikBozxlkHMnvDm9BQh0YTmZa-bpm2y9YePPSAgadtgw5100dNuX3oxP9-0hG1qy6KT4YFfcOQwfKS4TyC_nbfrUkifnqbWhxu9t2mU9boaMuARVBAHAMSWYCRHUTmUfh0-L49\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/mgbPQMGUmxSRvb-eNX4EiTbu-b4p6e5wGG-moT1bpOb26kgFw-gFR_Wm5FODeyOt2rDmKguxrzPNSDKttSyapllXNcKSi5V-AuvSNbny-kwHztzQo9THLjtC4-Qf48A7l4ZwUepZ\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/5H_RvMH9XJAlBMgOFzNDmK6vN0VYRqfVXxhG6KyqtMrC6anbZIlRBpkEb2NAcmxs8P7FEwDw3jFjN7wHkvQPH2N65fihojAig6wC9BoiEevmexR7SopbIPuMsmu0KO9dsmqjIXG-\" alt=\"\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/aXxY3Z1vDvojsRRDW58DR4WNLPP021hTMZx7i-fMK_1I1JmzvdxBbPr0gMioxV_ADNKarT-EjfNbb9mdIbq37yhX_o4-ywk79Wa4aK_8DXvR0jDc8Iai-7HJGcz6PQmN37-E_KxO\" alt=\"\"><figcaption>Network generated result<\/figcaption><\/figure>\n\n\n\n<p>Based on this conclusion, we decide to try out another learning algorithm that is more suitable for a sequential decision process, i.e. Reinforcement Learning (RL).<\/p>\n\n\n\n<p><strong>Reference<\/strong><\/p>\n\n\n\n<p>[2] https:\/\/github.com\/facebookresearch\/SparseConvNet<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As introduced in the home page, we can now represent an image as a quadtree. But how do we learn the quadtree structure with a CNN?&nbsp; Looking into the literature, a typical approach to generate image from a latent code is to utilize a \u201cdecoder\u201d network. A decoder network consists of a series of transpose&hellip; <a class=\"more-link\" href=\"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/\">Continue reading <span class=\"screen-reader-text\">Supervised learning approach<\/span><\/a><\/p>\n","protected":false},"author":102,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-94","page","type-page","status-publish","hentry","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling\" \/>\n<meta property=\"og:description\" content=\"As introduced in the home page, we can now represent an image as a quadtree. But how do we learn the quadtree structure with a CNN?&nbsp; Looking into the literature, a typical approach to generate image from a latent code is to utilize a \u201cdecoder\u201d network. A decoder network consists of a series of transpose&hellip; Continue reading Supervised learning approach\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/\" \/>\n<meta property=\"og:site_name\" content=\"Dynamic Octrees for Efficient Volumetric Modeling\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-29T23:09:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/\",\"url\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/\",\"name\":\"Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh5.googleusercontent.com\\\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8\",\"datePublished\":\"2022-04-29T23:01:27+00:00\",\"dateModified\":\"2022-04-29T23:09:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lh5.googleusercontent.com\\\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8\",\"contentUrl\":\"https:\\\/\\\/lh5.googleusercontent.com\\\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/supervised-learning-appraoch\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Supervised learning approach\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/#website\",\"url\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/\",\"name\":\"Dynamic Octrees for Efficient Volumetric Modeling\",\"description\":\"CMU MSCV Capstone Project Sponsored by Facebook Reality Lab\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mscvprojects.ri.cmu.edu\\\/2021teamc\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/","og_locale":"en_US","og_type":"article","og_title":"Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling","og_description":"As introduced in the home page, we can now represent an image as a quadtree. But how do we learn the quadtree structure with a CNN?&nbsp; Looking into the literature, a typical approach to generate image from a latent code is to utilize a \u201cdecoder\u201d network. A decoder network consists of a series of transpose&hellip; Continue reading Supervised learning approach","og_url":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/","og_site_name":"Dynamic Octrees for Efficient Volumetric Modeling","article_modified_time":"2022-04-29T23:09:49+00:00","og_image":[{"url":"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/","url":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/","name":"Supervised learning approach - Dynamic Octrees for Efficient Volumetric Modeling","isPartOf":{"@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/#primaryimage"},"image":{"@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/#primaryimage"},"thumbnailUrl":"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8","datePublished":"2022-04-29T23:01:27+00:00","dateModified":"2022-04-29T23:09:49+00:00","breadcrumb":{"@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/#primaryimage","url":"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8","contentUrl":"https:\/\/lh5.googleusercontent.com\/9vIVQX8DlCaQ7OTJ59oMqHjqbYPbvihO8-cX7Tnbrpj9QLHSJ6nVQWgYr6Sl-7vwD8qHZgOYsd9d65cFuCafgntbk6AhDyu0-sZnFhSRtNbko7YD46DSkD_oDv7mLnO8Bj1EMHs8"},{"@type":"BreadcrumbList","@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/supervised-learning-appraoch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/"},{"@type":"ListItem","position":2,"name":"Supervised learning approach"}]},{"@type":"WebSite","@id":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/#website","url":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/","name":"Dynamic Octrees for Efficient Volumetric Modeling","description":"CMU MSCV Capstone Project Sponsored by Facebook Reality Lab","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/pages\/94","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/comments?post=94"}],"version-history":[{"count":4,"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/pages\/94\/revisions"}],"predecessor-version":[{"id":108,"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/pages\/94\/revisions\/108"}],"wp:attachment":[{"href":"https:\/\/mscvprojects.ri.cmu.edu\/2021teamc\/wp-json\/wp\/v2\/media?parent=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}