[image] [image] Ressource protégée - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu

[image] [image]

* Documentation

* FR
  Français (FR)

* Anglais (EN)
  Se connecter

* Portail HAL Inria

* Recherche
  Loading...

## Recherche avancée

Information de documents

Titres

○ Titres

○ Sous-titre

○ Titre de l'ouvrage

○ Titre du volume (Série)

○ Champ de recherche par défaut (multicritères) + texte intégral des PDF

○ Résumé

○ Texte intégral indexé des documents PDF

○ Mots-clés

○ Type de document

○ Sous-type de document

○ Tous les identifiants du document

○ Identifiant HAL du dépôt

○ Langue du document (texte)

○ Pays (Texte)

○ Ville

○ À paraître (true ou false)

Ajouter
<figure><img src="image_1.png" /></figure>

ifip

International Federation for Information Processing

This document is the original author manuscript of a paper submitted to an IFIP
conference proceedings or other IFIP publication by Springer Nature. As such, there
may be some differences in the official published version of the paper. Such
differences, if any, are usually due to reformatting during preparation for publication or
minor corrections made by the author(s) during final proofreading of the publication
manuscript.
## Auteur

### Auteur (multicritères)

○ Auteur (multicritères)

○ Auteur : Nom complet

○ Auteur : Nom de famille

○ Auteur : Prénom

○ Auteur : Complément de nom, deuxième prénom

○ Auteur : Organisme payeur

○ Auteur : IdHal (chaîne de caractères)

○ Auteur : Fonction

○ Auteur : personID (entier)

○ Auteur : Identifiant de l'organisme payeur

○ Auteur : Identifiant de la structure

○ Directeur de thèse

○ Éditeur

○ Éditeur scientifique

○ Éditeur de la série

## Ajouter

### Structure

### Structure (multicritères)

○ Structure (multicritères)

○ Structure : Acronyme

○ Structure : Nom

○ Structure : Code

○ Structure : Pays

○ Structure : Type

○ Structure : État dans le référentiel

○ Structure : Identifiant HAL de la structure

○ Structure/équipe de recherche : Pays

○ Structure/regroupement d'équipes : Pays

○ Structure/laboratoire : Pays

○ Structure/regroupement de laboratoires : Pays

○ Structure/institution : Pays

○ Structure/regroupement d'institutions : Pays

## Ajouter
# Supervised Learning of Procedures from Tutorial Videos

Arunima S¹[0000-0002-9278-8717], Amlan Sengupta², Aparna Krishnan³, D. Venkata Vara Prasad⁴ and Lokeswari Y Venkataramana⁵

¹,²,³,⁴,⁵ Sri Sivasubramaniya Nadar College of Engineering, Department of Computer Science and Engineering, Kalavakkam, Chennai, 603110.

arunima17016@cse.ssn.edu.in¹, amlan17008@cse.ssn.edu.in², aparna17012@cse.ssn.edu.in³, dvvprasad@ssn.edu.in⁴, lokeswariyv@ssn.edu.in⁵

**Abstract.** Online educational platforms and MOOCs (Massive Open Online Courses) have made it so that learning can happen from anywhere across the globe. While this is extremely beneficial, videos are not accessible by everyone, due to time constraints and lower bandwidths. Textual step-by-step instructions will serve as a good alternative, being less time-consuming to follow than videos, and also requiring lesser bandwidth. In this work, the authors aim to create a system that extracts and presents a step-by-step tutorial from a tutorial video, which makes it much easier to follow as per the user's convenience. This can be mainly accomplished by using Text Recognition for academic videos and Action Recognition for exercise videos. Text Recognition is accomplished using the Pytesseract package from Python which performs OCR. Action Recognition is performed with the help of a pre-trained OpenPose model. Additional information is extracted from both exercise and academic videos with the help of speech recognition. The information extracted from the videos are then segmented into procedural instructions which is easy to comprehend. For exercise videos, a frame-wise accuracy of 79.27% is obtained. Additionally, for academic videos, an accuracy of 78.47% is obtained.

**Keywords:** Openpose, OCR, Exercise Videos, Academic Videos, Speech Recognition, Action Recognition, Text Recognition

## 1 Introduction

