Steven’s Status Report for Mar 15th

What did you personally accomplish this week on the project?

Worked on the gesture control algorithm. I implemented a left/right swipe recognition input based on keypoint velocity, but due to OpenPose being fairly slow an the actual keypoints being tracked being fairly noisy, the accuracy isn’t that good. Potential solutions include switching from a velocity-based algorithm to something more positional, such as detecting whether the hand is to the right or left of shoulder, or writing a filter for more stable keypoints –> more stable velocities. Regarding eye-tracking, I managed to extract eye keypoints in screen-space coordinates. Since the camera rig isn’t finished, and the webcam I currently have is fixed, I simply wrote a function to output the signed distance between the average y-position of the eyes and a certain height (in (-1,1) viewport coordinates). This will be input to a feedback algorithm to adjust our camera rig.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I’m supposed to be doing gesture recognition algorithm testing right now (re: schedule), but currently I’ve been strapped for time and not doing that. More refinement needs to be done to the algorithm to make it robust enough for our application. To catch up, I will allocate more time in my schedule for this project.

What deliverables do you hope to complete in the next week?

I do plan to refine the algorithm to be more robust against inaccurate readings from OpenPose, as well as doing some performance fine tuning so that keypoint collection happens faster and the algorithm could be more accurate. The inputs it detects are also pretty limited, will have to discuss more about which gestures we want however. I also don’t have the Jetson currently, and I know I’ve been putting this off literally every week since the second week, but I have yet to build OpenPose on the Jetson.

Shengxi’s Status Report for March 15th

What did you personally accomplish this week on the project?
This week, I worked on integrating OpenGL rendering on the Jetson Orin Nano. A significant portion of my time was spent on solving environment setup issues, including driver compatibility, OpenGL extensions, and ensuring shader compilation worked correctly on the platform. I also began implementing real-time texture blending using OpenGL shaders but is still trying to debug this part right now. Additionally, I continued searching and experimenting with different ways to handle AR overlay rendering efficiently (on my Mac).

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?
I am slightly behind schedule due to the unexpected challenges with OpenGL setup on Jetson Orin Nano. Debugging and configuring the environment took longer than expected. However, I think once I have this out of the way, I will be able to catch up next week by focusing on implementing and optimizing shader performance and refining the rendering pipeline (this may also carry over to next next week) but that’s almost the end of what my work distribution.

What deliverables do you hope to complete in the next week?
Next week, I plan to finalize the OpenGL rendering pipeline by optimizing shader execution and ensuring smooth integration with motion tracking. I will also work on improving texture blending techniques to enhance AR overlay realism. Additionally, I aim to implement an efficient resource management strategy to handle real-time rendering on the Jetson without excessive latency.

Shengxi’s Status Report for March 8th

What did you personally accomplish this week on the project?
This week, I worked on integrating my reconstruction pipeline into Jetson and framed the most efficient approach for the rendering pipeline. I also focused on motion tracking to ensure that the rendering stays aligned with the user’s face with minimal drift. Specifically, I refined the alignment of 3D facial landmarks with the face model and calibrated the coordinate transformations using OpenCV and AprilTag. Additionally, I implemented real-time head motion tracking using PnP to estimate both rigid and non-rigid transformations, ensuring that AR filters remain correctly positioned.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?
My progress is on schedule. The foundation for rendering and motion tracking is in place, and next week, I will move on to implementing the OpenGL rendering.

What deliverables do you hope to complete in the next week?
Next week, I plan to complete the OpenGL-based rendering pipeline. This includes implementing real-time texture blending using OpenGL shaders to seamlessly overlay AR effects onto the user’s face. Additionally, I will refine motion tracking by further improving the hybrid approach for rigid and non-rigid motion estimation, ensuring robustness against rapid movements and partial occlusions.

Team’s Status Report for March8

What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?

One of the most significant risks is environment compatibility, since currently each of us is coding independently, so some members have to work from the Mac ecosystem, so running our software on the Jetson may present unforeseen challenges, such as driver conflicts or performance limitations.
Mitigation: We will pass the access of Jetson one by one in our team to ensure smooth integration before full-system testing.

Another minor risk is performance bottlenecks, 3D face modeling, and gesture recognition involve computationally expensive tasks, which may slow real-time performance.
Mitigation: We are each trying different tricks to optimize computation like using SIMD, and also evaluating accuracy trade-offs between accuracy and efficiency to ensure the best performance within required frame rate bounds.

