Disease Identification in Crop Plants based on Convolutional Neural Networks

—The identification, classification and treatment of crop plant diseases are essential for agricultural production. Some of the most common diseases include root rot, powdery mildew, mosaic, leaf spot and fruit rot. Machine learning (ML) technology and convolutional neural networks (CNN) have proven to be very useful in this field. This work aims to identify and classify diseases in crop plants, from the data set obtained from Plant Village, with images of diseased plant leaves and their corresponding Tags, using CNN with transfer learning. For processing, the dataset composing of more than 87 thousand images, divided into 38 classes and 26 disease types, was used. Three CNN models (DenseNet-201, ResNet-50 and Inception-v3) were used to identify and classify the images. The results showed that the DenseNet-201 and Inception-v3 models achieved an accuracy of 98% in plant disease identification and classification, slightly higher than the ResNet-50 model, which achieved an accuracy of 97%, thus demonstrating an effective and promising approach, being able to learn relevant features from the images and classify them accurately. Overall, ML in conjunction with CNNs proved to be an effective tool for identifying and classifying diseases in crop plants. The CNN models used in this work are a very good choice for this type of tasks, since they proved to have a very high performance in classification tasks. In terms of accuracy, all three models are very accurate in image classification, with an accuracy of over 96% with large data sets.


INTRODUCTION
The identification and classification of plant diseases is essential for agriculture, as the presence of pathogens can cause significant damage and reduce production [1]. Some of the most common diseases include: root rot, which is caused by fungi that attack the roots of the plant; powdery mildew, which is caused by fungi that affect the leaves and flowers of the plant; mosaic, which is caused by viruses that affect the growth and appearance of the leaves of the plant; leaf spot, which is caused by bacteria that affect the leaves of the plant; and fruit rot, which is caused by fungi or bacteria that affect the fruit of the plant [2], [3]. It is important to identify the disease as early as possible to take measures to combat it, either by fungicide treatments or traditional measures that help prevent the spread of the disease. Since ancient times, agriculture has been an important source of food [4], hence the importance of identifying diseases and being able to treat them, since diseases are the cause of a great loss of crop production, since about 36% of crops are lost because of not identifying diseases at early stages [5]. Early-stage identification of plant diseases can greatly reduce their considerable impact. This involves the use of computer technology in agriculture to help identify these diseases [6]. ML technology has proven to be useful in plant disease identification. One specific technique that has proven to be effective is transfer learning (TL) supported by CNN [7]. The idea behind TL allows models to leverage what they have previously learned to improve their performance on new tasks [8]. CNNs can be used to identify plant diseases by analyzing plant images. The CNN is trained on a labeled image dataset, where labels correspond to different types of diseases [3], [9]. During the training process, the CNN learns to recognize patterns in the images that are indicative of a particular disease. Once trained, the CNN can be used to classify new plant images as carrying or not carrying a particular disease [10]. This approach can be very effective in identifying plant diseases, as it allows the use of visual information, which can be very useful in identifying certain types of diseases that may not be evident from other types of data [11]. In this work we use the transfer learning models: DenseNet-201, ResNet-50 and Inception-v3. DenseNet-201 is a CNN with 201 layers deep. ResNet-50 is a CNN with 50 layers deep; Inception-v3 is a CNN with 48 layers deep. The models work with their own training architecture; therefore, they deliver different results. The models have been trained with Google's ImageNet dataset. Both models are characterized by training with large volumes of images and achieving a high level of accuracy [12]. This is due to their ability to learn specific image features through convolution and pooling layers [13], [14]. However, the specific performance of a model depends on several factors, such as the quality and quantity of training data, model architecture, and parameter optimization. This work aims to identify and classify crop plant diseases from PlantVillage dataset, diseased plant leaf images and their corresponding labels, using CNN with Transfer Learning. www.ijacsa.thesai.org II.
RELATED WORK Lately, researchers and scientists related to the agricultural industry and computer science have conducted different studies related to plant diseases using ML techniques, specifically with CNN. For example, in [15] they developed a model to detect, quantify the severity and classify plant images in different species. To illustrate this, in [16] they developed a hybrid application with web technology and CNN models to detect plant diseases in real time. The model used in the web application achieved an accuracy performance rate of 0.9935 for which they used 9914 training arguments. Also, in [17], [18] implemented a CNN for automatic identification and classification of weeds using a mixed crop land, this model was trained in five different epochs; 10k, 20k, 100k, 200k and 242k images, with the purpose of automatic identification and classification of diseases. The results achieved for each epoch: in 10k the weed accuracy reached 0.67; in 20k the weed accuracy reached 0.962; in 100k the accuracy reached 0.983; in 200k the accuracy reached 0.95 and in 242k the accuracy improved significantly. Similarly, the authors in [18], [19] proposed a model for classifying disease affected leaves, for which they used images and obtained directly from cotton crop fields. They used the CNN DarkNet-19, which obtained a performance rate in accuracy of 0.91. Plant diseases directly affect food security, thus decreasing production. The identification of these diseases is the first important step for their treatment. That is why, in [20] they developed a mobile application with CNN to diagnose in real time 26 diseases of 14 crop species. It was validated and tested with 87k images, divided into 38 classes. The model achieved a classification accuracy of 0. 957. Similarly, in [21] they proposed a CNN with EfficientNet model to identify and classify images with diseases into categories. The model obtained an optimal performance rate of 0.9972 accuracy. Also, in [22] through the ResNet-50 model they classified diseases, applying CNN techniques for image prediction. In the same line, [23] used computer vision and ML technology to detect diseases in field crops. The proposed model achieved an accuracy of 0.978 in detecting four crop plant diseases. CNNs have contributed significantly to the detection of plant pathogens. As such, in [24] performed a work with CNNs using different optimization algorithms for detection. They used 5571 manually collected images, the model achieved an accuracy performance of 0.9259. Image recognition through ML is an active area by scientists and researchers. For example, in [25] they proposed a semi-automatic algorithm to detect diseases in crop plants, making use of CNNs. They used the KijaniNet model, who achieved an accuracy performance of 0.8448 and 0.6257.