Knowledge and the dissemination of knowledge has become truly global with the advent of the Internet. Therefore, tutorial videos have become one of the primary media through which knowledge is imparted. However, video streaming is resource-intensive and not always possible in remote areas with poor connectivity or due to time constraints. In such situations, having a system that creates a procedural set of instructions from the tutorial videos, which can be read and reread as per the user's convenience. Text Recognition and Action Recognition can be used to interpret the information relayed in tutorial videos and segmented into a procedural set of instructions. With longer, more detailed tutorial videos this system is the most impactful as it
Autres

Champ de recherche par défaut (multicritères)

○ <u>Champ de recherche par défaut (multicritères)</u>

○

○ <u>Revues (multicritères)</u>

○ <u>Revue : Éditeur</u>

○ <u>Revue : Titre abrégé</u>

○ <u>Revue : Titre</u>

○ <u>Revue : Identifiant interne</u>

○ <u>Revue : Date de début de publication</u>

○ <u>Revue : ISSN électronique</u>

○ <u>Revue : ISSN</u>

○ <u>Revue : Éditeur</u>

○ <u>Revue : Couleur dans SHERPA/RoMEO</u>

○ <u>Revue : État dans le référentiel</u>

○

○ <u>Colloque (multicritères)</u>

○ <u>Colloque : Titre</u>

○ <u>Colloque : Organisateur</u>

○ <u>Colloque : date de début (Année)</u>

○ <u>Colloque : date de fin (Année)</u>

○ <u>Conférence invitée (oui/non)</u>

○

○ <u>Projets ANR (multicritères)</u>

○ <u>Projet ANR : Acronyme</u>

○ <u>Projet ANR : Acronyme du programme</u>

○ <u>Projet ANR : Code décision (référence)</u>

○ <u>Projet ANR : Nom</u>

○ <u>Projet ANR : Identifiant interne</u>

○ <u>Projet ANR : État dans le référentiel</u>

○

○ <u>Projets européens (multicritères)</u>

○ <u>Projet européen : Acronyme</u>

○ <u>Projet européen : Identifiant de l'appel à projet</u>

○ <u>Projet européen : Référence</u>

○ <u>Projet européen : Nom</u>

○ <u>Projet européen : Date de fin</u>

○ <u>Projet européen : Financement</u>

○ <u>Projet européen : Date de début</u>
can turn a complicated video into an easy-to-follow textual tutorial.

The recognition and interpretation of human or robot-induced actions and activities have gained considerable interest in computer vision, robotics, and AI communities and as more and more videos are being made, and more students refer to them for their studies, there is an increase in the need to properly recognize the text content in the video. This is the base of text recognition. Text recognition is mainly carried out using Optical Character Recognition (OCR) techniques. The modeling and learning of the extracted features are a critical part of the action recognition, in improving its accuracy. Some popular techniques include optical motion detection, 3-D volume representation, temporal modeling, Hidden Markov Model (HMM) training, Dynamic Time Warping (DTW), multi-view subspace learning, and Pose estimation.

The motivation behind building such a system is to make the dissemination of knowledge over the Internet, especially in these times of online learning, easier and more accessible. The objective of this system is to ensure that students are not deterred by bandwidth restrictions or videos that are too long to be comprehensible. This is the first step towards building systems that make knowledge truly universal

## 2 Related Work

Several research work has been reported in the field of procedure extraction from demonstration videos. The authors [1] proposed the method of temporal clustering and latent variable modeling, and developed a general pipeline for procedure extraction. Temporal clustering consists of aggregating similar frames or images and removing duplicates from the pipeline. This method is further evaluated using improved metrics like temporal purity and temporal completeness are proposed.

Another approach called Video Instance Embedding (VIE) framework [2] which trains deep nonlinear embedding on video sequence inputs is introduced. The authors feel that a two-pathway model with both static and dynamic processing pathways is optimal as it provides analyses indicating how the model works.

DPC [3] is used to predict a slowly varying semantic representation based on the recent past. A video clip is partitioned into multiple non-overlapping blocks, with each block containing an equal number of frames. An aggregation function is then applied to the blocks and this is used for creating a context representation which helps identify the actions.

The concept of using CompILE [4], is a framework for learning reusable, variable-length segments of hierarchically-structured behavior from demonstration data is also introduced. CompILE utilizes a novel unsupervised, fully-differentiable sequence segmentation module to learn hidden encodings of sequential data that can be re-composed and executed to perform new tasks. Once trained, the model generalizes to sequences of longer length and from environment instances not seen during training. CompILE has been tested in 2D multi-task environments successfully.

