100% found this document useful (1 vote)
22 views

Instant download Building Computer Vision Applications Using Artificial Neural Networks: With Step-by-Step Examples in OpenCV and TensorFlow with Python 1st Edition Shamshad Ansari pdf all chapter

TensorFlow

Uploaded by

waeritong55
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
22 views

Instant download Building Computer Vision Applications Using Artificial Neural Networks: With Step-by-Step Examples in OpenCV and TensorFlow with Python 1st Edition Shamshad Ansari pdf all chapter

TensorFlow

Uploaded by

waeritong55
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download Full Version ebook - Visit ebookmeta.

com

Building Computer Vision Applications Using


Artificial Neural Networks: With Step-by-Step
Examples in OpenCV and TensorFlow with Python 1st
Edition Shamshad Ansari
https://ebookmeta.com/product/building-computer-vision-
applications-using-artificial-neural-networks-with-step-by-
step-examples-in-opencv-and-tensorflow-with-python-1st-
edition-shamshad-ansari/

OR CLICK HERE

DOWLOAD NOW

Discover More Ebook - Explore Now at ebookmeta.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

Building Computer Vision Applications Using Artificial


Neural Networks, 2nd Edition Shamshad Ansari

https://ebookmeta.com/product/building-computer-vision-applications-
using-artificial-neural-networks-2nd-edition-shamshad-ansari/

ebookmeta.com

Learn OpenCV with Python by Examples Implement Computer


Vision Algorithms Provided by OpenCV with Python for Image
Processing Object Detection and Machine Learning 2nd
Edition James Chen
https://ebookmeta.com/product/learn-opencv-with-python-by-examples-
implement-computer-vision-algorithms-provided-by-opencv-with-python-
for-image-processing-object-detection-and-machine-learning-2nd-
edition-james-chen/
ebookmeta.com

Learn OpenCV with Python by Examples 2nd Edition James


Chen

https://ebookmeta.com/product/learn-opencv-with-python-by-
examples-2nd-edition-james-chen/

ebookmeta.com

Building REST APIs with Flask: Create Python Web Services


with MySQL Kunal Relan

https://ebookmeta.com/product/building-rest-apis-with-flask-create-
python-web-services-with-mysql-kunal-relan/

ebookmeta.com
French Verb Tenses, Premium 4th Edition Trudie Booth

https://ebookmeta.com/product/french-verb-tenses-premium-4th-edition-
trudie-booth/

ebookmeta.com

A Filming Fiasco 1st Edition Lisa Mullarkey

https://ebookmeta.com/product/a-filming-fiasco-1st-edition-lisa-
mullarkey/

ebookmeta.com

Starting Out with Java From control structures through


Objects 7th Edition Tony Gaddis

https://ebookmeta.com/product/starting-out-with-java-from-control-
structures-through-objects-7th-edition-tony-gaddis/

ebookmeta.com

Disability Gender and Violence over the Life Course Global


Perspectives and Human Rights Approaches 1st Edition
Sonali Shah (Editor)
https://ebookmeta.com/product/disability-gender-and-violence-over-the-
life-course-global-perspectives-and-human-rights-approaches-1st-
edition-sonali-shah-editor/
ebookmeta.com

Dinosaurs A Concise Natural History 4th Edition David E.


Fastovsky

https://ebookmeta.com/product/dinosaurs-a-concise-natural-history-4th-
edition-david-e-fastovsky/

ebookmeta.com
None of This is True 1st Edition Lisa Jewell

https://ebookmeta.com/product/none-of-this-is-true-1st-edition-lisa-
jewell/

ebookmeta.com
Building Computer
Vision Applications
Using Artificial Neural
Networks
With Step-by-Step Examples in
OpenCV and TensorFlow with Python

Shamshad Ansari

www.allitebooks.com
Building Computer Vision
Applications Using
Artificial Neural Networks
With Step-by-Step Examples
in OpenCV and TensorFlow
with Python

Shamshad Ansari

www.allitebooks.com
Building Computer Vision Applications Using Artificial Neural Networks: With
Step-by-Step Examples in OpenCV and TensorFlow with Python
Shamshad Ansari
Centreville, VA, USA

ISBN-13 (pbk): 978-1-4842-5886-6 ISBN-13 (electronic): 978-1-4842-5887-3


https://doi.org/10.1007/978-1-4842-5887-3

