Hello, I'm Denizhan Şahin. I am a 3rd year Computer Engineering student at Yozgat Bozok University. I will explain my work for the Pardus 21 Debugging and Suggestion Contest, why I use Pardus, and my motivation to contribute to our country's domestic and national software.
As you know, domestic and national software are important in terms of cyber security of our country, the continuity of R&D studies, the decrease in the fees paid for the use of foreign software and its economic contribution, the increase in technology exports, the development of our qualified manpower's own technology with its own capital and knowledge, and the transfer of these experiences to the next generations.
My interest in the world of technology, which started in my secondary school years, became an important factor in my use of domestic technologies in the future. It has always been my dream to develop domestic technologies, contribute to current studies and be a qualified engineer for our country. I have been using the Pardus operating system actively for 8 years, although I understood the importance of domestic software especially after meeting with Pardus in my secondary school years. Especially in my secondary school and high school years, I informed my school friends and teachers about Pardus and local software about using Pardus in classroom information devices and introduced them to both Pardus and Linux world.
In line with my interest in technology and my better understanding of the importance of domestic software, after I became a university student, I started working on software development, artificial intelligence, etc., especially on Pardus and Linux, in the communities I was in. I have been working on technologies. I decided to participate in the Pardus 21 Debugging and Suggestion Contest to contribute my knowledge and experience to our domestic and national operating system, Pardus, along with the works I have done and dreamed of. First of all, I would like to thank my esteemed academic advisor, community friends and relatives who supported me for this decision.
My Experiences During the Competition
For the Pardus 21 Debugging and Suggestion Contest, I first worked on more than one computer. I continued my work on four computers in total. Two of these computers were laptops and computers with Nvidia GPU support, while the others were desktops, one with AMD GPU and the other with Nvidia GPU support. First of all, my main goal was to work on the problems and suggestions that may occur during the installation stages of the Pardus operating system. In the future, it has been to work on the suggestions necessary for a simple computer use and the problems that the user may encounter. In addition, the software I actively use was to run the software on the Pardus operating system, to create the appropriate conditions and test environment to run it, and to analyze the errors that may occur. However, I have been developing projects that I think may be useful for the Pardus operating system. In addition, it has been to develop my determinations and solution suggestions for the errors that may be important.
As a long-time user of the Pardus operating system, I first worked on my own experiences. In addition, by using Pardus in the project studies I used in my university life and in daily life without using any other operating system other than Pardus, I have provided to identify the problems and to create a knowledge for the studies I have planned or will plan later.
While continuing my work on Pardus, I noticed that sometimes I get errors during software installations and that I need to reinstall Pardus on the computer during the related operations. Especially when I want to try some graphical interfaces, Nvidia Driver etc. I noticed that the system was damaged during the installation and removal of the software, and sometimes the Nvidia CUDA Toolkit did not work as desired. There were also times when I got errors while installing some Python libraries, when trying to install some non-system packages, and when I couldn't find some packages on the internet. In some cases there have been cases where the operating system did not work and I could not detect it, even when I had no problems. In some cases, as a root user, installation of some packages etc. system wide. I made transactions.
For my related works, I tried to solve all kinds of problems that I encountered, in whole or in part. However, I decided to continue or terminate the projects I wanted after a certain planning and research-development process. I used the Pardus operating system for about a year during the competition process and I realized that it made a great contribution to me during the development of my projects.
Contribution of the Competition Process to Me
The contribution of the competition process to me has been really beneficial. Using the Pardus operating system constantly has given me great pleasure, because using a domestic and national operating system is a great technological opportunity in every sense.
First of all, I understood how a research process can be carried out. I learned to read articles on various topics, to examine the solutions for the problems encountered and to examine the official sources of the software to be used.
Secondly, I have learned to develop solutions to problems that may be encountered during continuous use of a software, and I have gained knowledge and experience in terms of related problems and software.
Thirdly, in the stage of developing a project and transforming it into a product, the relevant planning and idea development stages contributed to me.
Fourthly, in a competition process, planned work, developing experiences and gaining new experiences, learning to use the studies in other future studies, using the internet and other resources efficiently, etc. I have gained knowledge and experience.
How do I do my work? I developed?
In order to improve my work, I first started to install and use the software and drivers that I actively use in other operating systems on Nvidia and AMD graphics cards computers on Pardus. First, I installed the Nvidia Driver drivers for computers with Nvidia GPUs. After the relevant installations, I found that sometimes some problems occur in the operating system. In order to solve the situations such as the graphical interface not working, firstly uninstalling the drivers I installed and reinstalling the graphical interface software provided some convenience, but I reinstalled Pardus on these computers for a more stable process. I installed CUDA and cuDNN software for Pardus, especially to do artificial intelligence studies and to use the operating system more efficiently. With these software, I would be able to perform my works such as artificial intelligence and computer vision faster. In particular, I installed the artificial intelligence library called TensorFlow and OpenCV and other libraries used in the field of computer vision, on the computers I use.
Face Recognition App
In particular, I decided to contribute to the user security of the Pardus operating system and to develop a face recognition software that is not yet used by a large audience in Linux operating systems today. I first started working with Keras RetinaNet and TensorFlow. The fact that Keras RetinaNet in particular has a higher accuracy rate in the facial recognition articles I've read made me use this software first. However, I have tried to integrate advanced facial recognition software such as ArcFace and other software such as GoogleNet into my work. Especially for my work, ResNet image recognition architecture has a solid structure, which is among my preferences. With Keras RetinaNet, I first did a model training that detects the human face. With this trained model, I would be able to detect people's faces. Later, I worked on recording the detected face image and training a separate model for this face image. I decided that a very slow software like Keras RetinaNet would not contribute anything to computers without a video card, especially since I could not get the full efficiency of the RTX 2060 (the one with the highest capacity during my studies), the video card I used during my studies, and especially the use of all the resources of this video card and not achieving the desired accuracy rate.
However, as another method, I worked with a software called Haar Cascade, which generally does not support artificial intelligence. With this software, I decided to detect the determined points on the human face and perform face recognition by performing mathematical operations on these points. At this stage, even if I thought of doing machine learning with the obtained point data, the very low accuracy rates with Haar Cascade and the problems in detecting some points on the human face led me to use another software architecture instead of this software.
However, I decided to use the architecture called DeepFace in line with my studies and the resources I read. This architecture, on the other hand, has enabled me to continue my work in this direction, especially the efficient use of system resources, which are important for a user, together with its open source structure and high accuracy rate. The most important feature of this software is to compare the face image of the person registered in the computer with the human face detected in the image taken during login, using the deep learning algorithm.
My next steps are to create a DEB package. I actively used bash and Python files in the DEB package. I made interface development related to the installation phase with PyQt5. With this interface, the user will record his own face image and will be able to install the necessary TensorFlow, DeepFace and other software more easily. There are two basic bash files in the DEB package. While performing the related installation stages with one of these packages, face recognition will be performed with the other bash file during computer startup. Then, with SQLite3, relevant database operations were performed for correct entries or incorrect entries, and the user will be able to control the security of his computer as he wishes. In addition, the erroneous camera image is stored for the wrong entry so that the user can check it later and to know the people who try to open their computer without permission. However, the user will optionally have the opportunity to delete all application data.
The user, on the other hand, will be able to perform face recognition at every computer startup by making the face recognition application the initial application. For this, the application icon in the desktop application menu can be used. In addition, for advanced operations, terminal commands were preferred, thus creating an environment of full authorization for the user. With this developed application, users with no or unsupported video cards are easy to use, and high security rates have been achieved even if all resources are used if there is a supported video card.
Text Recognition Application
I have decided to develop a software for Pardus users to easily obtain and use the textual expressions in any image and to facilitate the daily operations of Pardus users in general. For this, I used OCR (Optical Character Recognition) and with this method, textual expressions on an image can be easily obtained. OCR is mainly studied under three main headings: Image preprocessing, Character recognition and Postprocessing. With image preprocessing, it is possible to improve the image and obtain clear expressions from the image. In the character recognition stage, textual expressions are detected and feature extraction method is used for this, the characters that are definitely detected are processed, but the characters that cannot be determined definitively are not processed. Along with the post-processing stage, the detected characters are tested for accuracy.
PyQt5 and Pytesseract libraries are used for OCR for the user to use it easily. It will also be available to Pardus users with the DEB package.
The working algorithm of the application is the file path of the relevant image from the user. If the file path is incorrect, an error is output. If the image processing is correct, OCR processes are performed. With OCR, an error output is given if the textual expression is not detected. If the textual expression is detected and the OCR is generally successful, the textual expression is output to the screen. The user can optionally save the relevant expressions in TXT format.
QR Code Generator
Pardus users without the need for any other software and office documents, etc. An application has been developed to create an easier QR code in areas. PyQt5, Pypng, Pyqrcode libraries are used with this application. A DEB package has been created for the user. The user first writes the desired textual expressions. Then, QR code is created with Pyqrcode. When the generated QR code is created in the user's home directory, the time information is saved as the name of the file, and Time and Pypng libraries are used for this. In addition, the generated QR code is displayed on the user's screen.
In addition, the logo of the application was created from the word Pardus and the logo color is compatible with the Pardus logo.