III. METHODOLOGY
This section presents the theoretical basis of the DenseNet-201, ResNet-50 and Inception-v3 models and the development process to identify and classify crop plant diseases. For this purpose, initially the image dataset of infected and healthy plants, collected from PlantVillage, is loaded. This is followed by data cleaning, exploratory analysis and then training and validation of the model using the CNN architecture, which is particularly well suited for image recognition tasks.

A. CNN Architecture
The architecture of a CNN consists of several layers, including input layers, convolution layers, pooling layers, fully connected layers, and an output layer. For this case, the input layer is where the input image is provided to the CNN. Convolution layers perform filtering operations on the input data, using filters that are slid over the image to detect specific patterns. Pooling layers reduce the dimensionality of the data by grouping values from a subregion of the image and replacing them with a single value, such as the maximum or average value. The fully connected layers are used to classify the patterns detected in the previous layers. The output layer provides the final predictions of the CNN, as shown in Fig. 1. In general, CNNs are used for computer vision tasks.

B. Convolutional Layer
A convolution layer is a layer in a CNN that performs filtering operations on the input images. The layer is composed of a set of filters, each of which is slid over the input image and applied to a subregion of the input image [26]. Each filter looks for specific patterns in the image, such as edges or textures [27]. A filter is a small matrix of numbers that is multiplied with the image pixels in a specific window, and the products are summed. In general, convolution layers are used to detect patterns in the input data and to extract relevant features from these data.

C. Activation Functions
In CNNs, the activation function is a mathematical equation that is defined at the output layers of a neuron before being sent to the next layers of the network. The activation function aims to regulate the output of a neuron, allowing the network to learn more complex patterns [28] [29]. Some commonly used activation functions are: Sigmoid, ReLU, tanh and Softmax. Each activation function has its own characteristics and advantages, and the choice of the appropriate activation function depends on the specific problem and data set.

D. Pooling Layer
A network layer in a CNN architecture that is used to group a set of inputs into similar groups. This is achieved through the use of clustering algorithms. Pooling layer is commonly used in unsupervised learning tasks [30], such as image segmentation.

E. Fully Connected Layer
It is known as the densely connected layer. In this layer, all neurons are connected to all neurons in the previous layer, and this layer is part of a neural network layer [31]. In other words, each neuron in a fully connected layer receives an input from each neuron in the previous layer and produces an output that is passed to each neuron in the next layer. Fully connected layers are commonly used in neural networks for tasks such as image classification and natural language processing.