There are many approaches to action recognition. A key aspect of using machines to have an understanding of people in images and videos lies on Realtime multi-person 2D pose estimation [5]. This work is used to detect the poses of multiple people in an image. This method uses Part Affinity Fields (PAFs), to learn to associate the values that represent body parts to the individual people identified in the image. Since it is a bottom-up approach, it obtains higher accuracy and real time performance, regardless of the number of people in the image.
○ Projet européen : État dans le référentiel

○ Projet européen : Identifiant interne

○

○ Date de production : année

○ Date de mise en ligne : année

○ Date de publication : année

○ Date d'écriture : année

○ Date de modification du dépôt : année

○ Date de dépôt : année

○ Date de publication électronique : année

○

○ Collection HAL (multicritères)

○ Collection HAL : catégorie

○ Collection HAL : Code

○ Collection HAL : Nom

○ Collection HAL : Identifiant interne

○

○ Identifiant interne du contributeur/déposant

○ Nom complet du contributeur/déposant

○

○ Domaines

○ Domaine primaire

○ Domaine racine

○ Sous-domaine niveau 1

○ Sous-domaine niveau 2

○ Sous-domaine niveau 3

○

○ Statut du document

○ Version du document

○ Type de dépôt

○ Type de document

○ ISBN

○ Numéro - référence

○ Identifiant DOI

○

○ Classification

○ Audience

○ Vulgarisation

○ Comité de lecture - texte (oui ou non)

○ Actes de colloque
## 3 Methodology

The dataset [7] for this project has been majorly taken from YouTube. For exercise videos, a compilation of different exercises along with various angles for each exercise has been given for training. For academic videos, simple tutorials have been used. The proposed methodology employs two different approaches for exercise and academic videos as shown in Figure 1.

<figure><img src="image_2.png" /><figcaption>Fig. 1. Flow of Exercise Cycle</figcaption></figure>

The overall process is divided into three separate flows of recognition: video, audio, text.

In the video recognition flow, the action shown is detected and keyframes are extracted. Then, pose estimation is performed using OpenPose on the detected actions. These estimates are further fine-tuned and the action (exercise) performed is identified.

In the audio recognition flow, the audio is converted to a usable format. The background noise is handled appropriately and lessened. Then, Google's Speech-to-Text is used to transcribe the audio file, and the text contained in the audio file is effectively obtained.

In the text recognition flow, video frames are extracted and redundant frames are removed. Each frame is preprocessed to make the text content clearer, and Optical Character Recognition is performed to identify the text.

The outputs from the three flows are combined to form the procedural instructions, which will be the final output of the system.

### 3.1 Exercise Videos

The actions performed in exercise videos are identified by using OpenPose estimation [8].

**OpenPose Methodology.** OpenPose is divided into three different blocks which are (a) body+foot detection, (b) hand detection, and (c) face detection. The core block is made up of the combined body + foot key point detector. The points recognised in the body and foot loca-
○ Référence interne

○ Financement

○ Collaborations

Ajouter

Lancer la recherche
Recherche experte (SolR)

Recherche experte (SolR)

Lancer la recherche
Vers la recherche avancée

• Déposer

Portail INRIA.HAL.SCIENCE
Les publications, logiciels... des scientifiques Inria

• Accueil

• Publications Inria

○ Consulter les derniers dépôts

○ Par équipe de recherche

○ Par auteur

○ Rapports de recherche et techniques

○ Livres blancs

○ Rapports d'activité des équipes

○ Statistiques

• Boite à Outils

○ X2Hal : importer par lot

○ Logiciels : créer le Codemeta.json

○ Créer mon IDHal

○ Créer mon CVHal

○ Haltools : créer ma page de publications

○ Haltools : extraire des données (réservé Inria)

○ Les bonnes pratiques

■ Comment bien s'affilier ?
tions help the facial bounding box to be more accurate and also get more key areas like ears, eyes, nose and neck.

Additionally Convolutional Neural Networks (CNNs) i.e 3 layers of convolutions of kernel 3 are used to obtain reliable local observations of body parts. DeepSort algorithm [6] is also used for tracking multiple people. Consequently, the deep neural networks are used to recognise the actions performed by each person based on single frame-wise joints detected from OpenPose.

