Deep learning on embedded systems : a hands-on approach using Jetson Nano and Raspberry Pi /

Comprehensive, accessible introduction to deep learning for engineering tasks through Python programming, low-cost hardware, and freely available software Deep Learning on Embedded Systems is a comprehensive guide to the practical implementation of deep learning for engineering tasks through compute...

Full description

Bibliographic Details
Main Author: Arif, Tariq M. (Author)
Format: eBook
Language:English
Published: Hoboken, New Jersey : John Wiley & Sons, Inc., [2025]
Subjects:
Online Access:Connect to the full text of this electronic book
Table of Contents:
  • Preface x
  • Acknowledgment xi
  • Biography xii
  • About the Companion Websitexiii
  • 1 Introduction 1
  • 1.1 Machine Learning to Deep Learning 1
  • 1.2 Modern Embedded Systems 2
  • 1.3 Deep Transfer Learning in Embedded System 4
  • 1.4 Deep Learning Frameworks: An Overview 5
  • 1.4.1 PyTorch 5
  • 1.4.2 TensorFlow 6
  • 1.4.3 Other Major Frameworks 6
  • 1.5 Deep Learning and AI: Big Data and the Road Ahead 7
  • 1.5.1 Advances in Computational Hardware 7
  • 1.5.2 Adoptions in Industry and Business 8
  • 1.5.3 Ethical, Legal, and Privacy Concerns 8
  • 1.5.4 Future Challenges 9
  • 2 Fundamentals of Deep Learning 15
  • 2.1 Neural Networks Overview 15
  • 2.2 Basic Concepts and Terminologies 15
  • 2.2.1 Neurons and Layers 15
  • 2.2.2 Role of Activation Functions 17
  • 2.2.3 Learning Types 18
  • 2.3 Training on a Network 18
  • 2.3.1 Forward and Backward Propagation 18
  • 2.3.2 Loss Functions 19
  • 2.4 Gradient Descent Algorithm 19
  • 2.5 Weight Initialization and Regularization 21
  • 2.6 Hyperparameter Tuning 22
  • 2.6.1 Architecture-based Hyperparameters 23
  • 2.6.2 Training-based Hyperparameters 23
  • 2.7 Overview of Common Hyperparameters 23
  • 2.7.1 Kernel Size 23
  • 2.7.2 Learning Rate 23
  • 2.7.3 Weight Decay 24
  • 2.7.4 Dropout 24
  • 2.7.5 Batch, Iteration, and Epochs 24
  • 2.8 Challenges and Best Practices for Efficient Tuning 25
  • 3 Convolutional and Recurrent Neural Network 27
  • 3.1 Introduction 27
  • 3.2 Historical Background 27
  • 3.3 Convolutional Neural Networks 28
  • 3.3.1 CNN Framework 28
  • 3.3.2 Convolutional Operations 28
  • 3.3.3 Padding and Stride 30
  • 3.3.4 Pooling Layers 31
  • 3.3.5 Fully Connected Layers 32
  • 3.3.6 Output Layers 32
  • 3.3.7 Overall Architecture 32
  • 3.4 Recurrent Neural Networks 33
  • 3.4.1 RNN Framework 33
  • 3.4.2 Basic Architectures 33
  • 3.4.3 Backpropagation Through Time 34
  • 3.4.4 Long Short-term Memory Networks 35
  • 3.4.5 Gated Recurrent Units 35
  • 3.4.6 Bidirectional RNNs 35
  • 3.5 Applications 36
  • 3.6 Conclusion 37
  • 4 Deep Learning Using PyTorch 41
  • 4.1 Introduction to PyTorch 41
  • 4.2 Anaconda and PyTorch for Windows System 41
  • 4.2.1 Anaconda Installation and Environment Setup 42
  • 4.2.2 Setting up the PyTorch Framework 44
  • 4.2.2.1 Visual Studio Professional 47
  • 4.2.2.2 CUDA and cuDNN Installation 48
  • 4.3 Other Essential Packages for Deep Learning 50
  • 4.4 Introduction to Tensor 52
  • 4.4.1 Defining a Tensor 52
  • 4.4.2 Tensors in PyTorch 53
  • 4.5 Basic Torch Operations in PyTorch 53
  • 4.6 Gradient Calculation in PyTorch 55
  • 4.7 Exercise Problems 57
  • 5 Introduction to Jetson Nano and Setup 59
  • 5.1 Introduction to Jetson Embedded Devices 59
  • 5.1.1 Jetson Nano 60
  • 5.1.2 Hardware and Power Requirements 61
  • 5.2 Jetpack Installation 62
  • 5.3 Direct Setup 65
  • 5.3.1 Increase Root Partition Size 65
  • 5.3.2 Other Settings 68
  • 5.3.3 Wi-Fi Driver 70
  • 5.4 Configure Visual Studio Code on Jetson 71
  • 5.5 OpenCV and PyTorch in Jetson 75
  • 5.6 Setting up Jetson Inference 76
  • 5.7 OpenCV Library and Test Video Capture Functionality 79
  • 5.8 Conclusion 81
  • 5.9 Exercise Problems 81
  • 6 Linux Terminal Overview 85
  • 6.1 Introduction 85
  • 6.2 Basic Terminal Commands and Syntax 86
  • 6.3 Overview of File System 87
  • 6.4 Navigating Files and Directories 87
  • 6.5 Create, Edit, and Delete 90
  • 6.5.1 Copy and Move Operations 92
  • 6.6 Create and Execute Python Code from Terminal 93
  • 6.7 Common Wildcard Characters 95
  • 6.8 Find, View, and Get Information 96
  • 6.9 Permission and Ownership 99
  • 6.9.1 Permissions Using Octal and Symbolic Notations 100
  • 6.9.2 Update Permission Using Operators 101
  • 6.10 Install and Uninstall Packages Using sudo 104
  • 6.11 Conclusion 105
  • 7 Docker Engine Setup 107
  • 7.1 Introduction to Docker Engine 107
  • 7.2 Docker in Embedded Devices 107
  • 7.3 Jetson Inference Docker 108
  • 7.3.1 Download and Test Pre-trained Models 109
  • 7.4 Using Host Files in Docker Environment 110
  • 7.4.1 Create Executable Python 111
  • 7.4.2 Attach Host Directory to Root System and Testing 113
  • 7.5 Building a Docker Image 115
  • 7.5.1 Runtime Image for MediaPipe Ecosystem 115
  • 7.5.2 Install Docker Extension 116
  • 7.5.3 Create Docker File and Build Image 116
  • 7.6 Run Python Through Docker Container 118
  • 7.7 Exercise Problems 119
  • 8 Dataset Development 121
  • 8.1 Introduction and Requirements 121
  • 8.2 Types of Datasets 121
  • 8.3 Manual Dataset Creation 122
  • 8.3.1 Classification and Detection Dataset 122
  • 8.3.2 LabelImg Setup 123
  • 8.4 Automatic Image Collection Using Embedded Device 127
  • 8.5 Automatic Data Labeling 128
  • 8.6 Data Preprocessing and Cleaning 130
  • 8.7 Exercise Problem 131
  • 9 Training Model for Image Classification 133
  • 9.1 Problem Statement 133
  • 9.2 Default Configurations and Libraries 134
  • 9.3 Setup Data Frame Using Annotations 134
  • 9.4 Dataset Class and Methods 136
  • 9.5 Data Loader and Model Configuration 137
  • 9.6 Model Training 140
  • 9.7 Testing and Inference 141
  • 9.8 Fine-tuning 142
  • 9.8.1 Using a Different Model 144
  • 9.8.2 Using Different Optimizers and Schedulers 145
  • 9.9 Application in Embedded System 146
  • 9.10 Exercise Problems 147
  • 10 Object Detection with Classification 149
  • 10.1 Introduction 149
  • 10.2 Import Modules and Libraries 149
  • 10.3 Default Configurations and Random Seeds 151
  • 10.4 Create Data Frame and Process Labels 151
  • 10.5 Training and Validation of Transformers 152
  • 10.6 Dataset Class and Methods 153
  • 10.7 Data Loader and Classification Backbone 153
  • 10.8 Training and Validation Approach 155
  • 10.9 Run Multiple Epochs and Save the Best 156
  • 10.10 Model Inference 157
  • 10.10.1 Preprocessing Functions 158
  • 10.10.2 Inference on Test Images 160
  • 10.11 Multiple Object Detection with Classification 161
  • 10.12 Model Inference for Multiple Object Detection 163
  • 10.13 Conclusion 165
  • 10.14 Exercise Problems 167
  • 11 Deploy Deep Learning Models on Jetson Nano 169
  • 11.1 Introduction 169
  • 11.2 Pre-trained Models 169
  • 11.3 Inference on an Image File 170
  • 11.4 ONNX Model 172
  • 11.4.1 Convert PyTorch Model to ONNX 172
  • 11.5 Inference on Live Video Stream 173
  • 11.6 Conclusion 175
  • 11.7 Exercise Problem 176
  • 12 Trained PyTorch Model: From Desktop PC to Jetson Nano 177
  • 12.1 Introduction 177
  • 12.2 Model Training on a PC 177
  • 12.3 ONNX Model Inference 177
  • 12.3.1 PyTorch's.pt to ONNX Conversion 177
  • 12.3.2 Image Classification Using ONNX 179
  • 12.3.3 PyTorch's.pth to ONNX Conversion 181
  • 12.3.4 Object Detection Using ONNX 181
  • 12.4 Conclusion 186
  • 12.5 Exercise Problems 186
  • 13 Setting up Raspberry Pi 187
  • 13.1 Introduction to Raspberry Pi 187
  • 13.2 Hardware and Power Requirements 188
  • 13.2.1 Direct Setup 190
  • 13.3 Operating System Setup 190
  • 13.3.1 Flashing the OS Image 191
  • 13.3.2 Setting up OS 194
  • 13.4 Create Virtual Environment 197
  • 13.5 PyTorch and OpenCV Installation 198
  • 13.6 Other Essential Packages 201
  • 13.7 Conclusion 206
  • 13.8 Exercise Problem 207
  • 14 Deploy Deep Learning Models on Raspberry Pi 209
  • 14.1 Introduction 209
  • 14.2 Face Detection and Recognition in Video Feeds 209
  • 14.2.1 Face Detection Using HOG 209
  • 14.2.2 Face Recognition Using Transfer Learning 211
  • 14.3 Real-time Object Detection 214
  • 14.3.1 Object Detection Using YoloV3 214
  • 14.4 Real-time Classification 217
  • 14.4.1 Classification Using PyTorch's Quantized Model 217
  • 14.5 Real-time Segmentation 219
  • 14.5.1 Segmentation Using k-means Clustering 219
  • 14.6 Exercise Problems 221
  • 15 Trained PyTorch Model: From Desktop PC to Raspberry Pi 225
  • 15.1 Introduction 225
  • 15.2 Model Training on a Desktop PC 225
  • 15.3 PyTorch's.pth to ONNX 225
  • 15.3.1 ONNX Runtime 225
  • 15.3.2 Model Conversion in Raspberry Pi 5 226
  • 15.4 ONNX Model Inference on Raspberry Pi 5 228
  • 15.4.1 Import Libraries and Define Configurations 228
  • 15.4.2 Image Preprocessing 228
  • 15.4.3 Model Inference with Bounding Boxes 229
  • 15.5 Conclusion 231
  • 15.6 Exercise Problems 232
  • Index 235.