Copyright © 2020 by Shamshad Ansari


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the
trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not
identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Celestin Suresh John
Development Editor: Matthew Moodie
Coordinating Editor: Aditee Mirashi
Cover designed by eStudioCalamar
Cover image designed by Pixabay
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-
sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member
(owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a
Delaware corporation.
For information on translations, please e-mail rights@apress.com, or visit www.apress.com/
rights-permissions.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and
licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales
web page at www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available to
readers on GitHub via the book’s product page, located at www.apress.com/978-1-4842-5886-6. For more
detailed information, please visit www.apress.com/source-code.
Printed on acid-free paper

www.allitebooks.com
In God we trust.
To my wonderful parents, Abdul Samad and
Nazhat Parween, who always corrected my mistakes and
raised me to become a good person.
To my lovely wife, Shazia, and our two beautiful daughters,
Dua and Erum. Without their love and support, this book
would not have been possible.

www.allitebooks.com
Table of Contents
About the Author�����������������������������������������������������������������������������������������������������xv

About the Technical Reviewer�������������������������������������������������������������������������������xvii


Acknowledgments��������������������������������������������������������������������������������������������������xix

Introduction������������������������������������������������������������������������������������������������������������xxi

Chapter 1: Prerequisites and Software Installation�������������������������������������������������� 1


Python and PIP������������������������������������������������������������������������������������������������������������������������������ 2
Installing Python and PIP on Ubuntu���������������������������������������������������������������������������������������� 2
Installing Python and PIP on macOS���������������������������������������������������������������������������������������� 2
Installing Python and PIP on CentOS 7������������������������������������������������������������������������������������ 3
Installing Python and PIP on Windows������������������������������������������������������������������������������������� 3
virtualenv�������������������������������������������������������������������������������������������������������������������������������������� 3
Installing and Activating virtualenv����������������������������������������������������������������������������������������� 4
TensorFlow������������������������������������������������������������������������������������������������������������������������������������ 5
Installing TensorFlow��������������������������������������������������������������������������������������������������������������� 5
PyCharm IDE��������������������������������������������������������������������������������������������������������������������������������� 5
Installing PyCharm������������������������������������������������������������������������������������������������������������������ 6
Configuring PyCharm to Use virtualenv����������������������������������������������������������������������������������� 6
OpenCV����������������������������������������������������������������������������������������������������������������������������������������� 7
Working with OpenCV�������������������������������������������������������������������������������������������������������������� 7
Installing OpenCV4 with Python Bindings�������������������������������������������������������������������������������� 8
Additional Libraries����������������������������������������������������������������������������������������������������������������������� 8
Installing SciPy������������������������������������������������������������������������������������������������������������������������ 8
Installing Matplotlib����������������������������������������������������������������������������������������������������������������� 8

www.allitebooks.com
Table of Contents

Chapter 2: Core Concepts of Image and Video Processing��������������������������������������� 9


Image Processing������������������������������������������������������������������������������������������������������������������������� 9
Image Basics������������������������������������������������������������������������������������������������������������������������������� 10
Pixels������������������������������������������������������������������������������������������������������������������������������������������ 10
Pixel Color������������������������������������������������������������������������������������������������������������������������������ 10
Coordinate Systems�������������������������������������������������������������������������������������������������������������������� 11
Python and OpenCV Code to Manipulate Images������������������������������������������������������������������������ 14
Program: Loading, Exploring, and Showing an Image����������������������������������������������������������� 15
Program: OpenCV Code to Access and Manipulate Pixels����������������������������������������������������� 17
Drawing��������������������������������������������������������������������������������������������������������������������������������������� 18
Drawing a Line on an Image�������������������������������������������������������������������������������������������������� 18
Drawing a Rectangle on an Image���������������������������������������������������������������������������������������� 21
Drawing a Circle on an Image����������������������������������������������������������������������������������������������� 25
Summary������������������������������������������������������������������������������������������������������������������������������������ 26

Chapter 3: Techniques of Image Processing����������������������������������������������������������� 27


Transformation���������������������������������������������������������������������������������������������������������������������������� 27
Resizing��������������������������������������������������������������������������������������������������������������������������������� 28
Translation����������������������������������������������������������������������������������������������������������������������������� 32
Rotation��������������������������������������������������������������������������������������������������������������������������������� 34
Flipping���������������������������������������������������������������������������������������������������������������������������������� 37
Cropping�������������������������������������������������������������������������������������������������������������������������������� 40
Image Arithmetic and Bitwise Operations����������������������������������������������������������������������������������� 42
Addition��������������������������������������������������������������������������������������������������������������������������������� 43
Subtraction���������������������������������������������������������������������������������������������������������������������������� 46
Bitwise Operations���������������������������������������������������������������������������������������������������������������� 52
Masking�������������������������������������������������������������������������������������������������������������������������������������� 58
Splitting and Merging Channels�������������������������������������������������������������������������������������������������� 61
Noise Reduction Using Smoothing and Blurring������������������������������������������������������������������������� 64
Mean Filtering or Averaging�������������������������������������������������������������������������������������������������� 64
Gaussian Filtering������������������������������������������������������������������������������������������������������������������ 67

vi
Table of Contents

Median Blurring��������������������������������������������������������������������������������������������������������������������� 69
Bilateral Blurring������������������������������������������������������������������������������������������������������������������� 71
Binarization with Thresholding��������������������������������������������������������������������������������������������������� 74
Simple Thresholding�������������������������������������������������������������������������������������������������������������� 74
Adaptive Thresholding����������������������������������������������������������������������������������������������������������� 77
Otsu’s Binarization����������������������������������������������������������������������������������������������������������������� 79
Gradients and Edge Detection����������������������������������������������������������������������������������������������������� 82
Sobel Derivatives (cv2.Sobel() Function)������������������������������������������������������������������������������� 82
Laplacian Derivatives (cv2.Laplacian() Function)������������������������������������������������������������������ 87
Canny Edge Detection����������������������������������������������������������������������������������������������������������� 89
Contours�������������������������������������������������������������������������������������������������������������������������������������� 90
Drawing Contours������������������������������������������������������������������������������������������������������������������ 93
Summary������������������������������������������������������������������������������������������������������������������������������������ 94

Chapter 4: Building a Machine Learning–Based Computer Vision System������������� 95


Image Processing Pipeline���������������������������������������������������������������������������������������������������������� 95
Feature Extraction����������������������������������������������������������������������������������������������������������������������� 97
How to Represent Features��������������������������������������������������������������������������������������������������� 98
Color Histogram��������������������������������������������������������������������������������������������������������������������� 99
Histogram Equalizer������������������������������������������������������������������������������������������������������������ 106
GLCM����������������������������������������������������������������������������������������������������������������������������������� 109
HOGs������������������������������������������������������������������������������������������������������������������������������������ 115
LBP�������������������������������������������������������������������������������������������������������������������������������������� 121
Feature Selection���������������������������������������������������������������������������������������������������������������������� 128
Filter Method����������������������������������������������������������������������������������������������������������������������� 128
Wrapper Method������������������������������������������������������������������������������������������������������������������ 129
Embedded Method�������������������������������������������������������������������������������������������������������������� 130
Model Training��������������������������������������������������������������������������������������������������������������������������� 130
How to Do Machine Learning���������������������������������������������������������������������������������������������� 130
Supervised Learning������������������������������������������������������������������������������������������������������������ 131
Unsupervised Learning�������������������������������������������������������������������������������������������������������� 132

vii
Table of Contents

Model Deployment�������������������������������������������������������������������������������������������������������������������� 133


Summary���������������������������������������������������������������������������������������������������������������������������������� 135

Chapter 5: Deep Learning and Artificial Neural Networks������������������������������������ 137


Introduction to Artificial Neural Networks��������������������������������������������������������������������������������� 137
Perceptron��������������������������������������������������������������������������������������������������������������������������� 140
Multilayer Perceptron���������������������������������������������������������������������������������������������������������� 141
What Is Deep Learning?������������������������������������������������������������������������������������������������������ 143
Deep Learning or Multilayer Perceptron Architecture��������������������������������������������������������� 143
Activation Functions������������������������������������������������������������������������������������������������������������ 146
Feedforward������������������������������������������������������������������������������������������������������������������������ 154
Error Function���������������������������������������������������������������������������������������������������������������������� 154
Optimization Algorithms������������������������������������������������������������������������������������������������������ 158
Backpropagation����������������������������������������������������������������������������������������������������������������� 164
Introduction to TensorFlow�������������������������������������������������������������������������������������������������������� 165
TensorFlow Installation�������������������������������������������������������������������������������������������������������� 166
How to Use TensorFlow������������������������������������������������������������������������������������������������������� 166
Tensor���������������������������������������������������������������������������������������������������������������������������������� 166
Variable�������������������������������������������������������������������������������������������������������������������������������� 167
Constant������������������������������������������������������������������������������������������������������������������������������ 167
Our First Computer Vision Model with Deep Learning: Classification of Handwritten Digits���� 169
Model Evaluation����������������������������������������������������������������������������������������������������������������������� 178
Overfitting���������������������������������������������������������������������������������������������������������������������������� 179
Hyperparameters���������������������������������������������������������������������������������������������������������������������� 184
TensorBoard������������������������������������������������������������������������������������������������������������������������ 185
Experiments for Hyperparameter Tuning����������������������������������������������������������������������������� 185
Saving and Restoring Model����������������������������������������������������������������������������������������������������� 189
Save Model Checkpoints During Training���������������������������������������������������������������������������� 190
Manually Save Weights������������������������������������������������������������������������������������������������������� 193
Load the Saved Weights and Retrain the Model������������������������������������������������������������������ 193
Saving the Entire Model������������������������������������������������������������������������������������������������������ 193

viii
Table of Contents

Retraining the Existing Model���������������������������������������������������������������������������������������������� 194


Using a Trained Model in Applications��������������������������������������������������������������������������������� 194
Convolution Neural Network����������������������������������������������������������������������������������������������������� 194
Architecture of CNN������������������������������������������������������������������������������������������������������������� 195
How Does CNN Work����������������������������������������������������������������������������������������������������������� 196
Summary of CNN Concepts������������������������������������������������������������������������������������������������� 201
Training a CNN Model: Pneumonia Detection from Chest X-rays���������������������������������������� 202
Examples of Popular CNNs�������������������������������������������������������������������������������������������������� 213
Summary����������������������������������������������������������������������������������������������������������������������������� 217

Chapter 6: Deep Learning in Object Detection������������������������������������������������������ 219


Object Detection������������������������������������������������������������������������������������������������������������������������ 219
Intersection Over Union������������������������������������������������������������������������������������������������������������� 220
Region-Based Convolutional Neural Network��������������������������������������������������������������������������� 222
Fast R-CNN������������������������������������������������������������������������������������������������������������������������������� 224
Faster R-CNN���������������������������������������������������������������������������������������������������������������������������� 225
Region Proposal Network���������������������������������������������������������������������������������������������������� 226
Fast R-CNN�������������������������������������������������������������������������������������������������������������������������� 227
Mask R-CNN������������������������������������������������������������������������������������������������������������������������������ 227
Backbone����������������������������������������������������������������������������������������������������������������������������� 228
RPN�������������������������������������������������������������������������������������������������������������������������������������� 229
Output Head������������������������������������������������������������������������������������������������������������������������� 229
What Is the Significance of the Masks?������������������������������������������������������������������������������ 230
Mask R-CNN in Human Pose Estimation����������������������������������������������������������������������������� 230
Single-Shot Multibox Detection������������������������������������������������������������������������������������������������ 231
SSD Network Architecture��������������������������������������������������������������������������������������������������� 232
Training�������������������������������������������������������������������������������������������������������������������������������� 235
SSD Results������������������������������������������������������������������������������������������������������������������������� 238
YOLO������������������������������������������������������������������������������������������������������������������������������������������ 238
YOLO Network Design���������������������������������������������������������������������������������������������������������� 240
Limitations of YOLO������������������������������������������������������������������������������������������������������������������� 241

ix
Table of Contents

YOLO9000 or YOLOv2����������������������������������������������������������������������������������������������������������� 241


YOLOv3�������������������������������������������������������������������������������������������������������������������������������� 244
Comparison of Object Detection Algorithms����������������������������������������������������������������������������� 247
Comparison of Architecture������������������������������������������������������������������������������������������������� 247
Comparison of Performance������������������������������������������������������������������������������������������������ 248
Training Object Detection Model Using TensorFlow������������������������������������������������������������������ 249
TensorFlow on Google Colab with GPU�������������������������������������������������������������������������������� 250
Detecting Objects Using Trained Models����������������������������������������������������������������������������������� 274
Installing TensorFlow’s models Project������������������������������������������������������������������������������� 274
Code for Object Detection���������������������������������������������������������������������������������������������������� 277
Training a YOLOv3 Model for Object Detection�������������������������������������������������������������������������� 290
Installing the Darknet Framework��������������������������������������������������������������������������������������� 291
Downloading Pre-trained Convolutional Weights���������������������������������������������������������������� 292
Downloading an Annotated Oxford-IIIT Pet Dataset������������������������������������������������������������� 292
Preparing the Dataset���������������������������������������������������������������������������������������������������������� 293
Configuring the Training Input��������������������������������������������������������������������������������������������� 297
Configuring the Darknet Neural Network���������������������������������������������������������������������������� 298
Training a YOLOv3 Model����������������������������������������������������������������������������������������������������� 299
How Long the Training Should Run�������������������������������������������������������������������������������������� 301
Final Model�������������������������������������������������������������������������������������������������������������������������� 301
Detecting Objects Using a Trained YOLOv3 Model��������������������������������������������������������������������� 302
Installing Darknet to the Local Computer���������������������������������������������������������������������������� 302
Python Code for Object Detection���������������������������������������������������������������������������������������� 303
Summary���������������������������������������������������������������������������������������������������������������������������������� 307

Chapter 7: Practical Example: Object Tracking in Videos������������������������������������� 309


Preparing the Working Environment����������������������������������������������������������������������������������������� 310
Reading a Video Stream������������������������������������������������������������������������������������������������������������ 312
Loading the Object Detection Model����������������������������������������������������������������������������������������� 314
Detecting Objects in Video Frames������������������������������������������������������������������������������������������� 315
Creating a Unique Identity for Objects Using dHash����������������������������������������������������������������� 317
Using the Hamming Distance to Determine Image Similarity��������������������������������������������������� 319

x
Table of Contents

Object Tracking������������������������������������������������������������������������������������������������������������������������� 319


Displaying a Live Video Stream in a Web Browser�������������������������������������������������������������������� 322
Installing Flask�������������������������������������������������������������������������������������������������������������������� 322
Flask Directory Structure���������������������������������������������������������������������������������������������������� 322
HTML for Displaying a Video Stream����������������������������������������������������������������������������������� 323
Flask to Load the HTML Page���������������������������������������������������������������������������������������������� 324
Flask to Serve the Video Stream����������������������������������������������������������������������������������������� 324
Running the Flask Server���������������������������������������������������������������������������������������������������� 325
Putting It All Together���������������������������������������������������������������������������������������������������������������� 325
Summary���������������������������������������������������������������������������������������������������������������������������������� 336

Chapter 8: Practical Example: Face Recognition�������������������������������������������������� 337


FaceNet������������������������������������������������������������������������������������������������������������������������������������� 338
FaceNet Neural Network Architecture��������������������������������������������������������������������������������� 338
Training a Face Recognition Model������������������������������������������������������������������������������������������� 344
Checking Out FaceNet from GitHub������������������������������������������������������������������������������������� 345
Dataset�������������������������������������������������������������������������������������������������������������������������������� 345
Downloading VGGFace2 Data���������������������������������������������������������������������������������������������� 347
Data Preparation������������������������������������������������������������������������������������������������������������������ 349
Model Training��������������������������������������������������������������������������������������������������������������������� 351
Evaluation���������������������������������������������������������������������������������������������������������������������������� 353
Developing a Real-Time Face Recognition System������������������������������������������������������������������� 354
Face Detection Model���������������������������������������������������������������������������������������������������������� 354
Classifier for Face Recognition�������������������������������������������������������������������������������������������� 355
Summary���������������������������������������������������������������������������������������������������������������������������������� 360

Chapter 9: Industrial Application: Real-Time Defect Detection in Industrial


Manufacturing������������������������������������������������������������������������������������������������������ 361
Real-Time Surface Defect Detection System���������������������������������������������������������������������������� 362
Dataset�������������������������������������������������������������������������������������������������������������������������������� 362
Google Colab Notebook������������������������������������������������������������������������������������������������������� 364
Data Transformation������������������������������������������������������������������������������������������������������������ 365
Training the SSD Model������������������������������������������������������������������������������������������������������� 374

xi
Table of Contents

Exporting the Model������������������������������������������������������������������������������������������������������������ 377


Model Evaluation����������������������������������������������������������������������������������������������������������������� 378
Prediction���������������������������������������������������������������������������������������������������������������������������� 379
Real-Time Defect Detector�������������������������������������������������������������������������������������������������� 380
Image Annotations�������������������������������������������������������������������������������������������������������������������� 380
Installing VoTT��������������������������������������������������������������������������������������������������������������������� 381
Create Connections������������������������������������������������������������������������������������������������������������� 382
Create a New Project����������������������������������������������������������������������������������������������������������� 383
Create Class Labels������������������������������������������������������������������������������������������������������������� 384
Label the Images����������������������������������������������������������������������������������������������������������������� 385
Export Labels����������������������������������������������������������������������������������������������������������������������� 386
Summary���������������������������������������������������������������������������������������������������������������������������������� 387

Chapter 10: Computer Vision Modeling on the Cloud������������������������������������������� 389


TensorFlow Distributed Training������������������������������������������������������������������������������������������������ 390
What Is Distributed Training?����������������������������������������������������������������������������������������������� 390
TensorFlow Distribution Strategy���������������������������������������������������������������������������������������� 393
TF_CONFIG: TensorFlow Cluster Configuration�������������������������������������������������������������������� 398
Example Code of Distributed Training with a Parameter Server����������������������������������������������� 400
Steps for Running Distributed Training on the Cloud���������������������������������������������������������������� 404
Distributed Training on Google Cloud���������������������������������������������������������������������������������������� 406
Signing Up for GCP Access�������������������������������������������������������������������������������������������������� 406
Creating a Google Cloud Storage Bucket����������������������������������������������������������������������������� 407
Creating the GCS Bucket from the Web UI��������������������������������������������������������������������������� 407
Creating the GCS Bucket from the Cloud Shell�������������������������������������������������������������������� 409
Launching GCP Virtual Machines����������������������������������������������������������������������������������������� 410
SSH to Log In to Each VMs�������������������������������������������������������������������������������������������������� 414
Uploading the Code for Distributed Training or Cloning the GitHub Repository������������������� 415
Installing Prerequisites and TensorFlow������������������������������������������������������������������������������ 415
Running Distributed Training����������������������������������������������������������������������������������������������� 416
Distributed Training on Azure���������������������������������������������������������������������������������������������������� 417

xii
Table of Contents

Creating a VM with Multiple GPUs on Azure������������������������������������������������������������������������ 418


Installing GPU Drivers and Libraries������������������������������������������������������������������������������������ 422
Creating virtualenv and Installing TensorFlow��������������������������������������������������������������������� 424
Implementing MirroredStrategy������������������������������������������������������������������������������������������ 424
Running Distributed Training����������������������������������������������������������������������������������������������� 425
Distributed Training on AWS������������������������������������������������������������������������������������������������������ 428
Horovod������������������������������������������������������������������������������������������������������������������������������� 428
How to Use Horovod������������������������������������������������������������������������������������������������������������ 429
Creating a Horovod Cluster on AWS������������������������������������������������������������������������������������� 433
Installing Horovod���������������������������������������������������������������������������������������������������������������� 440
Running Horovod to Execute Distributed Training��������������������������������������������������������������� 441
Summary���������������������������������������������������������������������������������������������������������������������������������� 442

Index��������������������������������������������������������������������������������������������������������������������� 443

xiii
About the Author
Shamshad (Sam) Ansari is president and CEO of Accure
Inc., an artificial intelligence automation company that he
founded. He has raised Accure from startup to a sustainable
business by building a winning team and acquiring customers
from across the globe. He has technical expertise in the areas
of computer vision, machine learning, AI, cognitive science,
NLP, and big data. He architected, designed, and developed
the Momentum platform that automates AI solution
development. He is an inventor and has four US patents in the
areas of AI and cognitive computing.
Shamshad previously worked as a senior software engineer with IBM, as VP of
engineering with Orbit Solutions, and as principal architect and director of engineering
with Apixio.

xv
About the Technical Reviewer
James Baldo is an associate professor at George Mason
University in the Volgenau School of Engineering and the
director of the Data Analytics Engineering (DAEN) Program.
His 38 years as a practicing engineer has provided him
with a broad foundation of knowledge and experience
in data analytics and engineering systems. His data
analytics interests span the areas of data engineering, data
science, and data architecture with a focus on data-centric
applications. His software engineering expertise has been
in support of deploying applications to cloud-based environments and microservice
architectures. As director of the DAEN Program, he has been responsible for developing
and coordinating its new online program offering. He holds a BS in chemistry, MS in
chemistry, MS in computer engineering, and PhD in information technology/software
engineering. He enjoys canoeing, hiking, and golf, and he lives in Manassas, Virginia,
with his wife.

xvii
Acknowledgments
I decided to write this book because I wanted to achieve two objectives: build the
computer vision concepts from the ground up to an advanced level, and provide a guide
to apply the concepts in building real-world vision systems. I will demonstrate every
single concept with use cases and code examples. I have organized the topics, connected
the contents to meaningful and practical use cases, and made sure the code was working
and fully tested. It all required my undivided attention, and I could not have done it
without the support of my family. I can’t thank my wife enough for taking care of our two
daughters and keeping them occupied while I was busy writing this book. She turned
this into a positive experience for them and for me: The kids started keeping track of my
progress and celebrated every time I finished a section, subsection, or chapter. In turn,
this gave me tremendous energy and motivation that I thoroughly enjoyed while working
on this book. I just don’t know what magic my wife used to do this.
My life is indebted to Anumati Bhagi and Ashok Bhagi, who are no less than parents
to me; their love and support always motivate me.
This book is a collection of my lifetime experiences that I gained by working with
some of the greatest engineers, data scientists, and business professionals. I would
like to thank all my colleagues at Accure and all the past companies I have worked at. I
sincerely thank all my teachers, professors, and mentors who enlightened me with their
knowledge and wisdom.
It has been a great experience working with the Apress editorial team. Aditee
Marashi, the coordinating editor, has been prompt with her responses to any question
I have had. She has also been instrumental in keeping track of the schedule. Hats off to
her. It’s been awesome working with Mathew Moodie, the development editor. Thank
you, Aditee and Matt.
My special thanks go to John Celestine, the senior editor. He is a thorough,
thoughtful, and fast decision-maker. Thank you, John, for believing in me. Thanks to
Apress for publishing this book.

xix
Acknowledgments

Professor James Baldo was the most valuable contributor to the book. As a technical
reviewer, he executed every single line of code and made sure that they all worked. He
reviewed every single word of the book, cross-checked references, and provided some
key suggestions that made this book much more valuable than I ever imagined. Thank
you, Professor Baldo.
Finally, I would like to thank the readers of this book. I would love to hear from you
all. Please send your comments, suggestions, and questions to ansarisam@gmail.com. As
the technology evolves, some of the code examples of this book may require updating. I
will try my best to keep all the code up-to-date at the book’s GitHub site. I look forward
to hearing from you.

xx
Introduction
For more than 20 years I have had the pleasure of working with some of the greatest
data scientists and computer vision experts. Along the way I have learned a lot,
especially the best practices of building large-scale computer vision systems. In this
book I present the learnings from my own personal experience and the experience of
people I have had opportunities to work with. I also present the work of some of the
greatest contributors and thought leaders of computer vision, even though I have not
had a chance to work with them. I have provided references to their work at appropriate
places throughout the book.
When I hire new engineers and scientists, one of my biggest challenges has been
to provide them with systematic training so that they can start contributing to the
development of vision systems in the shortest possible time. There are a large number of
online resources and books available on various topics related to computer vision, and it
is easy to get lost in the piles of information they present, given that the field of computer
vision is vast and complex. In this book, I attempted to provide a structured and
systematic approach of building the key concepts and working through example code to
develop real-world computer vision systems. I hope this helps you connect the dots as
you read through the chapters. My goal is to keep this book as practical and hands-on as
possible.
This book starts with the introduction of core concepts of computer vision and
provides code examples to aid in the learning of those concepts. The code examples in
the early part of the book are mainly based on OpenCV with Python.
This book also covers the basic concepts of machine learning and gradually develops
the advanced-level concepts of artificial neural networks or deep learning. Every single
concept is followed by working code examples of real-world use cases. All machine
learning–related code examples are written in TensorFlow with Python.
In this book, there are eight real-world use cases of computer vision with working
code. These use cases are from various industries, such as healthcare, security,
surveillance, and manufacturing. I have provided line-by-line explanations to help you

xxi
Introduction

understand the code. There are three chapters dedicated to practical use cases. These
chapters demonstrate how to build the vision systems from the ground up, starting from
image/video acquisition to building a data pipeline, model training, and deployment.
Training state-of-the-art computer vision models requires a lot of hardware
resources. It is desirable and economically beneficial to train computer vision models on
a cloud infrastructure to leverage the latest hardware resources, such as GPUs, and pay-­
as-­you-go cost models. The last chapter, Chapter 10, provides step-by-step instructions
for building machine learning–based computer vision applications on the three popular
cloud infrastructures: Google Cloud Platform, Amazon AWS, and Microsoft Azure.
Though the book develops the concepts from one pixel all the way to model training
on the cloud, it has certain prerequisites. You should have a working knowledge of the
Python programming language. This book is intended to help working professionals,
programmers, data scientists, and undergraduate and graduate students gain practical
knowledge of building computer vision applications using artificial neural networks.

xxii
CHAPTER 1

Prerequisites and
Software Installation
This is a hands-on book that describes how to develop computer vision applications
in the Python programming language. In this book, you will learn how to work with
OpenCV to manipulate images and build machine learning models using TensorFlow.
OpenCV, originally developed by Intel and written in C++, is an open source
computer vision and machine learning library consisting of more than 2,500 optimized
algorithms for working with images and videos. TensorFlow is an open source
framework for high-performance numerical computation and large-scale machine
learning. It is written in C++ and provides native support for GPUs. Python is the most
widely used programming language for developing machine learning applications. It is
designed to work with C++. Both TensorFlow and OpenCV provide Python interfaces
to access their low-level functionality. Although TensorFlow and OpenCV provide
interfaces in other programming languages, such as Java, C++, and MATLAB, we will
use Python as the primary language because of its simplicity and its large community of
support.
The prerequisites for this book are practical knowledge of Python and familiarity
with NumPy and Pandas. The book assumes that you are familiar with built-in data
containers in Python, such as dictionaries, lists, sets, and tuples. Here are some
resources that may be helpful to meet the prerequisites:

• Python: https://www.w3schools.com/python/

• Pandas: https://pandas.pydata.org/docs/getting_started/
index.html
• NumPy: https://numpy.org/devdocs/user/quickstart.html

1
© Shamshad Ansari 2020
S. Ansari, Building Computer Vision Applications Using Artificial Neural Networks,
https://doi.org/10.1007/978-1-4842-5887-3_1
Chapter 1 Prerequisites and Software Installation

Before we go any further, let’s prepare our working environment and set ourselves up
for the exercises we will be doing as we move along. Here we will start by downloading
and installing the required software libraries and packages.

Python and PIP


Python is our main programming language. PIP is a package installer for Python and a
de facto standard for installing and managing Python packages. To set up our working
environment, we will begin by installing Python and PIP on our working computer. The
installation steps depend on the operating system (OS) you are using. Make sure you
follow the instructions for your OS. If you already have Python and PIP installed, ensure
that you are using Python version 3.6 or greater and PIP version 19 or greater. To check
the version number of Python, execute the following command on your terminal:

$ python3 --version

The output of this command should be something like this: Python 3.6.5.
To check the version number of PIP, execute the following command on your
terminal:

$ pip3 --version

This command should show a version number of PIP 3, for example, PIP 19.1.

Installing Python and PIP on Ubuntu


Run the following commands in your Ubuntu terminal:

sudo apt update


sudo apt install python3-dev python3-pip

Installing Python and PIP on macOS


Run the following commands on macOS:

brew update
brew install python

This will install both Python and PIP.


2
Chapter 1 Prerequisites and Software Installation

Installing Python and PIP on CentOS 7


Run the following commands on CentOS 7:

sudo yum install rh-python36


sudo yum groupinstall 'Development Tools'

Installing Python and PIP on Windows


Install the Microsoft Visual C++ 2015 Redistributable Update 3. This comes with Visual
Studio 2015 but can be installed separately by following these steps:

1. Go to the Visual Studio downloads at https://visualstudio.


microsoft.com/vs/older-downloads/.

2. Select Redistributables and Build Tools.

3. Download and install the Microsoft Visual C++ 2015


Redistributable Update 3.

Make sure long paths are enabled on Windows. Here are the instructions to do that:
https://superuser.com/questions/1119883/windows-10-enable-ntfs-long-paths-
policy-option-missing.
Install the 64-bit Python 3 release for Windows from https://www.python.org/
downloads/windows/ (select PIP as an optional feature).
If these installation instructions do not work in your situation, refer to the official
Python documentation at https://www.python.org/.

v irtualenv
virtualenv is a tool to create isolated Python environments. virtualenv creates a directory
containing all the necessary executables to use the packages that a Python project will
need. virtualenv provides the following advantages:

• virtualenv allows you to have two versions of the same library so that
both your programs continue to run. Say you have a program that
requires version 1 of a Python library and another program needs
version 2 of the same library; virtualenv will allow you to run both.

3
Chapter 1 Prerequisites and Software Installation

• virtualenv creates a useful stand-alone and self-contained


environment for your development work that could be utilized for a
production environment without needing to install dependencies.

Next, we will install virtualenv and configure the environment with all the required
software. For the remainder of the book, we will assume that our reference program
dependencies will be contained in this virtualenv.
Install virtualenv using the following PIP command (the command is the same
on all OSs):

$ sudo pip3 install -U virtualenv

This will install virtualenv system-wide.

Installing and Activating virtualenv


First, create a directory where you want to set up virtualenv. I have named this directory
cv (short for “computer vision”).

$ mkdir cv
Then create the virtualenv in this directory, cv
$ virtualenv --system-site-packages -p python3 ./cv

The following is a sample output from running this command (on my MacBook):

Running virtualenv with interpreter /anaconda3/bin/python3


Already using interpreter /anaconda3/bin/python3
Using base prefix '/anaconda3'
New python executable in /Users/sansari/cv/bin/python3
Also creating executable in /Users/sansari/cv/bin/python
Installing setuptools, pip, wheel...
done.

Activate the virtual environment using a shell-specific command.

$ source ./cv/bin/activate  # for sh, bash, ksh, or zsh

When virtualenv is active, your shell prompt is prefixed with (cv). Here’s an
example:

(cv) Shamshads-MacBook-Air:~ sansari$


4
Chapter 1 Prerequisites and Software Installation

Install packages within a virtual environment without affecting the host system
setup. Start by upgrading PIP (make sure you do not run any command as root or sudo
while in virtualenv).

$ pip install --upgrade pip

$ pip list  # show packages installed within the virtual environment

When you are done and you want to exit from virtualenv, do the following:

$ deactivate  # don't exit until you're done with your programming

T ensorFlow
TensorFlow is an open source library for numerical computation and large-scale
machine learning. You will learn more about TensorFlow in subsequent chapters. Let’s
first install it and get it ready for our deep learning exercises.

I nstalling TensorFlow
We will install the latest version of TensorFlow from PyPI (https://pypi.org/project/
tensorflow/). We will install TensorFlow for CPUs. Make sure you are in virtualenv and
run the following command:

(cv) $ pip install --upgrade tensorflow

Test your TensorFlow installation by running this command:

(cv) $ python -c "import tensorflow as tf"

If TensorFlow is successfully installed, the output should not show any errors.

P
 yCharm IDE
You can use your favorite IDE for writing and managing Python code, but for the purpose
of this book, we will use the community version of PyCharm, a Python IDE.

5
Chapter 1 Prerequisites and Software Installation

Installing PyCharm
Go to the official website of PyCharm at https://www.jetbrains.com/pycharm/
download/#section=linux, select the appropriate operating system, and click Download
(under Community Version). After the download is completed, click the downloaded
package, and follow the on-screen instructions. Here are the direct links for different
operating systems:

• Linux: https://www.jetbrains.com/pycharm/download/download-­
thanks.html?platform=linux&code=PCC

• Mac: https://www.jetbrains.com/pycharm/download/download-­
thanks.html?platform=mac&code=PCC

• Windows: ­https://www.jetbrains.com/pycharm/download/
download-thanks.html?platform=windows&code=PCC

Configuring PyCharm to Use virtualenv


Follow these steps to use the virtualenv, cv, we created earlier:

1. Launch the PyCharm IDE and select File ➤ Settings for Windows
and Linux or select PyCharm ➤ Preferences for macOS.

2. In the Settings/Preferences dialog, select Project <project name> ➤


Project Interpreter.

3. Click the icon and click Add.


4. In the left pane of the Add Python Interpreter dialog, select
Existing Environment.

5. Expand the Interpreter list and select any of the existing


interpreters. Alternatively, click and specify a path to the
Python executable in your file system, for example, /Users/
sansari/cv/bin/python3.6 (see Figure 1-1).
6. Select the checkbox “Make available to all projects,” if you want.

6
Chapter 1 Prerequisites and Software Installation

Figure 1-1. Selecting an interpreter

OpenCV
OpenCV is one of the most popular and widely used libraries for image processing. All
code examples in this book are based on OpenCV 4. Therefore, our installation steps are
for version 4 of OpenCV.

Working with OpenCV


OpenCV is written in C/C++, and because it’s platform dependent, the installation
instructions vary from OS to OS. In other words, OpenCV needs to be built for your
particular platform/OS to run smoothly. We will use Python bindings to call OpenCV for
any image processing needs.
Like any other library, OpenCV is evolving; therefore, if the following installation
instructions do not work in your case, check the official website for the exact
installation process.

7
Chapter 1 Prerequisites and Software Installation

We will take an easy route to install OpenCV 4 and Python 3 bindings using PIP. We
will install the opencv-python-contrib package from PyPI in the virtual environment
that we created previously.
So here we go!

Installing OpenCV4 with Python Bindings


Make sure you are in your virtual environment. Simply change directory to your virtualenv
directory (the cv directory we created previously) and type the following command:

$ source cv/bin/activate

Install OpenCV in a snap using the following command:

$ pip install opencv-contrib-python

Additional Libraries
There are some additional libraries that we will need as we work on some of the
examples. Let’s install and keep them in our virtualenv.

Installing SciPy
Install SciPy with the following:

$ pip install scipy

Installing Matplotlib
Install Matplotlib with the following:

$ pip install matplotlib

Please note that the libraries installed in this chapter are frequently updated. It
is strongly advised to check the official websites for updates, new versions of these
libraries, and the latest installation instructions.

8
CHAPTER 2

Core Concepts of Image


and Video Processing
This chapter introduces the building blocks of an image and describes various methods
to manipulate them. Our learning objectives in this chapter are as follows:

• To understand the smallest unit of an image (a pixel) and how colors


are represented

• To learn how pixels are organized in an image and how to access and
manipulate them

• To draw different shapes, such as lines, rectangles, and circles, on an


image

• To write code in Python and use OpenCV to work with examples to


access and manipulate images

I mage Processing
Image processing is the technique of manipulating a digital image to either get an
enhanced image or extract some useful information from it. In image processing, the
input is an image, and the output may be an image or some characteristics or features
associated with that image. A video is a series of images or frames. Therefore, the
technique of image processing also applies to video processing. In this chapter, I will
explain the core concepts of digital image processing. I will also show you how to work
with images and write code to manipulate them.

9
© Shamshad Ansari 2020
S. Ansari, Building Computer Vision Applications Using Artificial Neural Networks,
https://doi.org/10.1007/978-1-4842-5887-3_2
Chapter 2 Core Concepts of Image and Video Processing

Image Basics
A digital image is an electronic representation of an object/scene or scanned document.
The digitalization of an image means converting it into a series of numbers and storing
these numbers in a computer storage system. Understanding how these numbers are
arranged and how to manipulate them is the primary objective of this chapter. In this
chapter, I will explain what makes an image and how to manipulate it using OpenCV and
Python.

Pixels
Imagine a series of dots arranged in rows and columns, and these dots have different
colors. This is pretty much how an image is formed. The dots that form an image are
called pixels. These pixels are represented by numbers, and the values of the numbers
determine the color of a pixel. Think of an image as a grid of square cells with each cell
consisting of one pixel of a particular color. For example, a 300×400-pixel image means
that the image is organized into a grid of 300 rows and 400 columns. That means our
image has 300×400 = 120,000 pixels.

Pixel Color
A pixel is represented in two ways: grayscale and color.

Grayscale
In a grayscale image, each pixel takes a value between 0 and 255. The value 0 represents
black, and 255 represents white. The values in between are varying shades of gray. The
values close to 0 are darker shades of gray, and values closer to 255 are brighter shades of
gray.

Color
The RGB (which stands for Red, Blue, and Green) color model is one of the most popular
color representations of a pixel. There are other color models, but we will stick to RGB in
this book.

10
Chapter 2 Core Concepts of Image and Video Processing

In the RGB model, each pixel is represented as a tuple of three values, generally
represented as follows: (value for red component, value for green component, value for
blue component). Each of the three colors is represented by integers ranging from 0 to
255. Here are some examples:

(0,0,0) is a black color.

(255,0,0) is a pure red color.

(0,255,0) is a pure green color.

What color is represented by (0,0,255)?


What color is represented by (255,255,255)?
This w3school website (https://www.w3schools.com/colors/colors_rgb.asp) is a
great place to play with different combinations of RGB tuples to explore more patterns.
Explore what color is represented by each of the following tuples:

(0,0,128)

(128,0,128)

(128,128,0)

Let’s try to make yellow. Here is a clue: red and green make yellow. That means a
pure red (255), a pure green (255), and no blue (0) will make yellow. So, our RGB tuple
for yellow is (255,255,0).
Now that we have a good understanding of pixels and their color, let’s understand
how pixels are arranged in an image and how to access them. The following section will
discuss the concept of coordinate systems in image processing.

C
 oordinate Systems
Pixels in an image are arranged in the form of a grid that is made of rows and columns.
Imagine a square grid of eight rows and eight columns. This will form an 8×8 or 64-pixel
image. This may be imagined as a 2D coordinate system in which (0,0) is the top-left
corner. Figure 2-1 shows our example 8×8-pixel image.

11
Discovering Diverse Content Through
Random Scribd Documents
continua in segreto, con l'aiuto e per opera della luna; quando sta
per arrivare, al mattino, il divino Savitar, essa ripiglia il suo tessuto
abbandonato la sera.
Qui evidentemente abbiamo sempre l'aurora, vespertina e mattutina,
vigile e destra all'opera, senza intervento della luna, che, in altri
momenti, appare invece a cucir l'opera, ossia a preparare il tessuto
allo sposo dell'aurora, ossia a dar l'aurora al sole, il sole all'aurora,
come proteggitrice de' matrimonii.
Avendo questa relazione intima il sole e la luna, così intima che si
possano talora identificare (il sole che perde i suoi raggi e il sole che
non li mette ancora fuori rassomiglia all'astro notturno; tanto che,
chi, sull'albeggiare d'un giorno estivo, in tempo di luna piena,
contempli il cielo, veda i due astri l'uno al cospetto dell'altro, alle due
estremità della vôlta celeste, e, se non si orizzonti, non sappia subito
bene distinguerli l'uno dall'altro; io cito qui una mia propria
impressione), alternandosi l'un l'altro, alcune delle loro qualità, e
perciò delle loro forme divine, sono divenute comuni, così che ora
poterono riferirsi al giorno, ora alla notte. Noi vedemmo già, infatti, il
sole Savitar, ossia il sole generatore; la luna come Soma (dalla
stessa radice sû, so, sav che serve per formare la voce Savitar) è un
equivalente, esprime cioè la luna nella sua virtù fecondatrice. E noi
la vedemmo già finqui presiedere ai matrimonii ed ai parti. Il sole
divide i giorni (ed il sole vespertino Bhagas può avere avuto, oltre gli
altri suoi significati, quello proprio etimologico di spartitore, di
distributore) e divide i mesi. Ma ciò fa pure la luna. Anzi la luna ha
fatto anche più. L'antico anno indiano era regolato dalle lunazioni; la
lunazione costituì il mese; messéts è il nome comune che si dà
tuttora in lingua russa al mese e alla luna. La parola mese, mensis,
vale propriamente la misura. La radice sanscrita mâ vale misurare; le
parole mâs, mâsâ, valgono in lingua vedica luna e misura. La
lunazione ed il mese equivalendosi, la luna diventò, oltre la regola,
anche la regolatrice per eccellenza, in ogni ordine delle cose naturali.
Nè è meraviglia che, corrispondendo il r'itu lunare al r'itu muliebre,
poichè la luna pigliava pure il nome dal proprio r'itu periodico, essa
fosse particolarmente invocata dalle donne e ad esse cara, come
quella che, mantenendo i segni della generazione, prometteva la
desiderata fecondità, senza la quale l'uomo primitivo disprezzava la
propria donna, ed aveva diritto di rifiutarla. La radice mâ, che vale
misurare, nel suo primo significato dovette esprimere l'idea di
estendersi; ma l'estendersi è un moltiplicarsi: ecco in qual modo la
radice mâ, che vale misurare, creò la parola mâtra o metro, misura,
e mâsa che vale ancora il medesimo, e la radice mâ che vale
produrre, creò la parola mâtar, la produttrice, la creatrice per
eccellenza, la madre.
Ho detto che il primo significato della radice mâ, onde si svolsero i
significati secondarii di misurare e produrre, fu quello di estendersi.
Vi è un'altra radice che dobbiamo qui esaminare. Questa radice è
man stretta parente di mâ, come il latino mensis è stretto parente,
anzi equivalente di mâsa, come il tedesco mond luna, monat mese e
l'inglese moon, ci richiamano ad un ipotetico primitivo manas che,
secondo l'analogia di mâsa, dovette pure in origine significare
misura, e forse mese. Ma lasciamo l'ipotesi e consideriamo il fatto.
Tra i nomi sanscriti della luna troviamo quello di manasig'a, parola
che varrebbe nato nel manas; tra gli appellativi del Dio Soma, ossia
del Dio Luno nel Rigveda troviamo quello di signore del manas, ossia
manaspati, che ci riaccosta alla nostra luna anumati. Ma il manas è
l'animo; che cosa è l'animo? anemos, quello che si muove; così
dovette essere il manas, nella sua prima espressione, il moto, e poi il
moto misura, il moto regolatore, il moto particolare interno, che
anima e regola, muove e contiene il pensiero e l'affetto dell'uomo, il
desiderio, l'amore, e il divino agitarsi dell'intelletto. Ecco pertanto
spiegato, s'io non erro, il perchè la luna Sinîvâlî, Râkâ ed Anumati,
essendo nata nel manas, e muovendo e regolando il manas fu
immaginata figlia dell'Angiras mobile luminoso, e della Smr'iti o
Çraddhâ, che sono tutte forme del mobile manas. Ecco perchè la
luna anch'essa può riuscire, come la vegliatrice mattutina, una
Minerva, ossia un'ammonitrice, una direttrice degli umani consigli;
ecco, infine, la ragione, per cui, trovando associata l'Angiras con
Manu, presso il quale Indra in un inno vedico viene a bere il Soma,
in Manu ravvisiamo così il sole come la luna. Per noi, Manu prima
che il pensatore, come sarebbe troppo consolante il credere,
considerando che negli Inni vedici è chiamato Manu anche l'uomo,
dovette essere il mobile, e quindi il motore e il regolatore celeste.
Chiamatisi manavas anche gli uomini, nel loro essere mortale, essi
considerarono come il primo de' mortali, come il padre di tutti i
mortali, come il solo scampato dal diluvio universale, il Manu celeste,
onde chiamarono pure sè stessi manug'âs o figli di Manu, di quello
stesso Manu Prag'âpati, dal quale, secondo le genealogie
brâhmaniche, sono discesi tutti gli Dei. Ma in quel Manu celeste essi
non tardarono a ravvisare il pensante, ossia il sapiente, e quindi il
primo sapiente, l'inventor dei riti sacrificali; e, finalmente, nel
periodo brâhmanico, il pensiero stesso, la formula della sapienza, il
primo legislatore indiano, il primo regolatore, distributore della
giustizia, nel quale carattere ritorna Manu a identificarsi col sole
moribondo Yama, e, in tale incontro, con Minos, il primo re di Creta,
progenitore di razza, che discende all'inferno per amministrarvi la
giustizia. Ma, poichè nello scuro inferno è la luna che governa e
regge e giudica, quello stesso Manu che parve confondersi con
Yama, scomparso il sole dall'orizzonte non si perde affatto, ma, come
ho già avvertito, lascia una sua forma per pigliarne un'altra. Di Yama
e di Manu, in quanto gli somiglia, avremo tuttavia a tenere
particolare discorso.
Per ora basterà il ritenere come anche nelle sue forme femminine la
luna vedica abbia preso persona di Dea, e come in questa persona
prevalga la virtù di fecondatrice attribuita alla luna; e finalmente,
come quella che desta l'uomo alla vita materiale, per l'istinto
idealissimo della nostra stirpe, sia pure divenuta la eccitatrice de'
nostri pensieri. E per avere anzi creduto che li eccitasse troppo,
nacque la credenza che i maniaci siano dominati da sinistri influssi
lunari.
Ci resterebbe a considerare la luna sotto i suoi nomi mascolini di
C'andra, C'andramas (ossia il luminoso, e il mese o il misuratore
luminoso), che non ci presenta negli Inni vedici nessuna distinta
persona poetica, di Indu nel suo significato primitivo, probabilmente
il mobile, poi il movente, lo stillante, e quindi la luna stillante, e ciò
che la luna stilla; e di Soma, propriamente il generatore, ma anche
lo spremitore, il traente il succo, e poi il succo stesso. Quindi,
quando leggiamo che gli Dei vengono a bere ora Indu, ora Soma,
intendasi che vengono a bere il succo ambrosiaco che stilla dalla
luna. Noi abbiamo già veduto l'Aditi, la Pr'ithivî, e l'aurora che
posseggono l'ambrosia; ma, per l'equivoco nato tra Indu e Soma
stillanti il succo, e le parole indu e soma che vennero ad esprimere il
succo, è nella luna specialmente che gli Dei vanno a cercare
l'ambrosia, l'amrita, la bevanda immortale. Noi abbiamo già riferita la
leggenda vedica del Dio Indra che concede la bellezza alla fanciulla
brutta, lebbrosa Apalâ, l'aurora vespertina (che nella notte diviene
brutta), perchè questa, discendendo alla sera dalla montagna per
attingere acqua, trovò nella fonte il soma (la luna nel pozzo); e
sapendo quanto Indra fosse avido del soma, lo pregò di scorrere
verso di lui, ossia di errare nel cielo, del quale Indra è signore. Fu già
paragonato il culto dionisiaco ellenico al culto del Soma vedico.
Come Soma è al tempo stesso abbondante di umori inesauribili e
generatore eterno, così il suo culto si congiunse quindi nell'India con
quello del Çiva fallico, accompagnato da libazioni d'un soma
terrestre, un liquore inebbriante, che il professore Haug ebbe
nell'India il raro privilegio di gustare, e che trovò di un sapore
disgustosissimo; nella Grecia abbondanti libazioni di vino
accompagnavano le feste falliche dionisiache. Ma gli Dei che
discendono sopra la terra, non sono l'oggetto del nostro studio
presente.
Nel vedico Soma noi abbiamo espressa, ora l'ambrosia che può
risiedere in più parti, ora la luna che contiene, porta, custodisce
l'ambrosia, e la somministra agli Dei, i quali, bevendola, divengono
immortali, robusti e vittoriosi nelle loro celesti battaglie contro i
mostri; il soma non è solo ambrosia, ma acqua della giovinezza,
acqua della salute, acqua della forza; e però si rappresenta esso
stesso come guerriero sempre vittorioso; la pioggia è soma, la
rugiada dell'aurora è soma, ma più spesso ancora il soma è la pianta
lunare, è il succo della luna, l'erba luminosa celeste, è la luna stessa;
in compagnia di esso, il Dio Indra scaccia dal cielo i mostri; la luna
cresce a misura che i Numi vanno a dissetarsi presso di lei, ossia,
poichè la luna genera gli Dei, a misura che gli Dei luminosi le si
appressano, essa cresce.
LETTURA SESTA.
IL FUOCO.

Il fuoco, Agni (che ritorna nel russo Agonj, nel latino ignis),
quantunque, dopo Indra, sia il Nume vedico più invocato, è uno degli
Dei meno personali dell'Olimpo vedico, la cui sede è più instabile, la
cui forma è meno determinata. Per lo più s'invoca Agni come
elemento fuoco, senza dargli persona; ma, anche quand'esso non
assume una persona distinta, ha sempre un carattere sacro. Sia che
s'accenda nel cielo come sole, come luna, come stella, come aurora,
come fulmine, sia che dalla terra, come vulcano ch'erompe, o dal
legno, come foco domestico e sacrificale, Agni o il fuoco presenta
sempre alla nostra immaginazione un carattere misterioso, che, se
può ancora far qualche impressione sopra di noi avvezzi dal lungo
uso della vita a trascurare i fenomeni più frequenti della natura,
dovette riempir di una profonda maraviglia mista col terrore l'animo
innocente de' padri nostri. Trasportiamoci col pensiero ad un'età,
nella quale a produrre il fuoco domestico non si conosceva altra
industria all'infuori di quella che ricavava scintille dal confregamento
di due legni, chiamati insieme aranî (per la stessa analogia, per cui
bois in francese è il bosco, e ad un tempo stesso il legno). L'uno de'
legni si poneva sotto, l'altro sopra; l'uno era il maschio, l'altro la
femmina; il fuoco simile a fanciullo nasceva dall'arani inferiore. Ce lo
dice molto chiaramente un inno vedico ad Agni (Rigveda, III, 29): «È
questo lo scotimento sopra; è questa la generazione; apportiamo
questa signora delle genti (l'arani inferiore, madre del fuoco, e la
genitrice per eccellenza); agitiamo Agni come una volta. Agni, il ricco
per sè, giace ne' due legni, come il feto ben collocato nelle donne
incinte. Agni è da celebrarsi ogni giorno dagli uomini con laudi e
sacrificii. Poni giù (l'arani superiore) sopra la larga che giace (l'arani
inferiore); essa, subito fecondata, generò il forte Agni.» Questa
immagine materiale di Agni generato come un figlio da due pezzi di
legno, padre e madre, fra loro confricati, ritorna spesso negli Inni
vedici; e nella sua materialità essa è sommamente istruttiva per la
storia delle credenze popolari. Poichè dal fuoco figlio delle legna
(sûnum vanaspatînâm), considerandosi il fuoco vitale come il
generato e quindi generatore per eccellenza, s'immaginò che anche
gli uomini fossero nati dal legno. In Piemonte si dice di fanciulli
ch'essi sono stati trovati in un bosco, sotto una ceppaia, la quale
ritorna nel ceppo e nell'albero di Natale, da cui si fa, con innesto di
elementi cristiani e pagani, nascere, con l'allungarsi dei giorni, dopo
il solstizio d'inverno, il bambino Gesù; [16] l'inno vedico 68º del libro I
del Rigveda ci fa sapere come Agni, ossia il fuoco, è nato come
creatura vivente dal legno secco. [17] Questo legno secco, da cui
nasce il piccolo Agni come fanciullo, risponde bene al nostro ceppo
natalizio. [18] Immaginati i due legni come padre e madre, ed il fuoco
che distrugge il legno, dal quale si sprigiona, era naturale la
rappresentazione di Agni come un figlio parricida e matricida. Il
poeta vedico inorridisce a questo delitto, ed esclama nell'inno 79º
del X libro del Rigveda: «O cielo, o terra, questa verità io dico a voi,
appena nato, il fanciullo mangia i suoi due parenti.» E quindi, con
una ingenuità tutta vedica, ricordandosi che Agni è un Dio, s'umilia
confessando: «io, mortale, non posso comprendere un Dio.» Il
parricidio è un delitto continuo nella natura; senza la morte de' padri
non potrebbero sussistere i figli; Adamo è condannato a morire, dal
giorno in cui egli diviene padre. Gli uomini primitivi fermarono spesso
la loro attenzione sopra questa legge fatale di natura. E, in quanto il
parricidio sia involontario, stabilirono la dottrina del peccato
originale, che divenne poi dogma religioso; stabilirono l'onnipotenza
del fato, per cui il vecchio Giove è spodestato dal nuovo, per cui
Ciro, Edipo, Romolo divengono inevitabilmente parricidi. L'arte
intervenne ora per giustificare l'enormità del parricidio incolpando il
fato, ora ad immaginare i vecchi parenti come crudeli, feroci,
persecutori della gioventù fiorente. Sotto quest'aspetto, il parricida
divenne un liberatore, un salvatore; l'antico apparve cattivo, il
giovine buono; il giovine che atterra l'antico compie un'impresa
gloriosa. Secondo una credenza brâhmanica, il nascimento d'un figlio
in una casa ha il merito di liberare il padre da futuri nascimenti,
pigliando egli sopra di sè, ed espiando egli stesso la colpa originaria
che il padre aveva ereditata. Secondo una tale credenza, la vita era
un male, ogni nuovo nascimento che obbligasse l'essere ad entrare
in un corpo, come in una prigione, si considerava come una
sventura. Finchè non nasceva un figliuolo in una casa, non solo il
padre era minacciato, morendo, di rinascere, ma le anime dei
trapassati erravano senza sedi certe, col pericolo di entrare in
qualche corpo non solo d'uomo, ma di bruto. Nella parola sanscrita
putra, che vale figlio, avvicinata a punya che vale bello, puro (come
pûta), si vide etimologicamente il purificatore (la vera etimologia
della parola è tuttora dubbia). Ma il Mahâbhârata ci offre ancora
della voce putra, scritta spesso puttra, una etimologia singolare. Put
è un appellativo dato ad uno degli inferni indiani; il suffisso tra dà
alla parola il valore di liberatore; onde puttra figlio si spiega come il
liberatore dall'inferno Put. «Poichè il nuovo nato libera il padre
dall'inferno chiamato Put, perciò si chiama Putra.» Nè solo, secondo
il Mahâbhârata, il figlio salva il padre, ma anche i morti maggiori
(pûrvapretân pitâmahân). Il figlio che impedisce al padre di rinascere
ad una vita mortale, considerata come una pena, è un liberatore; il
figlio che viene a pigliare il posto del padre, a liberare sè ed il mondo
dal vecchio padre divenuto insopportabile, è un parricida. Entrato nel
mito il concetto mostruoso di un parricidio, si tentò abbellirlo sempre
più col rappresentare padre e figlio quali nemici fra loro, de' quali il
figlio rappresenta il bene, il padre il male.
Noi abbiamo fin qui veduto generalmente il mito discendere dal cielo
in terra. Ma, a rappresentarlo nel cielo, concorsero, senza dubbio,
immagini della vita terrena. Così, quando troviamo padri e figli nel
cielo, bisogna ammettere che furono dapprima conosciuti i padri e i
figli sopra la terra; quando troviamo nel cielo matrimonii divini,
convien supporre che fossero già conosciuti i matrimonii della terra;
quando ci si rappresenta l'aurora come una ballerina, o come una
bagnante, convien dire che si fossero già vedute sopra la terra
danzatrici e donne bagnanti. Così la nozione di un padre crudele, di
una madre cattiva nel cielo, suppone la probabile conoscenza di
padri crudeli e di madri perverse sopra la terra. Ogni nome che
nasce, suppone necessariamente la conoscenza della cosa che esso
deve esprimere; anzi la parola nome significa, secondo l'etimologia,
nozione, conoscenza (nâman proviene, com'è noto, da g'nâman).
Perciò, quando diciamo che i miti sono nati nel cielo, dobbiamo
soggiungere che vi si produssero per lo più con elementi umani o
terreni già noti all'uomo. Al cielo, al sole, alla luna, all'aurora si
attribuirono qualità proprie di persone umane. Ma il cielo, il sole, la
luna, l'aurora essendo fenomeni soltanto celesti, non si può supporre
che dalla conoscenza d'un cielo, d'un sole, d'una luna, d'un'aurora
terrena siasi raffigurato quindi il cielo nel cielo propriamente detto, il
sole, la luna, l'aurora celesti. Ma il cielo coppa si immagina dopo aver
conosciuta alcuna coppa terrena, l'aurora pastora si immagina sopra
la conoscenza di una pastorella della terra. Il fenomeno è celeste,
ma l'immagine che lo rappresenta, con persona mitica, trae la sua
origine da una nozione della vita umana. Ma, per quanto si riferisce
al fuoco, producendosi il fuoco non meno sopra la terra che nel cielo,
anche senza l'immagine mitica il campo riuscì duplice; la terra come
il cielo è sua sede; tuttavia, per quella tendenza naturale dello spirito
umano a far provenire ogni creazione dal cielo, e a far salire al cielo
ogni creatura, anche il fuoco si suppose disceso sulla terra dal cielo,
ora in forma di raggio solare, ora in forma di fulmine, sebbene
formatosi nel cielo in un modo conforme a quello, con cui solevano
gli uomini produrlo sulla terra.
Nel 5º inno del X libro del Rigveda si dice che, in origine, Agni ossia
il fuoco era e non esisteva ancora; e ch'esso fu il primo nato nell'età
primordiale, Toro ad un tempo e Vacca. Il fuoco vitale si considerò
ora come nato per sè, ora come la prima creazione, contenente per
ciò in sè il maschio e la femmina, necessarii per generare le altre
creature. Ma in che modo il fuoco, quando non si considerò nato per
sè, si è esso generato nel cielo? I creatori del mito non potevano
immaginare per l'origine del fuoco celeste modi diversi da quelli, con
cui si produceva già il fuoco sopra la terra. Se essi avessero potuto
immaginare altri modi, li avrebbero adoperati ne' loro usi terreni, ove
uno dei più solenni pensieri della vita era quello di trovare il fuoco, e,
trovatolo, di conservarlo, onde si capisce perfettamente l'ufficio
solenne che, nell'antichità, avevano le Vestali guardiane del fuoco
sacro. In terra il fuoco si era visto produrre per mezzo di
confregamento. Il confregamento de' corpi accresceva il calore
animale; il confregamento dell'asse della ruota del carro contro la
ruota stessa aveva talora prodotto l'incendio della ruota ne' carri
della terra (e figuratosi il sole come un carro d'oro anche dalle sue
ruote giranti si svolse l'incendio); il confregarsi nella stagione estiva
di un ramo secco d'albero resinoso contro un altro ramo inaridito
aveva provocato l'incendio delle foreste; [19] del pari due pietre
battute l'una contro l'altra avevano sprigionato scintille e destato il
fuoco. Acquistata sopra la terra dagli uomini ariani l'esperienza de'
modi, coi quali si poteva produrre il fuoco, s'immaginò miticamente
che il fuoco si producesse nel cielo in modi conformi. Nel vedere
pertanto come i fulmini nascessero nel cielo nuvoloso,
rappresentatesi le nuvole quali rupi o montagne o alberi
grandeggianti, per l'equivoco delle parole adri, parvata, açman, che
significarono tutte non solo l'albero, la roccia e la montagna, ma
anche la nuvola, con fantasia gigantesca s'immaginò che Indra
muovesse, l'una contro l'altra, due montagne, e nel confregarle l'una
contro l'altra facesse saltar fuori il fuoco ossia il fulmine, e che il
tuono fosse lo strepito prodotto dall'urtarsi delle montagne celesti
spinte da Indra. Perciò mi spiego le parole del 1º inno del II libro del
Rigveda, ove si canta che Indra generò il fuoco fra le due pietre o
roccie (yo açmanov antar agnim g'ag'âna). Negli inni del X libro del
Rigveda, ove Agni si identifica talora col sole, vediamo Indra vincere
il sole; in altri inni Indra rompe una ruota al carro del sole. È
probabile ancora che il fulmine del Dio Indra siasi pure immaginato
come svolto dall'arsione d'una ruota del carro solare. Rappresentossi
pure Agni come figlio di Tvashtar, il fabbro dell'Olimpo vedico, come
vedremo; e, come fabbro, dovea adoperare lo stesso modo nel
produrre il fuoco in cielo che adoperavano i fabbri umani a destare il
fuoco sopra la terra. Altri Dei son dati come padri ad Agni, ed egli
stesso è chiamato Padre degli Dei: ma questa qualità non gli è
specifica, trovandosi attribuita a parecchi altri Numi. Apparendo
come infuocati il sole, la luna, le stelle, il lampo, il fulmine, tutto ciò
che risplende nel cielo del colore del fuoco, e il sole in ispecie prese
nome di Agni, il fuoco per eccellenza, che sta sopra tutti gli altri
fuochi, con ciascuno de' quali può identificarsi e pigliar singolare
persona. Così ancora il rosso di sera, ossia l'aurora vespertina, piglia
nell'Aitareya Brâhmana nome e persona di Agni, dicendosi che il sole
al tramonto scompare entrando in Agni. Gli Agni son quindi
molteplici come i fuochi; ed hanno quindi com'essi diverse sedi, onde
l'appellativo di Bhûrig'anma, ossia dai molti nascimenti dato al Dio
Agni nel Rigveda. La terra ed il cielo sono le sue sedi principali; ma,
come gli stessi Inni vedici c'insegnano, Agni apparve dapprima nel
cielo; disceso dal cielo, i Bhr'igu lo comunicarono agli uomini; le
forme di questa discesa si trovano ampiamente illustrate in un
celebre libro del professor Kuhn (Die Herabkunft des Feuers), al
quale rinvio lo studioso. Disceso dal cielo, la tendenza maggiore del
fuoco fu poi quella di risalire al cielo, e, sia come fuoco domestico,
sia come fuoco sacrificale, sia come fuoco di rogo funebre, di portare
in alto, al cielo, fra gli Dei, le preghiere, i voti, le offerte degli uomini,
e le anime dei trapassati. Il Rigveda ha consacrato il maggior
numero de' suoi inni all'Agni de' sacrificii, rappresentato non solo
come messaggiere tra gli uomini e gli Dei, ma come invitatore degli
Dei a ricevere le oblazioni. In questa parte speciale di invitatore, di
invocatore, di hotar, Agni presiedette ai sacrificii vedici, e fu egli
stesso chiamato, nel primo versetto del Rigveda, sommo sacerdote,
divino ordinatore del sacrificio, invocatore, sommo apportatore di
ricchezze. Non si dimentichi che l'Agni sacrificale si ridestava col
giorno, ossia col riapparir della luce, ufficio della quale è scoprir tutte
le ricchezze, manifestare gli Dei, ossia i luminosi. Nessuna meraviglia
pertanto che l'Agni sacrificale sul far del giorno si celebri non solo
come invocatore, ma come apportatore degli Dei; così che, nel
tempo stesso, in cui egli è messaggiere degli uomini agli Dei, riesce
messaggiere degli Dei agli uomini. Agni è il Dio meno personale, ma
il più famigliare dell'età vedica; tutti lo conoscono, tutti lo
custodiscono nella casa, come loro atithi od ospite, tutti lo svegliano
di giorno in giorno.
A lui si raccomandano gli uomini per ottenere i favori degli Dei; lo
trattano bene per conservarselo amico. Lo nutrono di burro, poichè
la sua nutrice (l'arani) non può dargli latte, come dice un inno
vedico; al suo apparire, il cielo, la terra, le acque, le piante si
rallegrano nell'amicizia di esso; e lo temono nemico. Poichè, quanto
ai devoti è benefico, tanto, nell'ira, egli può riuscir terribile; esso
mugge come toro, rugge come leone, strepita come le onde del
mare, incute spavento come un esercito scatenato; portato dal
vento, divora e consuma ogni cosa, e, dov'è passato, lascia il nero;
ha mille occhi, ha mille corna, artigli aguzzi (onde vien spesso
paragonato a falco), aguzzi denti di ferro, barba e capelli d'oro. Un
inno tuttavia lo dice privo di piedi e privo di testa (apâd açirshâ;
Rigveda, IV, 1); viçvarûpa, ossia onniforme, è pure uno de' suoi
nomi, e come onniforme, ossia capace di pigliare qualsiasi forma a
suo piacere, si comprende con quale specie di religioso terrore da un
popolo ingenuo e primitivo dovesse esser venerato. Tutto
l'Atharvaveda, ossia il Veda di Atharvan ch'è uno de' nomi del fuoco,
è inteso ad onorare il fuoco terreno, e specialmente il fuoco
domestico. Si considera l'Atharvaveda come il Veda più umile, il
quarto Veda, il Veda, per così dire, delle donne, le più tenaci nel
conservare memoria degli usi, dei riti domestici, delle tradizioni, delle
superstizioni popolari, e delle formole relative.
Avendo molta cura del fuoco sacrificale e funebre, il devoto
s'assicura non solo i beni di questa vita, ma, per quanto
apprendiamo da una leggenda del Çatapatha Brâhmana riferita dal
Muir, anche quelli dell'altra. Secondo la leggenda, Agni appena
creato da Prag'âpati, incominciò a bruciare ed a perturbare ogni
cosa. Allora tutte le creature esistenti si mossero per distruggerlo.
Agni ricorse ad un uomo, e gli domandò che lo lasciasse entrare in
esso, dicendogli: «Dopo avermi generato, alimentami; se tu farai
codesto per me nel mondo di qua, io farò lo stesso per te nel mondo
di là.»
Ritorniamo adunque a quel mondo di là, al quale l'Agni del rogo
guida gli uomini, diverso da quel fuoco sotterraneo, il cui solo ufficio
è la consumazione del cadavere celato nella terra. Vi è un Agni vitale
creatore, padre; e vi è un Agni empio, mostruoso, distruggitore. Vi è
un Agni divino. Vi è un Agni demoniaco; l'Agni divino è sapiente,
luminoso ed illuminante, poichè ora precede l'aurora, e sorge con
essa (onde il suo appellativo di Usharbudh); quest'Agni è spesso
chiamato rakshohan, ossia uccisore del mostro; tamohan, ossia
distruggitore della tenebra. Il fuoco che si tiene tuttora acceso la
notte in alcune stalle, per cacciare una specie di demonio che si
teme venga nelle tenebre ad occupare il bestiame, è una
reminiscenza del vedico Agni rakshohan e tamohan. Il mostro ama le
tenebre; lo spauracchio de' bambini discende dalla nera cappa del
camino, quando il fuoco è spento; ma il fuoco che si svolge da'
cimiteri nelle notti estive, il fuoco vulcanico, ed altre emanazioni del
fuoco sotterraneo son considerate come forme fantastiche infernali.
Il fuoco sotterraneo è sempre sinistro, come l'inferno si figura
sotterra, e sotterra si distende il regno de' serpenti, ove impera il
diavolo, il gran serpente.
L'Agni sacrificale apporta al devoto le splendide gioie del giorno;
l'Agni del rogo guida la parte immortale (ag'o bhaga; seguo qui
evidentemente l'interpretazione del Müller e del Muir) del trapassato,
di cui esso, nutrendo sè stesso, consuma le carni, all'eternità degli
splendori celesti; perciò l'Aitareya Brâhmana chiama Agni col nome
di filo, ponte e via, per la quale si va agli Dei (tvam nas tantur uta
setur Agne; tvam panthâh bhavasi devayânah); per esso possono gli
uomini arrivare al cielo, e rallegrarsi in gaudio comune con gli Dei
(tvayâ Agne prishtham vayam âruhema; atha devaih sadhamâdam
madema).
Egli non è solo desiderato dagli uomini, ma anche dagli Dei; ma
mentre gli uomini cercano Agni nel legno, gli Dei lo vanno a cercare
nelle acque, dove Agni sta nascosto. Questa nozione mitica intorno
all'Agni celeste, che abbiamo detto identificarsi spesso nel Rigveda
col sole, è di una importanza capitale. Noi entriamo qui in un mondo
intieramente favoloso. Sappiamo già come nell'età vedica si
producesse il fuoco; e abbiamo veduto che Indra lo trasse fuori dal
cielo nuvoloso nella stessa guisa, con cui lo destavano i padri nostri
sulla terra, ossia per confricazione. L'uso terrestre ci ha giovato per
dichiarare il mito celeste. Ma, come immaginare, con la sola analogia
de' fenomeni osservati sulla terra, il fuoco figlio delle acque, il fuoco
nascosto nelle acque, il fuoco uscente dalle acque, quando sappiamo
che ufficio naturale dell'acqua è quello di spegnere, ma non di
destare il fuoco? Ed eccoci pertanto di nuovo richiamati
esclusivamente ad un Agni celeste; poichè paragonandosi il cielo
nuvoloso e la notte tenebrosa ad un oceano, il fulmine che si
sprigiona dalle nuvole, ed il sole che vien fuori ora dalle nuvole, ora
dalla tenebra notturna, ci rappresentano ad evidenza una forma di
Agni, ossia di fuoco che esce dalle acque, di Agni figlio delle acque,
immagine che sulla terra, presso l'Himalaya, non si poteva in alcuna
maniera riprodurre. Come adunque abbiamo un Agni terreno (che si
fece esso pure derivare dal cielo), venerato particolarmente dagli
uomini, così abbiamo un Agni celeste specialmente caro agli Dei che
lo vanno a cercare nelle acque, ov'egli s'era nascosto, per timore di
subire le stesse sorti dei suoi fratelli maggiori, i quali, secondo la
leggenda vedica, erano morti prima di lui. Ora questo minor fratello
Agni più accorto de' suoi fratelli maggiori che per scampare da morte
si nasconde nelle acque, che scampa nelle acque, ossia dalle acque,
ci compie un mito importante. Noi abbiamo già la nozione di un Agni
fatalmente parricida che distrugge il legno, da cui è nato; così l'Agni
celeste chiamato ora figlio, ora nipote delle acque (apâm napât),
distrugge la materna notte, ossia il paterno oceano tenebroso o
nuvoloso, da cui vien fuori in forma di sole. Agni è dunque parricida
nel cielo come nella terra; ma, per attenerci alla sola nozione vedica,
Agni sta nascosto nelle acque, per timore, se vien fuori, d'esser
messo a morte, come i suoi fratelli maggiori, ossia soli vespertini e
autunnali che hanno preceduto i nuovi soli mattutini e primaverili,
figurati come fratelli minori; gli Dei gli assicurano l'immortalità ed
egli si manifesta, uccidendo mostri d'ogni maniera.
Io non ho bisogno d'indicarvi come l'Agni parricida, riunito con
quest'Agni fanciullo nascosto nelle acque per scampare dalla morte,
debba aiutarci a dichiarare le numerose leggende mitiche ed epiche
riprodotte in più umile forma nelle novelline popolari, nelle quali il
vecchio re, destinato dal fato a perire per mano del figlio o del
nipote, cerca di perderlo appena nato; e lo fa esporre sulle acque,
dalle quali il fanciullo si salva sempre in modo miracoloso, si chiami
Krishna o Karna, si chiami Ciro, si chiami Paride, si chiami Romolo,
ed io oserei ancora aggiungere, si chiami Mosè, si chiami Gesù.
Poichè, nella leggenda biblica di Mosè esposto nel Nilo, salvato dalla
figlia di un vecchio Faraone che un giorno, per cagione di Mosè, si
perderà nel mare, si rappresenta, per quanto vaga, una forma del
mitico parricida. Nella leggenda di Gesù, il re Erode ordina la strage
degl'innocenti; uno solo si salva, Gesù, che tra i suoi miracoli dovrà
più tardi camminare a piedi asciutti sul mare, e che, per recarsi in
Egitto bambino avrà probabilmente rinnovato il miracolo di Mosè
che, dopo essersi salvato dal Nilo, si salvò dal Mar Rosso. Gli
elementi mitici appaiono spostati, ma la loro origine fu
probabilmente una sola. [20]
Ma, per tornare ai nostri soli miti vedici, l'Agni celeste serba pure
alcuni di que' caratteri bellicosi, che sono proprii di quell'eroe mitico
solare, a cui lo avvicinammo. Finch'egli si trova nascosto nelle acque,
gli Dei temono; quando egli appare, viene a liberarli di pena:
distrugge, come dicemmo, i mostri nemici (onde il suo appellativo di
sahasrag'it o vincente mille) e distrugge le nemiche città (onde il suo
appellativo di purandara). Per l'aiuto che Agni ha dato nel cielo agli
Dei, acquistò pure fama di protettore de' guerrieri che combattevano
sopra la terra, e lo invocavano nelle battaglie: assistiti da Agni, i
guerrieri divenivano invincibili; esso doveva bruciare i nemici come
aride legna. Tuttavia Agni non è specialmente nel cielo un guerriero;
lo diviene talora come sole, e somministra come fulmine armi agli
Dei; e, s'io accennai alla sua figura di guerriero, lo feci perchè in
alcuni Inni vedici essa veramente ci appare, e perchè da essa si
giustifica meglio l'interpretazione che abbiamo qui data al mito di
Agni fanciullo nascosto nelle acque per scampare da morte, ossia di
un essere divino che nelle acque scampa miracolosamente da morte,
uno de' miti fondamentali nella mitologia che si congiunge col gran
mito cosmogonico del diluvio, dal quale l'eroe indiano, babilonese [21]
ed ebraico scampano in un modo conforme.
Ma, poichè Agni nel cielo può identificarsi con parecchi altri Dei, la
sua figura mitica non potè riuscire distinta e costante; un versetto
dell'Atharvaveda ci fa sapere come Agni nella sera diviene Varuna,
nel mattino Mitra; muovendo nell'aria, diviene Savitar; splendendo
nel mezzo del cielo, diviene Indra. Questo versetto è molto
importante non solo per quanto ci dice di Agni, ma per la
caratteristica speciale che esso ci dà di altre quattro persone divine
del cielo vedico. Con Indra specialmente Agni si congiunge spesso e
viene invocato; essi vanno a bere insieme; essi cavalcano insieme
come Açvinâu; essi insieme uccidono il mostro Vritra e distruggono
città; talora Agni solo usurpa questi ufficii proprii del Dio Indra, col
quale evidentemente s'identifica. Le specie di Agni son dunque
molte; ma la sua natura generica è quella di fuoco, e come tale
viene spesso celebrato nel cielo, e sempre nella terra. In questo suo
aspetto più modesto, ma continuamente efficace, il poeta vedico lo
adora e gli attribuisce pure essere divino. Agni è col soma sacrificale
il solo Dio che il mortale ha la ventura di poter vedere, toccare, ed
anzi creare a sua posta. Lo vede nascere, lo fa nascere, lo alimenta,
lo colma di cure e di carezze, poichè sente quanta virtù benefica
esso abbia nella vita, come quello che libera l'uomo dal terrore, dalla
tenebra, dai mostri maligni, dal male, porta la luce, la salute, la
sapienza nelle case, il calore ne' corpi, la fecondità nel suolo, la
ricchezza, la gioia presso tutti i buoni. Un Dio così benefico, e, nel
tempo stesso, così trattabile, dovea permettere a' suoi devoti un
linguaggio più confidenziale, più famigliare che essi non potessero
usar con gli altri Dei, men noti, e men facili a lasciarsi accostare.
Perciò in due inni dell'VIII libro del Rigveda si trovano due versetti di
una curiosa ingenuità. Il poeta dice ad Agni: «O Agni, se tu fossi un
mortale, e se io fossi un immortale avente potere d'arricchire un
amico, o figlio invocato della potenza, io non ti abbandonerei
all'imprecazione ed alla miseria; o Agni, il mio inneggiatore non
sarebbe povero, in cattivo stato, miserabile.» E altrove: «O Agni, se
io fossi in te, e se tu fossi in me, i tuoi desiderii sarebbero
soddisfatti.» Le preghiere che si fanno dalle nostre pinzochere, le
quali, picchiandosi il petto, senza farsi male, domandano a Dio, in
un'età nella quale non possono più commetterne, il perdono di tutti i
vecchi loro peccati, e per di più, l'eterna beatitudine del Paradiso,
non sono forse più così ingenue, ma, per compenso, mi sembrano
un poco più indiscrete.
LETTURA SETTIMA.
L'ACQUA.

Noi abbiamo veduto il Dio fuoco, il Dio Agni, il Dio generatore, il


fuoco vitale uscire dalle acque; così, nella cosmogonia biblica,
spiritus Dei ferebatur super aquas. Agni dicemmo pure identificarsi
col sole generatore, ed un inno cosmogonico del Rigveda (X, 72) ci
rappresenta pure il sole che gli Dei fanno nascere dall'Oceano, in cui
stava nascosto (atra samudre âgûlham â sûryam ag'abharttana).
Nella cosmogonia dell'inno 121º del X libro del Rigveda, dedicato ad
Hiranyagarbha o Germe d'oro, leggiamo: «Quando le vaste acque
penetravano il mondo, contenenti il garbha (il germe,
Hiranyagarbha), generanti Agni, allora si svolse l'unico alito vitale
degli Dei.» Il commentatore del Çatapatha Brâhmana Mahîdara [22]
dichiara: «Nel principio questo mondo era tutto acque, solamente
acqua.» [23] Un versetto dell'Atharvaveda compie la rappresentazione
cosmogonica con le seguenti parole: «Le acque generanti un figlio
fecero, nel principio, uscire un germe; di quello appena nato fu
aureo il guscio.» Questo germe nato nelle acque prese pure il nome
di Prag'âpati o signore della generazione, che divenne uno degli
appellativi del Dio Brahman, onde nella cosmogonia brâhmanica, il
Brahmânda od uovo di Brahman nato dalle acque corrispose
perfettamente all'Hiranyagarbha o Germe d'oro della cosmogonia
vedica. Questo uovo d'oro era, senza dubbio, nel primo
concepimento, il sole. Ma la posteriore cosmogonia ne fece l'uovo
cosmico, universale, in cui si comprende, da cui emerge l'universo,
diviso in due parti, cielo e terra, sebbene gli stessi Commentatori
indiani si trovino quindi imbarazzati a riconoscere la seconda metà
dell'uovo nella terra, il cui colore non è d'oro, mentre l'uovo primo
nato è tutto d'oro. Questo imbarazzo de' Commentatori ci giova per
riconoscere nell'uovo primordiale un fenomeno celeste, l'Agni solare
primo generato e primo generatore. Il concepimento di un cosmico
uovo d'oro uscente dalle acque fu poi naturalissimo. Il caos si
rappresenta come tenebroso. La tenebra si rappresenta come un
mare. Dalla tenebra vien fuori la luce, dal mare tenebroso celeste
vien fuori l'uovo d'oro. Quando, in Piemonte, i fanciulli, al cader della
prima pioggia primaverile vanno intorno gridando: pieuv, pieuv, la
galina fa l'oeuv (piove, piove, la gallina fa l'uovo), si saluta in
quell'uovo della gallina celeste la risurrezione del sole. Quando, al
risorgere del sole primaverile, ossia nella Pasqua di Resurrezione, si
mangiano le uova di Pasqua, noi festeggiamo ancora l'uovo d'oro
celeste che ritorna. L'uovo inaugura e fonda la vita; perciò, nell'uso
popolare, ai giovani sposi, il giorno dopo il matrimonio, soglionsi
offrire uova, per ridar loro, come si dice, le forze perdute; è ancora
questo un augurio simbolico per la generazione. L'uovo divenne pure
simbolo del bene. Con l'uovo incominciavano le antiche famiglie
romane i loro banchetti (l'uso è pure rimasto in alcune odierne
famiglie italiane), e poichè terminavano con la mela, nella loro
esclamazione: ab ovo ad malum, l'uovo con cui si principiava
rappresentava il bene, il malum, ossia la mela, venne talora a
rappresentare il male. Dall'essersi immaginato come prima creazione
l'uovo d'oro, dall'incominciarsi il giorno con l'apparire dell'aureo sole
e dell'aurora si figurò molto naturalmente come prima età l'età
dell'oro. Come la primavera è la gioventù dell'anno, così l'aurora od
aurea è la prima età del giorno; e poichè, col levarsi del giorno e
dell'anno tutto rifiorisce, tutto si ravviva, all'età dell'oro fatta
discendere in terra si fece corrispondere un paradiso terrestre. Il
giorno incomincia e finisce con un'aurora; e l'uomo trovando la prima
luce in Oriente, l'ultima in Occidente, immaginò in Oriente, ossia al
principio della vita, un paradiso, ed al fine della vita in Occidente,
ove il sol muore, il giardino dell'Esperidi, ove si trovano le mele
d'oro, un paradiso di beatitudine, ove anco le nostre nonne
cattoliche ci hanno fatto sperare che troveremmo i pomi d'oro. Il
melo delle Esperidi, come l'acqua della vita, si trova custodito da un
drago; Atlante, una specie di Dio dell'oceano, è, come il vedico
Varuna, reggitore del mondo; per i buoni ufficii di Atlante, Ercole,
nella leggenda ellenica, può portar via dal giardino delle Esperidi,
ossia delle occidentali, che hanno sede nell'Oceano occidentale, le
tre mele richieste da Euristeo, il quale, come il solito re leggendario
che ritorna nelle novelline popolari, spinge il giovine eroe ad imprese
straordinarie, nella speranza di perderlo. Così da questa breve
digressione, la quale ha per iscopo di mostrare non tanto l'affinità
de' miti ellenici con gli indiani, che non può oramai più esser messa
in dubbio, ma altra verità non meno schietta, che pure si dura
ancora molta fatica ad ammettere, la presenza ne' miti greco-latini
della maggior parte dei motivi che formano tuttora il fondo delle
nostre novelline popolari, ci riconduce all'acqua mitica, dalla quale il
sole Agni (chiamato pure apâm garbah, ossia germe delle acque;
l'Agni Savitar è chiamato apâm napat) esce nel mattino, e nella
quale il sole Agni si nasconde la sera. Abbiamo già avvertito come lo
stesso oceano mitico si riproduce nel cielo nuvoloso, dal quale Agni il
fuoco esce ora in forma di raggio solare o di sole, ed ora in forma di
fulmine.
Le acque sono, per lo più, celebrate negli Inni vedici al plurale. Dove
il Dio si manifesta come plurale, si comprende come la sua persona
mitica non si possa manifestare viva e distinta. Il carattere è qualche
cosa di singolare che spicca in quanto esso appartenga ai singoli;
dov'esso si estende ai più, perde del suo splendore. Nel plurale i
caratteri singolari non si distinguono, ed i caratteri generali, i quali
soli vi si rivelano, non permettono al mito di balzar fuori vivace,
colorito e potente. Per la stessa ragione rimasero nel Rigveda
alquanto pallide le figure delle Haritas, nelle quali si riconobbero le
Charites, le Grazie elleniche, degli Angiras , forme dell'Agni celeste,
messaggieri, luminosi, delle Apsarâs e dei Gandharvâs che oggi
esamineremo, dei Mârutas che studieremo nella Lettura seguente,
dei Ribhavas che ci occuperanno, quando toccheremo del Dio
Tvashtar, e di alcuni altri collettivi divini. Egli è solamente quando
alcuno di questi plurali si fece singolare e si distinse isolato, che si
venne a noi disegnando una figura caratteristica. Nel 9º inno del X
libro del Rigveda dedicato alle acque, esse vengono salutate come
amorose madri e come dee; quindi si dice: «Il Dio Soma mi ha
detto: trovarsi nelle acque tutti i rimedii ed il fuoco che porta salute
a tutti. O acque, arrecate il rimedio per la guarigione del mio corpo,
e perchè io possa vedere lungamente il sole. E quello che in me
possa esservi di malato, o acque, portate via.» Da un inno del II
libro dell'Atharvaveda apprendiamo come nel preparare un balsamo
per le ferite s'invocava l'acqua della fonte che vien giù dalla
montagna; e insieme con le acque le erbe, aventi esse pure virtù
salutifere. Nello stesso inno si ricordano le upag'îkâs, come quelle
che recano un rimedio dal mare; il professor Weber [24] avvicinò alla
parola upag'îkâ, con molta verosimiglianza, la voce upadîkâ, che
denomina una specie di formiche. Dico con verosimiglianza, poichè il
Dio Pluvio Indra ci si rappresenta egli stesso negli Inni vedici come
formica, e, nel citato inno dell'Atharvaveda, dopo essersi ricordate le
acque e le piante salutifere, si celebra per l'appunto il fulmine
d'Indra che caccia via i mostri. La formica, nel mito, penetra nella
tana del serpente guardiano delle acque, lo morde e lo costringe ad
uscire; quando il serpente si muove, ed esce fuori della propria
caverna, le acque vitali e salutifere si sprigionano. Secondo le nozioni
indiane, quando le formiche mettono insieme le uova, viene la
pioggia; e quando si trovano formicolai, è segno sicuro che l'acqua
sta vicina. Quest'acqua non può essere l'acqua della terra, come il
mare, da cui le formiche devono arrecare il rimedio, non può essere
l'oceano terrestre. Qui ancora, osservandosi come l'adunarsi delle
uova di formiche sopra la terra risponda al tempo delle prime pioggie
primaverili, si vide nel Dio Pluvio Indra una formica celeste: i fulmini
d'Indra penetrarono come formiche nella tana del serpente celeste,
che teneva chiuse le acque, lo ferirono e lo fecero uscire, scatenando
le acque. Così, per aver osservato che il canto del cuculo annunzia la
primavera, il primo scoppio del tuono in primavera si paragonò in
Grecia ed in Roma al canto del cuculo; e Giove Pluvio si rappresentò
esso stesso in forma di cuculo, nella qual forma egli visita
secretamente Giunone; ossia il luminoso, nella scura veste di cuculo
canoro, come Dio tonante, si nasconde nel cielo.
Le acque e le erbe sono, come dicemmo, invocate insieme;
entrambe appaiono salutifere; l'erba e la pianta contengono umori
salutari; si celebra pertanto l'erba medicinale come l'acqua della
salute. L'inno 17º del X libro del Rigveda canta con un solo versetto,
insieme, le erbe lattifere ed il latte delle acque. Il cielo nuvoloso
(come l'oceano luminoso mattutino) si rappresenta ora come vacca
lattifera, ora come fiume che porta latte, ora come erba od albero
stillante latte, e purificante. Payasvatî, ossia lattifera, è chiamata
l'oshadhi, ossia l'erba; payasvatî è pure uno degli appellativi dato alla
riviera. E come tale gli corrisponde perfettamente la Sarasvatî ossia
la fornita di umore, l'acquosa, della quale pure si fece una dea. La
Sarasvatî rappresentò particolarmente il fiume celeste; ed al plurale i
fiumi celesti. Ma de' fiumi celesti la sede è varia: nella notte si ha
particolarmente un Oceano, ma talora un fiume scuro, infernale; nel
mattino e nella sera un fiume dalle onde luminose; nel cielo
nuvoloso ora un oceano, ora molti fiumi. Il fiume celeste per
eccellenza si chiamò ora sindhu, ora sarasvatî; le due parole non
valgono altro che il fiume. Mentre adunque gli Ariani del Peng'ab
occidentale che si trovavano presso il fiume Indo, non conoscendo
ancora altro fiume più vasto, lo chiamarono Sindhu, ossia
semplicemente il fiume, gli Ariani del Peng'ab occidentale
denominavano un altro gran fiume col nome di Sarasvatî, ossia
ancora semplicemente il fiume. Ma nel cielo il Sindhu e la Sarasvatî,
così al plurale come al singolare, espressero in origine la stessa cosa,
la riviera, il fiume celeste, ossia la fiumana notturna, mattutina e
vespertina, e quella che tra i fulmini si rovescia dal cielo sopra la
terra in torrenti di pioggia. [25] Dato un carattere divino ai fiumi del
cielo, anche i fiumi della terra, con quegli stessi nomi che
ritornavano nel mito, divennero sacri. E come nel cielo è un mostro,
un drago che trattiene le acque, finchè il Dio Pluvio non lo fulmina,
così si suppose sopra la terra che alla guardia delle sorgenti de' fiumi
stia un vecchio dragone. Come le acque celesti son celebrate negli
Inni vedici quali divine purificatrici, così la Sarasvatî e la Gangâ
divennero nell'India fiumi, ne' quali chi fosse disceso a bagnarsi non
si mondava soltanto il corpo, ma anche l'anima. Perciò in un inno
funebre dell'Atharvaveda (VIII, 2) s'invocavano come propizie le
acque celesti. Le acque sono, come il fuoco, fecondatrici; dicemmo
nella Lettura precedente del figlio considerato nella credenza indiana
come il liberatore del padre; così l'inno 61º del VI libro del Rigveda ci
rappresenta un devoto Vadhryaçva, il privo di cavallo (ossia,
possibilmente ancora, l'azzoppato, lo zoppo che non può più
andare), il vecchio sole carico di debiti, a cui Sarasvatî dà un figlio di
nome Divodâsa (il sole mattutino) che lo libera dai debiti. La via che
Sarasvatî percorre è detta aurea (come quella dell'aurora e della
nuvola aurea solcata dai fulmini); perciò essa lascia sopra le sue
traccie dell'oro, onde ancora il suo appellativo di hiranyavarttini; in
essa sono tutti i poteri vitali, ed essa viene perciò invocata, affinchè
ponga il germe (garbham dhehi Sarasvatî; Rigveda, X, 184); nè solo
dà forza e vigore vitale agli uomini, ma agli stessi Dei, ad Indra,
nella quale facoltà essa appare, presso il Yag'urveda bianco, come
medichessa celeste (al pari dell'aurora) insieme coi due medici
celesti e con gli Açvinâu, dei quali anzi (come l'aurora) è detta sposa,
e con Varuna, reggitor delle acque (apsu râg'â), col quale concorre a
generare Indra. Nella estrema mitologia vedica, Sarasvatî fu poi
identificata con Vac', [26] la parola, e quindi la parola sacra, la
preghiera, per un facile equivoco di linguaggio. La parola saras, che
entra a formare l'appellativo sarasvatî, non significò soltanto acqua,
ma suono, voce, considerandosi, per comune etimologia, tanto la
voce quanto l'acqua, come la scorrevole. La sarasvatî o fornita di
scorrevolezza valse per lo più l'acquosa, ma talora dovette valer pure
la vocale, la sonante: nâdî o la sonante è il nome più comune che si
dà in sanscrito alla riviera. E tanto più dovette l'equivoco mantenersi,
contemplandosi la Sarasvatî celeste, ossia la nuvola che versa
torrenti di pioggia, ma preceduta dal tuono. Venuta la tonante
Sarasvatî a significare la parola sacra, la preghiera, l'immaginazione
brâhmanica lavorò quindi sopra questa astrazione e l'isolò per modo
dalla sua prima natura, che l'artificiale Sarasvatî brâhmanica non ha
quasi più nulla di comune con la naturale Sarasvatî vedica. Lo stesso
equivoco tra il Sindhu celeste ed il Sindhu terrestre ci si presenta
nell'inno 75º del X libro del Rigveda; ma il Sindhu conserva almeno
sempre la sua natura di fiume. Riconosco ancora in esso il fiume
celeste, quando esso ci si rappresenta come aggiogato ad un bel
carro tirato da cavalli, ed accrescente forza agli eroi nella battaglia. I
fiumi celesti, ossia le acque dell'Oceano celeste, le stesse che danno
il nascimento ad Agni, il quale non solo nasce dalle acque, ma le
protegge (Rigveda, VII, 47), accrescono forza ad Indra ed agli altri
Dei guerrieri. L'onda celeste è perciò chiamata Indrapâna o bevanda
d'Indra. Quanto al bel carro, a cui s'aggiogano, esso è
indubbiamente il carro solare. Al quale proposito giova ripetere come
le acque celesti non appaiono soltanto nell'oceano notturno e
nell'oceano nuvoloso, ma ancora nell'oceano di luce, nel roseo ed
aureo cielo che si presenta il mattino ad Oriente, la sera ad
Occidente. L'inno 47º del VII libro del Rigveda ci fa sapere che il sole
co' suoi raggi stende le acque, alle quali Indra apre una vasta
corrente (Rigveda, VII, 47), le quali il toro o l'eccellente Indra
fulminante divide (Rigveda, VII, 49). Qui abbiamo il cielo nuvoloso.
Ma quando apprendiamo che nelle acque si rallegrano il reggitore
Varuna, Soma, Agni e tutti gli Dei, ci conviene allargare il dominio
delle acque nuvolose, sopra le quali il Dio fulminante impera. Varuna
ci conduce perciò al cielo vespertino, Soma al cielo notturno; Agni
Vâiçvânara ci rappresenta più tosto il cielo mattutino; esso trovasi
perciò invocato, nell'Atharvaveda, come sole, ed invitato a purificare
co' suoi raggi. Così quel figlio delle onde, il quale appare nel cielo
come un uccello rosso, dalle belle piume, che s'accende senza
combustibile, non può essere altro che il sole mattutino. Il figlio delle
acque è chiamato per lo più Agni; nell'inno 30º del X libro, esso
appare col nome di Soma (che s'identifica ora con la Luna, ora col
Sole), e si rallegra con le onde come un uomo insieme con belle
giovani. «Le giovani (canta l'inno) s'inchinano al giovane, quando
desideroso esso si accosta alle desiderose.»
Noi vediamo qui, dunque, le acque muoversi in forma di fanciulle
verso un Dio. Questa prima immagine creò nel cielo tutto un ordine
di esseri, che divennero popolari nella mitologia vedica e brâhmanica
col nome di apsarâs, e nella mitologia greco-latina col nome di ninfe.
Ma, oltre le ninfe, la mitologia greco-latina conosce centauri, fauni,
satiri, che vanno, per lo più, in compagnia delle ninfe; così la
mitologia vedica e brâhmanica dà alle apsare come loro sposi i
gandharvâs. La parola apsarâ parrebbe valere la scorrente sopra le
acque, ossia l'andante sulle acque, etimologia che ci richiamerebbe
alla nuvola scorrente sopra le acque, acquosa; la ninfa e la linfa
avrebbero così fra loro molta analogia. Non debbo tuttavia tacere
come il professor Weber [27] mantenga sempre per la voce apsarâ la
etimologia da lui data nel primo suo saggio, cioè di priva di forma o
psaras, la informe; altre etimologie furono proposte, secondo le quali
l'apsarâ potrebbe valere la insaziabile, e quella dalle belle gote. Noi
preferiamo la prima etimologia, ap-sarâ, ossia l'acquosa, l'andante
nelle acque, come nella voce gandharva vediamo l'andante nei
profumi, e poichè la parola arva (dalla radice r'i, ar, «andare») valse
quindi ad esprimere il cavallo, anche il gandharva, il centauro, prese
forma ora d'ippocentauro, ora di onocentauro. [28] Contro l'etimologia
dottamente grammaticale del professor Weber l'obiezione principale
parmi possa esser questa: la forma femminina più luminosa, più
bella dell'Olimpo vedico, quella che dovea meritare l'onore d'esser
celebrata come la sposa, qual ballerina celeste, come la bella del Dio
(l'aurora è anch'essa un'apsarâ), non potea chiamarsi l'informe. Noi
abbiamo già veduto la bella aurora saltatrice, danzatrice; così, poco
sopra, vedemmo accennate le onde quali giovani piegantisi innanzi al
giovane. Abbiamo qui dunque un primo elementare indizio delle
ninfe celesti, delle apsare saltellanti sulle acque, delle ballerine
dell'Olimpo, che doveano poi assumere tanto splendore nella
mitologia eroica del periodo brâhmanico. Tutto c'induce dunque a
supporre non solo per le apsare brâhmaniche, ma ancora per le
vediche, una forma molto corporea. La natura sensuale del Dio Indra
fu la cagione principale della sua rovina dall'Olimpo vedico: così di
tutti gli Dei l'Atharvaveda ci fa sapere ch'essi hanno primi insegnato
agli uomini i commercii carnali: «Gli Dei dapprima frequentarono le
loro spose toccando i corpi coi corpi.» Anzi un poeta
dell'Atharvaveda fa carico ai divini Gandharvâs di venir talora sulla
terra (come gli Angeli della leggenda biblica) a sedurre le figlie de'
mortali, mentre essi stessi hanno per loro proprie spose nel cielo le
apsare. «Fattosi bello alla vista, il gandharva segue la donna: noi lo
allontaniamo di qua con la sacra formola potente: Vostre spose sono
le apsare, o Gandharvi, voi siete gli sposi; essendo voi immortali,
non dovete andar dietro a donne mortali.» (Atharvaveda, IV, 37.)
Come qui appaiono i gandharvi quali seduttori delle donne mortali,
così, nelle leggende brâhmaniche, appaiono spesso le apsare, come
mandate dagli Dei sopra la terra per distrarre dalla penitenza, con le
loro seduzioni, i devoti. Esse sono, per lo più, le rallegranti; ma
alcuna volta non solo rallegrano, ma inebbriano, e nella ebbrezza
ammolliscono. La loro natura è acquosa (il fuoco è un mascolino,
l'acqua un femminino). Il loro soggiorno prolungato nel cielo porta
l'umidità sopra la terra; onde comprendiamo il motivo, per cui
nell'Atharvaveda si trovano pure scongiuri contro di esse, come
quelle che possono portare l'uomo all'imbecillità, ossia turbarne la
mente, onde il loro appellativo di manomuhas; quando questo non
venga loro dato per la loro relazione intima col gandharva lunare, e
però il turbamento dell'intelletto non sia da attribuirsi all'influsso
della luna sulla pazzia. Un altro degli appellativi vedici delle apsare è
akshakâmâs, ossia amiche dei dadi. Esse, in cielo, danzano, cantano
e giuocano; perciò in un inno dell'Atharvaveda, [29] il gandharva che
ha la pelle color del sole, e l'apsarâ, sono insieme invocati a
proteggere il giuoco dei dadi. Noi abbiamo sopra veduto come le
giovani onde si piegano innanzi al giovine Soma. Questo Soma
s'identifica col re de' Gandharvi, con lo sposo delle apsare, col
gandharva Viçvâvasû, genio particolarmente lunare, guardiano del
Soma, reggitore della pubertà e virginità delle donne, che deve
perciò allontanarsi, quando questa si perde; poichè il gandharva
ama, protegge, custodisce, tiene gelosamente nascosta, la sola
anavadyâ o l'innocente.
Quanto all'apsarâ, nell'Atharvaveda essa è chiamata nuvolosa,
lampeggiante e stellata. Qui abbiamo dunque una ninfa nella nuvola,
ed una ninfa nella notte, ma vi è ancora un'apsarâ aurora, che mi
pare indicata in quelle parole dell'inno 109º del VII libro
dell'Atharvaveda; onde apprendiamo che le apsare si rallegrano nel
tempo che passa fra l'offerta sacrificale e l'apparire del sole. Questo
tempo è, per l'appunto, quello dell'aurora; l'inno stesso invita il fuoco
a portare burro per le apsare. Ma il burro ed il fuoco, prima che
manifestarsi nel sacrificio, si manifestarono nel cielo, il quale nel
mattino incominciò ad apparire imburrato con l'alba, e quindi
infuocato con l'aurora; il burro liquefatto dell'alba alimenta il fuoco
dell'aurora, che il legno della selva notturna, distrutto dal fuoco
stesso, non avrebbe più bastato ad alimentare. Per mezzo del burro
si produce il fuoco, il ricco; come pertanto le acque, madri del fuoco,
sono invocate per ottenere un figlio che liberi il padre dai debiti, così
un poeta dell'Atharvaveda invita le apsare ad ungergli le mani con
burro, affinchè egli possa, nel giuoco, vincere il suo avversario; in un
altro inno dell'Atharvaveda [30] s'invitano le apsare Ugrampaçya ed
Ugrag'it a riparare ai debiti che il giuocatore ha fatti coi dadi.
L'apsarâ detta payasvatî (come la sarasvatî) vien chiamata essa
stessa sadhûdevinî, ossia bene giuocante; danza coi dadi; coi dadi si
procura dei beni, per mezzo della sua magia. Noi abbiamo qui la
mobile, luminosa, danzante aurora, fornita di ricchezze, che diffonde
la luce e la ricchezza nel mondo. A far poi apparire questa apsarâ
come una giuocatrice celeste dovette pure concorrere, per molta
parte, l'equivoco tra la radice div, «splendere» e la radice div,
«giuocare» (cfr. jucundus, juvenis, presso jocus). L'aurora divo
duhitar e l'apsarâ sadhûdevinî, ossia bene giuocante, riuscirono una
persona sola, con la quale si congiunge intimamente quel divodâsa,
in cui io riconosco il sole mattutino, che, per grazia di Sarasvatî (l'ap-
sarâ aurora payasvatî, sadhûdevinî), libera il padre da' suoi debiti
fatti probabilmente nel giuoco, ossia nella gara luminosa, nella gara
de' raggi celesti, che fu il primo di tutti i giuochi, ossia di tutte le
opere luminose; il gioco è gioia; la gioia brilla. E brillo chiamasi
tuttora l'uomo vivamente allegro. In Toscana, d'uomo contento dicesi
ch'ei brilla; la gioia è splendida, il dolore è scuro. Il sole vespertino
perde al giuoco luminoso il suo cavallo, diviene Vadhryaçva; nel
giuoco de' suoi raggi egli rimane perdente; il sole mattutino
Divodâsa, suo figlio, aiutato dalla giuocatrice o luminosa ninfa
Sarasvatî, dall'aurora, guadagna quello che il padre avea perduto. La
parola divodâsa, vale propriamente il servo del cielo, come duhitar
divas (l'aurora) vale la figlia del cielo. L'aurora è protetta da Indra e
dagli Açvin; così Divodâsa è protetto da Indra e dagli Açvin, che
distruggono per lui le città demoniache celesti, ossia le tenebre
mostruose della notte. Il padre di lui, che egli libera dai debiti, si
chiama Vadhryaçva, o privo di cavallo; ma prima di divenire
Vadhryaçva, chiamavasi invece Bahvaçva, ossia avente molti cavalli
(ossia, possibilmente ancora, il molto celere, ossia il potente
corridore od açva), ch'egli doveva pure essere abilissimo a guidare. Il
figlio Divodâsa, come servo del cielo, protetto dagli Dei, deve avere
servito specialmente (come quasi sempre l'eroe nel periodo, in cui
rimane nascosto) in qualità di stalliere divino (Ercole spazza la stalla
al re Augias); verso il mattino una fanciulla divina, un'apsarâ di
nome Sarasvatî, lo rende felice, facendolo vincere al giuoco, e
intendiamo al giuoco dei raggi solari; l'aksha divenne poi il dado, ma,
prima di riuscire un dado, fu certamente la ruota, l'asse, l'occhio e
probabilmente il raggio luminoso dell'occhio, il raggio penetrante. Il
re Nala che perde, al giuoco dei dadi, il regno, che abbandona la sua
bella sposa di notte nella selva piena di tigri e serpenti, che nel
tempo della sua miseria si fa auriga, ossia guidator di cavalli, che
riguadagna, al giuoco, il regno perduto e la sposa smarrita, ci offre
una stupenda variante brâhmanica del mito vedico di Divodâsa figlio
di Bahvaçva, divenuto, nel giuoco, Vadhryaçva, che riguadagna
quello che Bahvaçva avea perduto.
Ma una variante mitica della poetica leggenda della sposa perduta si
trova nel Rigveda stesso; ove l'inno 95º del X libro ci presenta un
contrasto fra la ninfa Urvaçî e l'eroe divino Purûravas, il molto
sonante (il vedico Gandharva, l'andante ne' profumi, [31] appare nel
periodo brâhmanico presso il paradiso d'Indra, insieme con le apsare
ballerine, come un musico celeste, a quel modo con cui la ninfa
acquosa Sarasvatî riesce la sonante e poi la Dea della parola,
dell'eloquenza; Purûravas, il tonante sposo dell'apsarâ Urvaçî, è
l'anello che congiunge il concepimento vedico col concepimento
brâhmanico de' Gandharvi). La ninfa od apsarâ Urvaçî, la larga che
s'avanza, una specie di Pr'ithivî, dice di sè stessa, nel secondo
versetto dell'inno 95º del X libro del Rigveda: io arrivai come la
prima delle aurore (prâkramisham ushasâm agriyeva); nel quarto
versetto lo sposo suo Purûravas la chiama aurora, come nel primo
versetto l'ha chiamata femmina crudele, perchè gli sfugge; e
vorrebbe trattenerla, e la prega perchè s'arresti nella sua dimora,
dove notte e giorno sarà colpita dal vaitasa (uno de' nomi vedici del
phallos). Urvaçî gli fa osservare ch'ei l'ha visitata tre volte nel giorno;
ch'egli è il padrone del suo corpo. Egli (un gandharva, come
avvertimmo) si lagna che le fanciulle aurore si allontanino come
cavalle attaccate ad un carro. Purûravas si rivolge a lei con parole
conformi a quelle, con cui i devoti sopra la terra invocano l'aurora:
Urvaçî cerca di consolarlo, egli si dispera; essa gli promette un figlio
di nome Vasishtha (uno de' nomi di Agni e del Sole), e, per merito
de' sacrificii del figlio, Purûravas può salire nel cielo e rallegrarvisi
beato (prag'â te devân havishâ yag'ati svarga y tvam api mâdayâse).
Il mito della ninfa Urvaçî si svolse quindi largamente nelle leggende
indiane, ed ebbe in Europa la fortuna di trovare un luminoso e
geniale interprete nel professore Max Müller, che lo studiò in
parecchie belle pagine degli Oxford Essays. [32] È evidente che l'inno
vedico ci presenta solamente alcuni frammenti mitici; gli elementi del
mito non vi furono tutti raccolti; ecco ora in qual modo esso si è
compiuto nel Çatapatha Brâhmana, in parte con nuovi elementi
mitici non penetrati nell'inno vedico, ma persistenti nella tradizione
orale, in parte per l'industria un po' arbitraria del Commentatore
dell'inno vedico, che s'ingegnava di spiegarne i passi rimasti oscuri.
— Un'apsarâ chiamata Urvaçî amò Purûravas figlio d'Idâ, e,
trovandolo, gli disse: «Abbracciami tre volte al giorno, ma non mai
contro il mio volere, e ch'io non ti vegga mai senza le tue vesti
reali.» Così ella visse a lungo con lui. Allora i suoi primi amici, i
Gandharvâs, dissero: «Quella Urvaçî da lungo tempo rimane fra i
mortali; facciamola tornare. Dove Urvaçî e Purûravas giacevano, vi
era una pecora con due agnelli, ed i Gandharvâs ne rapirono uno.»
Urvaçî disse: «Essi mi pigliano il mio caro, come se io vivessi dove
non c'è un eroe, e nemmeno un uomo.» I Gandharvâs rapirono
anche il secondo, ed essa ne fece ancora rimprovero allo sposo.
Allora Purûravas guardò e disse: «Come mai il luogo ove io abito può
esser privo d'un eroe o d'un uomo?» E, per non perdere tempo, nel
cercare i proprii abiti, si alzò ignudo. Allora i Gandharvâs fecero
splendere un raggio, e per quel raggio, come se fosse di giorno,
Urvaçî vide suo marito ignudo. Allora essa scomparve: «ritornerò»
disse, ed andò via. Allora egli pianse la sua amica perduta, e si recò
presso il Kurukshetra. Trovasi colà un lago chiamato Anyatahplaksha
pieno di ninfe, e mentre il re passeggiava sopra le sue rive, le ninfe
scherzavano nell'acqua in forma d'uccelli (probabilmente cigni).
Urvaçî scorse il re, e disse: «Ecco l'uomo, con cui ho abitato per
tanto tempo.» Allora le compagne le dissero: «Mostriamoci ad esso.»
Essa consentì, e le apsare si manifestarono. [33] Allora il re la
riconobbe e disse: «Oh! sposa! resta, crudele; parliamo un poco. I
nostri segreti, se noi non li riveliamo ora, non ci porteranno più tardi
fortuna.» Essa gli rispose: «A che parlarmi? Io sono arrivata come la
prima delle aurore. Purûravas ritorna nella tua dimora. Io sono
difficile come il vento ad essere raggiunta.» Egli rispose
dolorosamente: «Se è così, il tuo antico amico cada ora per non più
ridestarsi; se ne vada egli lontano, lontano; egli cada come corpo
morto, gli avidi lupi vengano a divorarlo.» Essa gli rispose:
«Purûravas, non morire, non cadere, non ti divorino i lupi....» Ella
alfine s'intenerì, e disse: «Vien da me l'ultima notte dell'anno; tu
abiterai con me una notte, ed un figlio ti nascerà.» L'ultima notte
dell'anno egli si recò alle auree sedi, e quando ei vi fu salito, gli
mandarono Urvaçî. Allora essa disse: «I Gandharvâs ti permettono di
fare un voto, ch'essi adempieranno; scegli.» Purûravas disse: «Scegli
tu per me.» Ed ella: «Allora di' ai Gandharvâs: permettetemi di
essere uno di voi.» Il giorno dopo, per tempo, i Gandharvâs gli
accordarono un dono; ma quando egli ebbe detto: «Ch'io possa
essere uno di voi,» essi risposero: «Il fuoco sacrificale, per grazia del
quale l'uomo potrebbe divenir uno di noi, non gli è noto ancora.»
Allora essi iniziarono Purûravas ai misteri del sacrificio; quando ei
l'ebbe compiuto, divenne uno dei Gandharvâs. — Così la leggenda
finisce come avrebbe potuto incominciare; cioè con un tonante
Purûravas gandharvas (ossia camminante nelle profumate acque
celesti), naturale amico e sposo di un'apsarâ (ossia di una scorrente

You might also like