F. Reducing Overfitting
The overfitting technique was applied to reduce the complexity of the model and to regulate and thus prevent the model weights from becoming too large. For this case dropout was used in the neural network layers [32]. This is for the purpose of optimizing performance since overfitting is a common problem in ML in which a model is overfitted to the training data and, as a result, may exhibit performance deficiency.

G. Transfer Learning
TL is a process in which knowledge acquired in one task is used to improve performance in a different task. It is a form of ML in which the model reuses what it has learned to improve its performance rate on another task [33]. TL is especially useful in ML as it allows models to leverage what they have previously learned to improve their performance on new tasks; the process of TL is seen in Fig. 2.

H. Model architecture
Three models were trained with images with and without disease. Each of the models used in this work is described below.

I. DenseNet-201
DenseNet-201 is characterized by the use of dense blocks, which are layered blocks in which each layer is connected to all other layers in the block [27]. This allows feature reuse and helps mitigate the problem of leakage gradients that can occur in deep neural networks. The number "201" refers to the number of convolutional layers in the network. The model architecture is shown in Fig. 3.

J. ResNet-50
ResNet-50 is a variant of the CNN ResNet. The key innovation of the ResNet-50 is the use of residual connections, which allow the network to create new residual functions for input to the layers, rather than attempting to learn the original unreferenced functions [34], this helps mitigate the problem of gradient loss that can occur in deep neural networks [30] [35]. The main use of this network is in image classification. The number "50" refers to the number of layers as presented in Fig.  4.

K. Inception-v3
Inception-v3 is a CNN designed for object recognition in images. It uses a combination of filter layers of different sizes and depths to capture features at different scales and levels of abstraction in the input images [36] [37]. The architecture, as depicted in Fig. 5, includes an "Inception" mechanism that combines multiple filtering operations in a single layer to reduce the number of attributes and improve computational efficiency. Inception-v3 has been trained on a large set of images (ImageNet) and has been widely used in different cases of image classification and identification, object recognition, object detection, etc.

L. Understanding Data
There are a variety of diseases that affect plants, among the most common are: Mildew: caused by fungi that appear as white spots on the leaves; powdery mildew: caused by fungi that appear as a kind of powder on the leaves; Rust and Mosaic: are two diseases that are caused by fungi or insects that cause spots and deformations on the leaves, as shown in Fig. 6. These diseases can be treated with fungicides and pesticides. Also, it is important to take preventive measures (IJACSA) International Journal of Advanced Computer Science and Applications, Vol. 14, No. 3, 2023 522 | P a g e www.ijacsa.thesai.org such as good ventilation or good soil drainage. In this work we used an original dataset, obtained from the PlantVillage repository, and this is composed of approximately 87 thousand images of healthy and diseased crop leaves that are organized in 38 different categories. For training and validation the dataset is divided in a proportion of 80% for training and 20% for validation, and then a directory with 33 test images is created for prediction purposes.
The image set is composed of 38 disease types. Each of the diseases associated with the plant types is described below: [Tomato with blight, healthy tomato, healthy grape, orange with virus, healthy soybean, healthy peach, pumpkin with downy mildew, healthy potato, corn with blight leaf, young tomato with blight, tomato with leaf spot, strawberry with frost, apple with scab, tomato with yellow leaf, healthy cherry, healthy blueberry, healthy corn, tomato with bacterial spot, rotting apple, cherry with downy mildew, healthy apple, peach with bacterial spot, royal apple, tomato with objective spot, healthy bell pepper, grape with blight, tomato with mosaic virus, potato with blight, healthy strawberry, black rotten grape, early potato with blight, common corn, beetle grape, healthy raspberry, tomato with mildew, tomato with spider mites, bell pepper with bacterial spot].
From the types of diseases described above, the name of 14 plants is obtained, excluding healthy leaves: [corn with gray leaf spot, corn with rust, corn with fever, healthy potato, rice with leaf spot, potato with fever, healthy corn, potato, healthy rice, healthy rice, rice with hispa, rice with leaf blast, healthy wheat, young potato, red brown wheat and red yellow wheat] and 26 types of images with disease. With this, we proceed to import the dataset; then we process and perform an exploratory analysis, train the DenseNet-201, ResNet-50 and Inception-v3 models and then apply the optimizers.