The single frame-wise joints are given as input to a baseline CNN network like VGG-19. The feature map thus obtained is processed through a multi-stage CNN pipeline which generates the Part Confidence Maps and Part Affinity Field (PAF) [5].

A Confidence Map consists of a 2D representation of the belief that any given pixel can be used to map a particular body part.

$$S = (S_1, S_2, \dots, S_B) \text{ where } S_b \in \mathbb{R}^{w*h}, b \in 1 \dots B \quad (1)$$

The above equation 1 denotes a confidence map where B is the number of body part locations and each map has a dimension of w*h. This confidence map is used to denote high probabilities where a body part might be in the input image.

The location and orientation of limbs of multiple people is encoded using a set of 2D vector fields known as Part Affinity Fields. The data is encoded in the form of pairwise connections between body parts i.e it points the direction from one limb to another. The following equation 2 represents part affinity fields L, which consists of a set of “N” 2D matrices for each limb in the body. The dimension of L is w * h * n.

$$L = (L_1, L_2, \dots, L_N) \text{ where } L_n \in \mathbb{R}^{w*h*n}, n \in 1 \dots N \quad (2)$$

In case of multiple people detection due to the presence of multiple heads, hands etc., there is a need to map the correct body parts with the correct person. Equation 3 is used to calculate a predicted part affinity which is based on two of the locations of the body parts $D_{b1}$ and $D_{b2}$. This predicted PAF value is used to determine $E_n$ for the set of $D_b$ values and maximize it.

$$\max_{z_n} E_n = \max_{z_n} \sum_{m \in D_{b_1}} \sum_{n \in D_{b_2}} E_{mn} \cdot Z_{b_1 b_2}^{mn} \quad (3)$$

**Action Detection Procedure.** The input consists of a single exercise video from which frames are individually taken and the 36 points corresponding to distinct body parts are identified by the pose estimation algorithm. These points are stored as decimal values in a text file which is further converted into .csv format after adding an additional column i.e. class label. The actions are mapped to their respective class labels in Action function. The csv is then given as input for training the model. The number of cases for each class is given in Table 1.
■ Quelle version puis-je déposer ?

■ Choisir le bon « type de document »

■ Mettre en valeur ses publications

○ Les tutos IES Inria

■ Lier les notices dans HAL

■ Umbrhal Inria pour l'accessibilité

■ Personnaliser son CVHAL

■ Créer et Personnaliser sa collection

• Documentation

○ Aide en ligne HAL

○ Aide en ligne Haltools

○ Aide en ligne X2hal

○ Tutoriels video HAL

○ Documentation API HAL

○ Ajouter des vignettes

○ Identifiant auteur IdHAL et CV

○ Compléter son dossier ORCID avec ses dépôts HAL

○ Inria et la Science Ouverte

X

X

X

Loading...

X

Le document que vous demandez est en access restreint
jusqu'au 2025-01-01 !

Revenir a la notice

Retourner à l'accueil

Contact

•

Ressources
<table><caption>**Table 1.** Training data for action recognition</caption><thead><tr><td>Exercise</td><td>No. of Lines</td><td>Class</td></tr></thead><tbody><tr><td>Squat</td><td>445</td><td>0</td></tr><tr><td>Jumping Jacks</td><td>715</td><td>1</td></tr><tr><td>Push Ups</td><td>351</td><td>2</td></tr><tr><td>High Knees</td><td>744</td><td>3</td></tr><tr><td>Total</td><td>2255</td><td></td></tr></tbody></table>

A sequential keras model with relu activation function is used for training. A classifier trained for specific action is saved. The classifier is loaded along with a pre-trained VGG model [9] to perform action recognition.

Figure 2 is an example of how the points are mapped in an image. A text file is generated containing the sequence of distinct exercises performed throughout the video as shown in Figure 3.

<figure><img src="image_3.png" /><figcaption>**Fig. 1.** Pushups</figcaption></figure>

<figure><img src="image_4.png" /><figcaption>**Fig. 2.** Output for Activity Recognition</figcaption></figure>
* Documentation

* FAQ

* API

* OAI-PMH

* AuréHAL

## Informations

* À propos

* Données personnelles

* Mentions légales

* Accessibilité

* Conformité RGAA

## Questions juridiques

* Je publie, quels sont mes droits ?

