Final Self Assessments - achyut3598/SmartHackSmasher GitHub Wiki

Final Self Assessments

Achyut Anand

SmartHackSmasher is a research project and such there were a lot of unexpected challenges throughout the year that we had to overcome. I played a hybrid Product Manager and Software Developer role on our team. I organized the weekly meetings that we had where we discussed our progress, roadblocks, and possible solutions to those roadblocks and at the same time, I worked on the research and development aspects of the project as well. I identified my experience with machine learning models, coding, and problem-solving as some of my key skills in the initial self-assessment and I feel like I was able to use those skills aptly on this project.

Initially, with other members of my team, I came up with two sets of plans - a short term plan which involved researching other autonomous vehicle’s security solutions and how to proceed with our own modularized security solution SmartHackSmasher, and a long term plan which was basically a roadmap of what we are going to achieve at the end of Senior Design. After a lot of trial and error, we were able to come up with an approach that seemed sturdy and could improve existing solutions. We decided to have multiple machine learning models for each of our 3 modules - road sign, object detection, and GPS. I created and tested out multiple machine learning models, but the final project includes two of them, the semi-supervised model for the road sign module using Convoluted Neural Networks (CNN) and the supervised model for GPS using random forest. One of the obstacles that I personally faced was figuring out the best machine learning model to solve a particular problem given the constraints imposed by open-source datasets available. However, over the course of a few days, I learned how to experiment with different machine learning models and figured out which one fit our needs the best. In addition to the machine learning models, I created mostly the front-end part of one of our visual demonstrations using Python and Javascript-based web development framework Eel. It was a unique experience working with Eel as I learned a new development framework that can come in handy in the future.

Our group accomplished its goals which were to showcase how a modularized security model could work in a self-driving car. We successfully built a tool that can detect abnormalities with very high accuracy. I have known my teammates for years now and working with them has always been a great experience. Our communication was top-notch. We communicated through texts and teams, and we held weekly progress meetings where we discussed how to move forward and solve any existing problems. In addition, we had bi-weekly progress meetings with our Senior Design advisor which also went really well. There were a few times when we tried to explore a technology that could have made our project better, but we weren’t successful either due to the unavailability or unaffordability of such product. This compounded our time constraint problem and this is something that we will learn from in the future.

The three of us contributed equally to the project. Each of us had 2 machine learning models in the final submission. Similarly, with the final demonstrations of our project, each of us worked on about 1/3rd of what was required. Throughout the entire year, we collaborated well to turn in our class assignments on time while also, staying on course to finish the project before the senior design expo. We will soon be done with a research paper as well and even on the research paper, the three of us have divided the work equally. The paper will be up on ACM’s open access. Both Matt and Zach deserve special praise and shoutouts for being excellent teammates. Both of them brought unique technical qualities to the team with outstanding work ethic and sense of responsibility.

Mathew Lucy

My specific role in SmartHackSmasher was creating a model for the Object Detection Module, a model for the Road Sign Recognition Module, and combining the modules on the backend of the finalized demo product. Thorughout this project I was able to perform research and development in the area of machine learning, something I had only studied theoretically. Via that process I have not only gained understanding of paradigms and practices in that sphere but I have also gained mastery of new tools such as Keras, Tensorflow, and Pickle, all of which are python modules. Through creating the backend I also learned how to make models more lightweight for loading and performance, as our test case required accuracy and speed in order toi emulate the real world conditions of a self driving car. SmartHackSmasher was also a unique project in the sense that it was the first multi-semester long project I had done ever. This presented a couple of unique factors including a much larger scope as well as the ability to iterate and improve upon work rather than just finishing within a smaller time frame. This time frame and scope provided the only major obstacle for our project, that we could not obtain or create a self-driving car. This limited our choice of modules and the datasets that we could use to those that were readily available on the internet as open source.

A final skill I developed, and have continued to develop throughout my career at the University of Cincinnati, is that of teamwork. The skills I listed above were all individual skills but could have been learned in any machine learning based project of this length, the truly unique part of senior design is teaming up to create a project you could not create on your own. I obtained a better understanding of division of labor, delegation, and the constant work and updating that comes with a group based project of this scope. Our constant meetings every week as well as progress updates and code management have allowed me to develop skills that I can bring into the workforce as part of my own project post-graduation. Overall, I do feel that I accomplished all of the goals I set out to at the beginning of this projects, including its completion and developing unique skills that will aid me wherever I go.