M. Data Cleaning and Processing
The cleaning and processing process are important tasks in data analysis. Cleaning involves reviewing the data to detect and correct errors, duplicates, and missing values. Data processing involves transforming the data into a more suitable format for analysis, such as grouping, combining, or creating new variables. These tasks are essential to ensure that the results of the analysis are accurate and reliable. For the development of this work we used tools and libraries such as: the Python programming language, libraries such as numpy: for numerical calculations; pandas: to work with data frames; the pytorch module; matplotlib: to process information in graphs and images using tensors; torch.nn: to create neural networks; torch. utils.data: to load data; PIL: to load images; torch.nn.functional: function to calculate loss; torchvision.transforms: to transform images into tensors; torchvision.utils: for data verification; torchvision.datasets: to work with classes and images and torchsummary: to get the model summary.

N. Exploratory Data Analysis
Exploratory data analysis (EDA) is a process of investigating data using statistical tools and visualizations. The main objective of EDA is to understand the structure and distribution of the data, as well as to detect patterns and trends. EDA is an essential step in the data analysis process, as it provides a better understanding of the data before applying statistical and ML techniques. It can include techniques such as histograms, boxplots, scatterplots, among others, to visualize the data and detect patterns and trends. In addition, EDA can also help identify problems in the data, such as outliers or missing values, and make decisions on how to clean and process them before continuing with the analysis. Table I and Fig. 7 show the number of images for each disease. The next step is to prepare the data for model training, this step is critical to ensure that the model performs optimally. This may include tasks such as normalization, scaling, transformation, and splitting into training and test sets. It is also very important to ensure that the data is in the correct format and is representative of the production data to avoid problems such as overfitting. It is at this stage that libraries become relevant, for example, torchvision.datasets(), is used to load the image dataset. After loading the data, the pixel values of each image (0-255) are transformed to 0 -1, since CNNs understand much better when the data is normalized. The pixel matrix is converted to a torchTensor and then divided by 255. For example, the image can have the following form (3,256,256), where 3 is the number of channels (RGB) and 256x256 is the width and height of the image. Also, we have the batch_size library (), it allows to count the total number of images given in the CNN input. For example, if we have 1500 image samples for training and we need to set up a batch size of 150 samples from the training dataset, then what the network does is to randomly take the 150 samples and retrains the network, this process continues until all the samples in the network are propagated. Similarly, dataLoader (), the Liberian dataLoader that comes with PyTorch load data in parallel from the dataset.
It also provides a convenient way to iterate over the dataset, in small batches, with the ability to shuffle the data before each epoch with the option to use multiple threads for data loading. This library is also accompanied by the num_workers function, which allows to calculate the number of processes that generate batches in parallel. Another very important point is in the configuration, the variable 'shuffle=true', this is very important so that the batches between epochs do not resemble each other.

O. Training and Testing of the Model
For the model training process, we worked with the training data set, in this case 80% of the images in the data set. During model training, the internal parameters were adjusted to minimize the loss function between model predictions. The training ends when it reaches a certain level of accuracy or when it reaches the maximum number of iterations. Meanwhile, to test the models, we worked with the difference of the training data set (20%). This stage is very important, since the aim is to evaluate the model's capability and to measure its accuracy. For which the following metrics were used, such as accuracy, recall Score-F1 and the performance curve (ROC). It is important to point out that both the training and testing processes are performed on different datasets, and another dataset was also used for validation. For training we chose to use GPUs instead of CPUs, considering that the volume of data is large, and a CPU is not able to respond to the demands, and GPUs are optimized to perform such tasks, as they can process multiple calculations simultaneously. In addition, they have a large number of cores to perform calculations and handle large amounts of data, which makes the memory bandwidth of a GPU the most suitable. Also, functions that help with the training are used, such as: Training_step(): this was used to find out how erroneous the model turned out to be after training. This function is not only an accuracy metric, but is necessary for the model to improve during training; Validation-setp(): this function is used to measure the accuracy across the threshold and is counted if the difference between the model prediction and the actual label is less than the threshold; Validation_epoch_end(): is used to track losses in validation accuracies and training losses after each epoch. However, it must be ensured not to be tracking the gradient; Epoch_end(): Used to print the validation accuracy losses and training losses and the learning rate after each epoch. We also use the accuracy function to calculate the overall accuracy of the models in the batch of the results. For example, in Fig. 8, we can see the training summary of the ResNet-50 model using Keras. In the training process, some functions that are very useful should be taken into account, such as evaluate (), a function used for the validation process, and the function fit_one_cycle(), a function that performs the entire training process. Some techniques were also used such as: 1) Learning Rate Scheduling: allows using a learning rate after each training, instead of using a fixed rate; 2) Weight decay: regulation technique that prevents the weights from becoming too large to add a term to the loss function; 3) Gradient Clipping: this technique allows limiting the values of the decays to a small range to avoid undesired changes in the parameters due to large decay values, it is a simple but very effective technique. After training the models, the confusion matrix of each model is constructed, as in the case of the ResNet-50 model shown in Fig. 9. The confusion matrix is very important, since it helps to understand and compare the predicted data with the real data; however, for a better understanding, four basic concepts must be known: true and false positives and true and false negatives. That is, true positives and true negatives are simply the hits, while false positives and false negatives are the misses. This tool is important since it allows visualizing the performance of each of the models. Each column represents the number of predictions of each class, while the rows represent the actual values. Finally, the hits and misses are placed in each of the cells, Fig. 10, we can see a confusion matrix of 15 x 15, because we have 15 classes of plants. In the main diagonal we have the hits (true positives and true negatives) and in the remaining cells the number of misses (false positives and false negatives). Now, with the confusion matrix constructed, the performance of each model can be seen in detail, such is the case of the resNet-50 model in Fig. 9. This process is repeated for the other models (DenseNet-201 and Inception-v3).