One risk that was faced was uploading the Arduino code onto the Arduino. We had anticipated that we would just need to buy the materials as instructed so that we can be ready to code and upload it to the Arduino. However, we found out that there’s no way to upload the code to an Arduino Pro Mini, so with our leftover budget, we bought 2 USB to serial adapters for around $9 so that we can upload the code.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

The overall block diagram remains unchanged, and few details within the software implementation of the pipeline are tested (e.g. what exact opencv technique we use in each module).

However, we will have to meet next week on going through our requirements again to make sure that the previously described performance bottlenecks are be mitigated within our test requirement, or to loosen the requirements a little to ensure a smooth user experience with the computing power we have.

Updates & Schedule change

So far we are good with the schedule, some changes have been made, and the UI development has been pulled in the front since the hardware parts have not arrived yet. In terms of progress, we are positive and will be able to reach our system integration deadline in time. We will also ensure weekly synchronization between modules to prevent any latency in final integration.

A was written by Shengxi Wu, B was written by Anna Paek, and C was written by Steven Lee.

A) The product we design provides an efficient system that allows seamless operation across various global use cases inside and outside Pittsburgh. Since our system involves modular design, so it should be able to be deployed in different regions, once the camera rig is up and ready, it is easily reproducible for anyone with some basic knowledge using our software system. Not only is this product interesting work for academia, it also adheres to industry standards for many requirements like robustness and security since we does not involve the use of clouds but having all storage local by default. This system we designed thus has the potential to improve AR mirror application as well as AR filter application using part of our software system for emerging markets, making it a globally viable solution.

B) Our AR mirror meets the specific needs of people from different cultural backgrounds. It will consider and respect different religious values reflected in the style of the makeup. For example, Muslim women prefer natural makeup over bold makeup styles, so the AR mirror will have a settings for softer makeup looks. There are also different beauty standards for each country. For example, Korea prefers lighter makeup to achieve that natural beauty look while other cultures may prefer bolder makeup. As for eyeglasses, the mirror will account for the fact that eyeglasses are used differently. They can be used to make one look more intelligent or just for fashion. Depending on the purpose, the mirror will provide a collection of eyeglasses suited for that purpose. Some regions ban certain cosmetic ingredients, so the AR mirror will account for that when generating filters. The mirror will also have privacy protection for the user’s face and ID to be protected.

C) One environmental aspect that our product aims to meet is affordability/reusability. Many traditional AR mirrors have proprietary, expensive parts such as transparent displays, which are hard to repair (hence producing more waste). Our AR display aims to be achievable with commonly found parts such as off-the-shelf computer monitors and webcams, so that it’s easier to repurpose used technology into this product.

Moreover, our project aims to be low-power, through the use of a low-power constrained device, the Jetson Nano, to power the software for the AR mirror. Also, the use of affordable cameras and basic depth sensors rather than costly LIDAR or 3D cameras helps to meet that low-power goal.

Anna’s Status Report for March8

 

  • What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).  

I am working on the setup for the UI, more specifically, generating build files and building (step 5- last step: https://github.com/kevidgel/usar-mirror). So far, I was able to do all the other previous steps (steps 1-4) and verified that openpose (https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation/0_index.md#compiling-and-running-openpose-from-source) is running successfully as shown in the image below. 

Right now, I am having trouble identifying the CMakeList.txt file which involves installing Cuda. I have confirmed with Steven that we will not be using Cuda, so I will ask Steven how to build without using Cuda since it won’t let me build without using Cuda even after silencing the flags. 

  • Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I am slightly behind in that I still need to solder my PCB with the parts that I just got on the day before Spring break and am still waiting on my USB to Serial adapter to upload my code to the Arduino. I am also a little behind in terms of setting up the UI as I anticipate working on the UI after assembling the camera rig. At the same time, I will write and test the Arduino code. 

  • What deliverables do you hope to complete in the next week?

I hope to at least build my camera rig and to finish setting up my environment so that I can get started working on the UI. Then, I will plan on writing and testing my Arduino code and integrating it with the gesture recognition. 

Steven’s Status Report for March 8

What did you personally accomplish this week on the project?

I worked on integrating the C++ api for OpenPose in our application, and did some fine tuning for performance and accuracy. Keypoints are now available to use in our application for eye tracking and gesture control. I also did some research for gesture recognition algorithms. I think a good starting point is having the purely based on the velocity of the keypoint (ex. Left hand moves quickly to the right).

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

Roughly on schedule. I think with the OpenPose now integrated into the application, developing gesture control should be simple.

What deliverables do you hope to complete in the next week?

Complete gesture control algorithm. Also, I have yet to compile the project on the Jetson.