* Loi pour une République numérique

* Stratégie de non-cession des droits

* SHERPA/RoMEO

## Portails

* Portails institutionnels

* HAL

* HAL SHS

* HAL Thèses

* MédiHAL

## CCSD

* CCSD

* Episciences

* Sciencesconf
## 3.2 Academic Videos

The input video is split into various frames at regular intervals using packages like OpenCV [10]. To remove similar and repetitive frames, similarity measures like Mean Squared Error (MSE) and Structural Similarity Index (SSIM) are used. Structural Similarity Index (SSIM) is a metric used to measure the similarity between two images. The similarity between the two images is represented by a value between -1 and +1. A SSIM of +1 denotes that the two images are very similar. A value of -1 denotes the images have very less similarity. The system uses 3 aspects to measure similarity: Luminance, Contrast and Structure. The more similar images are, the more likely they are to be removed. The final collection of images has less similar images thereby making it easier for image pre-processing and recognition of text. For pre-processing, the colorspace of the images is changed to grey-scale using the cvtColor() method, and a Gaussian Blur is added using low-pass filters using the GaussianBlur() method. The text in the image is detected by covering the textual area with a rectangle and OCR is performed using Pytesseract [11] on that area.

A single academic tutorial video is given as input from which frames are extracted at 3 sec-ond intervals. Redundant frames are removed using SSIM [12]. Image preprocessing is per-formed on the images which includes converting to grayscale, blurring the background and thresholding. OCR using Pytesseract is performed to extract text from the preprocessed images. A text file is generated for recognized text as shown in Figure 4.

<figure><img src="image_5.png" /><figcaption>Fig. 3. Output for Text Recognition</figcaption></figure>

## 3.3 Speech Recognition

Speech recognition is used to note down the additional information given in the videos. For example, instructions given by the trainer in exercise videos and important points discussed by the teacher in academic videos. Therefore, speech has been included in both types of videos. The audio from the input video is extracted and chunked to sub-clips using the extract- sub-clip() method from the moviepy python package. Each sub-clip is converted to .wav format and written back to the sub-clip files. Using each sub-clip as the source, the adjust-for-ambient-noise() method is used to remove noise from the sub-clip. Once each sub-clip has been pre-processed, the recognize.google() Speech Recognition method from Google is used to recog-
nize the text from each clip. The chunked clips from which the text is recognized are later
joined. The text obtained from speech recognition is punctuated using the python library punct-
tuator and then added to the final output for both types of videos.

## 4 Results

For exercise videos, an output file (Figure 5) is generated which contains the sequence of exer-
cises performed throughout the video along with the instructions spoken by the trainer.

<figure><img src="image_6.png" /><figcaption>Fig. 4. Output for Exercise Videos</figcaption></figure>

For academic videos, an output file (Figure 6) containing the procedural information from
the video along with the additional information spoken by the tutor is generated.

<figure><img src="image_7.png" /><figcaption>Fig. 5. Output for Academic Videos</figcaption></figure>
## 4.1 System Performance

The performance and accuracy of the first part of the system is measured in terms of the percentage of exercise instances classified correctly in the case of Exercise Videos. The following graph in Figure 7 shows the accuracy of OpenPose when run over our data.

<figure><img src="image_8.png" /><figcaption>Fig. 6. OpenPose Accuracy</figcaption></figure>

The test video consisted of 304 frames, out of which 292 keyframes were detected and action was performed on these keyframes. Out of the 292 keyframes, 51 were classified incorrectly thereby leading to 241 frames classified accurately. This provided the model with a frame-wise accuracy of 79.27%.

The model involves using OpenPose specifically for exercise videos when compared to other models which include a multitude of actions. It is able to accommodate as many exercises as needed. The training is short when compared to other deep learning methods as the pose estimation points are extracted during the length of the video. The classifier containing the pose estimation points for each exercise is trained using aker sequential model with relu activation. The training time is optimal as only points are given as inputs rather than images.

For Text Recognition, the accuracy is measured using Document Similarity as shown in Figure 8 and 9. Document similarity is calculated by calculating document distance. Document distance is a concept where words (documents) are treated as vectors and is calculated as the angle between two given document vectors. Document vectors are the frequency of occurrences of words in a given document.
<figure><img src="image_9.png" /><figcaption>Fig. 7. Document Similarity - Accuracy of Text Detection</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>Fig. 8. Document Similarity - Output</figcaption></figure>

