{"id":130,"date":"2024-10-05T03:41:55","date_gmt":"2024-10-05T03:41:55","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/?p=130"},"modified":"2024-10-05T03:41:55","modified_gmt":"2024-10-05T03:41:55","slug":"jessies-status-report-for-10-05","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/2024\/10\/05\/jessies-status-report-for-10-05\/","title":{"rendered":"Jessie&#8217;s Status Report for 10\/05"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This week\u2019s tasks:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I finalized shopping for parts for the camera stand given we now had a better idea of the measurements. These parts arrived and they seem to meet our requirements. We just need to find a way to connect the gooseneck and the tripod before our meeting with Prof Dueck\u2019s students on 10\/9.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">I looked into how to run the kinematic calculations on the FPGA. I again referenced Peter Quinn\u2019s code: <\/span><a href=\"https:\/\/github.com\/PeterQuinn396\/KV260-Pose-Commands\/blob\/main\/app_kv260.py\"><span style=\"font-weight: 400\">https:\/\/github.com\/PeterQuinn396\/KV260-Pose-Commands\/blob\/main\/app_kv260.py<\/span><\/a><span style=\"font-weight: 400\"> and saw that he simply used python. I looked into some other options and saw that the easiest way would be to use the python Vitis AI API, but there also exists a C++ API that may allow us to have higher performance and the hardest option would be to work directly with the FPGA\u2019s output bitstream. For now, we can plan to use python and later change to C++ if we are facing performance issues. A stretch goal could be to work directly with the bit stream.\u00a0<\/span>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A concern that came up while I was looking into these options is the rate that the FPGA would be able to run the pose detection model. Peter Quinn was able to achieve 3 FPS, I\u2019m not sure how much better we can do and what is the requirement to fit out needs. We can investigate this at a later time and if it becomes an issue here are some ideas to try and improve performance: attempt to simplify the model (lower resolution, less landmarks, smaller image samples, etc.), go down the stack for the kinematic implementation (python to C++ and then to working with the bit stream).\u00a0<\/span><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">We received the power supply and were able to finish the Zynq UltraScale+ tutorial: <\/span><a href=\"https:\/\/xilinx.github.io\/Vitis-AI\/3.0\/html\/docs\/quickstart\/mpsoc.html\"><span style=\"font-weight: 400\">https:\/\/xilinx.github.io\/Vitis-AI\/3.0\/html\/docs\/quickstart\/mpsoc.html<\/span><\/a>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Danny did the first half of the tutorial (set up the target and download the necessary software) and I did the second part of the tutorial (PyTorch Tutorial). I followed their walkthrough of the Vitis AI workflow with the example models and have a general idea what what configuration and scripts we need to write\/modify from their examples. I was able to successfully follow the tutorial and compile a classification model on the FPGA. It was able to classify input from our webcam.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In reference to my previously mentioned concern regarding framerate, the example model is able to achieve a frame rate of around 14 or 15 fps when there is some movement in the video and around 24 or 25 fps when the video is still. I think the pose detection model will be more complex and be slower than this example model.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<figure id=\"attachment_132\" aria-describedby=\"caption-attachment-132\" style=\"width: 4032px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-132 size-full\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5278.jpg\" alt=\"\" width=\"4032\" height=\"3024\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5278.jpg 4032w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5278-300x225.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5278-768x576.jpg 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5278-1024x768.jpg 1024w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption id=\"caption-attachment-132\" class=\"wp-caption-text\">example model on FPGA categorizes my seal plushie as a piggy bank with low confidence at ~15fps<\/figcaption><\/figure>\n<figure id=\"attachment_133\" aria-describedby=\"caption-attachment-133\" style=\"width: 4032px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-133 size-full\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5279.jpg\" alt=\"\" width=\"4032\" height=\"3024\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5279.jpg 4032w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5279-300x225.jpg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5279-768x576.jpg 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-content\/uploads\/sites\/331\/2024\/10\/IMG_5279-1024x768.jpg 1024w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption id=\"caption-attachment-133\" class=\"wp-caption-text\">example model on FPGA categorizes my mug correctly with high confidence at 24fps<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">Schedule:<\/span><\/p>\n<p><span style=\"font-weight: 400\">I\u2019m still on schedule. Next week I plan to work with Shaye to start the early steps of the CV and FPGA integration.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Next week\u2019s deliverables:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A rough draft version of the Python kinematics code using the Vitis AI API.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Work with Shaye to decide how we will obtain samples for the quantization step of the Vitis AI workflow.\u00a0<\/span><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week\u2019s tasks: I finalized shopping for parts for the camera stand given we now had a better idea of the measurements. These parts arrived and they seem to meet our requirements. We just need to find a way to connect the gooseneck and the tripod before our meeting with Prof Dueck\u2019s students on 10\/9. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/2024\/10\/05\/jessies-status-report-for-10-05\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Jessie&#8217;s Status Report for 10\/05&#8221;<\/span><\/a><\/p>\n","protected":false},"author":936,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[5,9],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/posts\/130"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/users\/936"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/comments?post=130"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":134,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/posts\/130\/revisions\/134"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/media?parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/categories?post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f24-teamc4\/wp-json\/wp\/v2\/tags?post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}