My team was excellent, and I have no complaints with their performance, amount of work, or work ethic. My team members were very flexible in terms of the constraints of the project, with this being a research project, but we also were very good at the same time with creating a plan with dates and actions. Our meetings were spent effectively and all members were professional both with our advisor and individually. Communication was something that was effective both through our teams chat and the text group that we used. I feel that all group members contributed an equal amount of work throughout the project, splitting the models evenly and the backend, frontend, and demo unity model in an even way.

I believe our team worked very successfully due to our great communication and respect for eachother and the time we were putting into the project. The only major hiccup was the effective use of our time in the earlier stages of the project. I believe we were a tiny bit slow to startup our develop and may have spent a little bit too much time researching viable methods before choosing one and going with it. This caused an issue when we discovered new information and methods that could only be found via experimentation and development. This was no one’s fault individually, but in the future I would go with a coupled research and development strategy at the very beginning of the project rather than separating the two out. Finally, I would like to highlight Achyut for his initiative in planning the group meetings and handling communication with our advisor, as it was something that was very helpful for all of our peace of mind.

Zach Hammitt

On an Individual level, working on SmartHackSmasher was much more of a challenge than expected. There was much more confidence in the initial parts of the project as described last semester but when this semester it came time to hammer out some of these AI models, I really struggled. That pain was all for naught however. I did end up getting the work I needed to done, painful as it may be and through that, I have vastly improved some of development related skills compared to where they were. Specifically, time management and working with AI. Working with AI is well rather self explanatory. That was what the majority of the time was spent on this last semester and sure gave a lot of chances to make mistakes and learn from those mistakes. I bring up time management as a much improved skill from this project since the timelines were honestly not the most accurate. Stuff dragged and came in late and with problems and that was not expected looking back. I would think if I were to do another one of these, goals and timelines would be set much better.

For my individual contribution to SmartHackSmasher on the tangible side of things, I developed 2 supervised AI algorithms as well as made the Unity Demo for the presentation. Not that those AI algorithms were completely done without a glance from the team but they certainly took the majority of the time of what went into the actual release. I would very much say they helped out in the final AI Algorithm voting system we created as they are competitively accurate with the rest of the teams. The Unity part of the final demo was done largely by myself as I was the team member with the most Unity Experience. This was used to demonstrate what a real world implementation of our software would do in a car. It did not actually use SmartHackSmasher as unfortunately we didn’t have enough time to rewrite our algorithms in C# which would have been needed to do this. Besides the tangible efforts, there was of course much research conducted as well as a failed GPS module done by myself.

As far as the team goes, I would say we accomplished almost everything we set out to do from the start. We developed a final version of SmartHackSmasher. This version, which can be seen in our demonstration, can take various inputs of stop sign data, gps data, and pictures of cars on the road and process them with the voting system as originally intended. Our algorithms were able to work together perfectly. The qualifier almost however was used earlier as there were a few shortcomings eluded to earlier. First of all is the lack of an additional GPS module. That is largely on myself as the one I designed was pretty much useless. The second short coming I would say is not actually implementing SmartHackSmasher in a simulated car as in reality, we only did it in what essentially amounts to a terminal with a pretty GUI on top. This I attribuited to time constraints and lack of planning. We did not know what simulation software we wanted to use until pretty late in the project. We come to find out that the only non prohibitively expensive one was Unity which requires that code be made in C# while all of our work was in python. Since this was about the last thing we as a team were going to do, we did not have time to rewrite all of our models made so far so instead just went with the visual explanation Unity demo designed by myself.

When it comes to the amount of effort put in, I would say all team members put in at least a fair amount of work. We all worked on and delivered our Algorithms. For the demo and final version of SmartHackSmasher we were all working around the clock doing last minute fixes to make sure everything went great. One area though, I think lets a certain team member stand out and that is Achyut. He was the meeting guy. He kept us organized and scheduled times between us all. This was much appreciated looking back and I think it would be fair to basically call him the team lead. In that is definitely an under appreciated thing about group work I have learned. Many group projects encountered in classes don’t need that role as they only last a week or 2. However, this 2 semester long project would have fallen apart without some kind of management and that is where Achyut came in. This seems to be a valuable lesson to have going forward in the business world that having some structure and some organization for handling the non tangibles, like meetings and scheduling things, is very critical to the success of a project.