In the case of Academic Videos, the percentage similarity between the gold label document and the output document determines the system performance as shown in Table 2.

<table><caption>Table 2. Accuracy for Text Recognition</caption><thead><tr><td>File 1</td><td>File 2</td><td>Percentage Similarity</td></tr></thead><tbody><tr><td>AT</td><td>OF</td><td>69.42</td></tr><tr><td>AT</td><td>OF-RR</td><td>78.47</td></tr><tr><td>OF</td><td>OF-RR</td><td>89.72</td></tr></tbody></table>
Key for Table 2:

1. AT: Actual text that is manually extracted from the video

2. OF: Output obtained without performing redundancy removal

3. OF-RR: Output obtained by using redundancy removal on the frames

4. File 1: The first file taken for calculating similarity

5. File 2: The second file taken for calculating similarity

The actual.txt file is manually created to act as the gold labels for checking the accuracy of the files that are obtained as output from the OCR function. The output without redundant frames being removed when compared to actual.txt is comparatively lesser than the accuracy obtained from comparing actual.txt and the output obtained from the frames where redundancy removal has been performed. The similarity between the two generated output files is quite high since only redundant and repetitive frames have been removed.

# 5 Source Code and Computational Resources

The source code for implementing this system has been uploaded in this GitHub repository [13]. The resources used for implementing the system were a 2.60 GHz Intel core i7 CPU and Intel UHD Graphics 630 4 GB GPU.

# 6 Conclusion

This work is the first step in making education accessible to all. With the world going increasingly online, education is now more global than ever before in history. The hope and end goal is to contribute to this success with this system.

This system creates a set of readable instructions that are much more accessible and less re-source intensive than videos. The many advantages of such a system will be most felt in places with low internet connectivity, and for longer videos with many steps and sub steps. Based on the results of the first iteration, this system can be extended to other classes of tutorial videos. The accuracy of recognition can also be exponentially improved with each iteration.

As a part of future work, the authors intend to apply this system to all kinds of tutorial videos. The authors also aspire to make this system multilingual, thereby providing unfettered access to tutorial videos globally. Using advanced computing resources such as a dedicated Graphical Processing Unit (GPU), the accuracy of real-time text and action recognition can be increased manifold. This is due to the fact that the model can be trained on a larger data set and for many more epochs using a GPU. With higher computing power and a more diverse data set, the accuracy and efficiency of this model, and the ease of extension to other classes of videos will increase exponentially.
# 7 References

1. Karan Goel and Emma Brunskill. 2018. Unsupervised learning of procedures from demonstration videos.

2. Chengxu Zhuang, Tianwei She, Alex Andonian, Max Sobol Mark, and Daniel Yamins. 2020. Unsupervised learning from video with deep neural embeddings. In *Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition*, pages 9563–9572.

3. Tengda Han, Weidi Xie, and Andrew Zisserman. 2019. Video representation learning by dense predictive coding. In *Proceedings of the IEEE International Conference on Computer Vision Workshops*, pages 0–0.

4. Thomas Kipf, Yujia Li, Hanjun Dai, Vinicius Zambaldi, Alvaro Sanchez-Gonzalez, Edward Grefenstette, Push meet Kohli, and Peter Battaglia. 2019. Compile: Compositional imitation learning and execution. In *International Conference on Machine Learning*, pages 3418–3428. PMLR.

5. Zhe Cao, Gines Hidalgo, Tomas Simon, Shih-En Wei, and Yaser Sheikh. 2019. Openpose: Realtime multi-person 2d pose estimation using part affinity fields.

6. Nicolai Wojke, Alex Bewley, and Dietrich Paulus. 2017. Simple online and realtime tracking with a deep association metric.

7. https://github.com/arunimasundar/Supervised-Learning-of-Procedures/tree/master/dataset

8. https://github.com/CMU-Perceptual-Computing-Lab/openpose

9. Karen Simonyan and Andrew Zisserman. 2015. Very deep convolutional networks for large-scale image recognition.

10. https://pypi.org/project/opencv-python/

11. https://pypi.org/project/pytesseract/

12. https://www.mathworks.com/help/images/ref/ssim.html

13. https://github.com/arunimasundar/Supervised-Learning-of-Procedures