IV. RESULTS AND DISCUSSION
This section presents the training results of the DenseNet-201, Inception-v3 and ResNet-50 models. For which an original dataset, obtained from the PlantVillage repository, was used, and is composed of approximately 87 thousand images of healthy and diseased crop leaves. The performance of each of the models is subject to the following metrics such as accuracy, precision, recall, F1 score and ROC curve as presented in Table II. The results of the DenseNet-201, Inception-v3 and ResNet-50 models vary depending on the dataset and the specific tasks they perform, as shown in Table II. Table II shows that the DenseNet-201 and Inception-v3 models achieved better performance in image classification, showing slightly better accuracy than ResNet-50. In terms of accuracy, DenseNet-201, has been characterized as one of the best models for image classification, and it is thanks to its density block design that allows greater propagation of information between layers and better feature extraction. However, the DenseNeet-201 model is usually slower due to its larger number of parameters. On the contrary, the ResNte-50 and Inception-v3 models are faster due to their efficient design. A very important point to take into account is the available computational power and memory limitations. Fig.   10, Fig. 11 and Fig. 12 show the performance of the models. For example, in Fig. 10, graph (Results Loss), shows the performance of the loss and accuracy of the DenseNet-201 model, the blue line represents the training data and the red line the test, as can be seen in the first two epochs the error decreases very significantly, then the error decreases as it goes through the epochs or iterations, and in turn makes the comparison with the test data, however, as it progresses the two lines are separated, this means that it is entering an over fit, ideally the two lines should be joined. With respect to the graph (Results Accuracy) in Fig. 10, which is the result of the Accuracy, it is also evident that from the second epoch there is a very significant increase of hits, and from the third epoch onwards it has been improving its accuracy, however, the red line as the epochs progress is separating from the blue line, which is what should not happen, because it means that the test data are separated from the training. Similarly, it can be seen in Fig. 11, graph (Results Loss), shows the loss and accuracy performance of the ResNet-50 model, the blue line represents the training data and the red line the test, as can be seen in the first two epochs the error decreases very significantly, and progressively decreases the error as it advances the iterations in the epochs, and in turn makes the comparison with the test data, however, as it advances the iterations the two lines are www.ijacsa.thesai.org separated, this means that it is entering in an over adjustment, the ideal is that the two lines are joined. With respect to the graph (Results Accuracy) of Fig. 11, it is the result of the Accuracy, it is also evident that from the first epoch there is a very significant increase of hits, and from the second epoch it has been improving its accuracy, however, the red line as it advances the iterations of the epochs is separating from the blue line, it is what should not happen, because it means that the test data is separated from the training. Similarly in Fig. 12, graph (Results Loss), the performance of the loss and accuracy of the Inception-v3 model is presented, where the results are very similar to the Densenet-201 and ResNet-50 models. And with respect to the graph (Results Accuracy) of Fig. 12, is the result of the Accuracy, its performance of this model is very similar to the Densenet-201 and ResNet-50 models, these similarities are seen in Fig.12 graph (Results Accuracy).   The results presented in Table II, Fig. 10, Fig. 11 and Fig.  12, allow an analysis of the performance of each of the trained models (DenseNet-201, ResNet-50 and Inception-v3). In general terms, the performance of the three models has been successful in the identification and classification of diseases in crop plants. For example, the DenseNet-201 model achieved an accuracy of 98%, slightly higher than the performance of the ResNet-50 model. This result is superior to that obtained in [20] where they used this model to classify images, it is important to specify that the accuracy rate will depend on different factors, such as the volume of data with which it was processed, as in [18] where this model achieved an accuracy of 99%, higher than the result obtained in this work. The ResNet-50 model achieved an accuracy level of 97%, slightly lower than the performance of the DenseNet-201 and Inception-v3 models. However, the level obtained does not mean that the model has weaknesses in identifying and classifying images; on the contrary, 97% accuracy is significantly very good. Considering that, for example in [24] this model obtained an accuracy of 92%, it is also considered an optimal rate for its level of accuracy, in [22], [23] used this model for image prediction where it reached an accuracy level of 97.8%, slightly higher than that obtained in this work. This indicates www.ijacsa.thesai.org that the performance of the model varies depending on the volume of the data set and the quality of images, among other factors. With respect to the Inception-v3 model, in this work it reached an accuracy level of 98% as shown in Table II, slightly  higher than the ResNet-50 model, the Inception-v3 model is  characterized by having multiple filters and kernel sizes in each  layer, it is a lighter model than DenseNet-201 and ResNet-50, it has fewer parameters, which makes it ideal for identifying and classifying diseases in planes through artificial vision. The level of accuracy obtained is considered optimal, considering that it is close to 100%, this model also obtained a good performance in [16], where it reached an accuracy of 99% in the classification of images of different species, slightly higher than that obtained in this work. Similarly, in [17] they used this model to identify and classify weeds using mixed cropland, where it reached an accuracy level of 92%, a figure much lower than that obtained in this work. However, this does not mean that the model does not perform well in these tasks; on the contrary, the accuracy will depend on the volume of data and the quality of images with which it is processed. Finally, the three models used in this work have achieved optimal performance and accuracy in the process of identification and classification of diseases in crop plants. It is important to point out that the DenseNet-201 and Inception-v3 models obtained the best results in accuracy with 98%, so they would be a viable alternative in technological terms for the identification of diseases in crop plants.

V. CONCLUSION
The three CNN models (DenseNet-201, ResNet-50 and Inception-v3) used in this work have demonstrated an effective and promising approach, being able to learn relevant features from the images and classify them accurately. A dataset consisting of more than 87 thousand images of healthy and diseased crop leaves, categorized into 38 different categories, was used. For the purpose of identifying and classifying crop plant diseases, using CNN with Transfer Learning. The performance of each of the models was analyzed, as shown in Table II, Fig. 10, Fig. 11 and Fig. 12. The models used are characterized by excellent performance in image identification and classification. For example. The DenseNet-201 and Inception-v3 models achieved an accuracy of 98% in the identification and classification of plant diseases, slightly higher than the ResNet-50 model, but this does not mean that the ResNet-50 model does not have an optimal performance, on the contrary, it achieved 97% accuracy. Likewise, Fig. 11 (Results Loss) shows the training results of the DenseNet-50 model, where it is evident that the blue line from the second iteration drastically reduces the error and progressively decreases as the iterations advance in the epochs. However, at the end it separates from the red line, this is not good for the prediction, because it is an indication of an over adjustment to a greater number of iterations. In the case of Results Accuracy, it is also evident that from the second epoch onwards there is a very significant increase in accuracy, and from the third epoch onwards its accuracy has been improving. The ResNet-50 model in Fig. 12 and the Inception-v3 model in Fig. 12 have a very similar behavior to the DenseNet-201 model.
Finally, the DenseNet-201 and Inception-v3 models achieved the best results in the identification and classification of diseases in crop plants; therefore, they are the two models that are recommended for implementation for this type of task. In the future, a possible complement to this work would include the development of a mobile application so that the implemented model can be consumed.