GoogLeNet Models
Overview
GoogLeNet introduces a groundbreaking approach to efficiently utilizing computational resources, enabling the network to achieve greater depth and width without exceeding a fixed computational budget. This efficiency is the result of a thoughtfully designed architecture that incorporates multi-scale processing and draws inspiration from Hebbian theory. Comprising 22 layers, GoogLeNet is optimized to deliver high-quality performance in both classification and detection tasks.
Getting Started
Follow these steps to use and convert GoogLeNet models using PyTorch and TorchVision.
Install Required Libraries:
Ensure you have the necessary libraries installed:
pip install torch torchvision
Load and Convert GoogLeNet Model:
Load a pretrained GoogLeNet model using PyTorch and TorchVision, create a dummy input tensor for tracing, trace the model to convert it to TorchScript, and finally save the traced model.
import torch import torchvision model = torchvision.models.googlenet(pretrained=True) trace_data = torch.randn(1, 3, 224, 224) trace_model = torch.jit.trace(model.cpu().eval(), trace_data) torch.jit.save(trace_model, 'googlenet_float.pt')
How It Works ?
Before you begin, ensure that the NeuroPilot Converter Tool is installed.
Quant8 Conversion Process
Generate Calibration Data:
The following script creates a directory named data and generates 100 batches of random input data, each saved as a .npy file. This data is used for calibration during the quantization process.
import os import numpy as np os.mkdir('data') for i in range(100): data = np.random.randn(1, 3, 224, 224).astype(np.float32) np.save('data/batch_{}.npy'.format(i), data)
Convert to Quantized TFLite Format:
Use the following command to convert the model to a quantized TFLite format using the generated calibration data:
mtk_pytorch_converter \ --input_script_module_file=googlenet_float.pt \ --output_file=googlenet_ptq_quant.tflite \ --input_shapes=1,3,224,224 \ --quantize=True \ --input_value_ranges=-1,1 \ --calibration_data_dir=data/ \ --calibration_data_regexp=batch_.*\.npy
FP32 Conversion Process
To convert the model to a non-quantized (FP32) TFLite format, use the following command:
mtk_pytorch_converter \
--input_script_module_file=googlenet_float.pt \
--output_file=googlenet_float.tflite \
--input_shapes=1,3,224,224
Model Details
General Information
Property |
Value |
---|---|
Category |
Classification |
Input Size |
224x224 |
GFLOPS |
1.50 |
#Params (M) |
6.62 |
Training Framework |
PyTorch |
Inference Framework |
TFLite |
Quant8 Model package |
|
Float32 Model package |
Model Properties
Quant8
Format: TensorFlow Lite v3
Description: Exported by NeuroPilot converter v7.14.1+release
Inputs
Property |
Value |
---|---|
Name |
x.2 |
Tensor |
int8[1,3,224,224] |
Identifier |
151 |
Quantization |
Linear |
Quantization Range |
-1.0039 ≤ 0.0078 * q ≤ 0.9961 |
Outputs
Property |
Value |
---|---|
Name |
1162 |
Tensor |
int8[1,1000] |
Identifier |
79 |
Quantization |
Linear |
Quantization Range |
-2.7253 ≤ 0.0373 * (q + 55) ≤ 6.7947 |
Fp32
Format: TensorFlow Lite v3
Description: Exported by NeuroPilot converter v2.9.0
Inputs
Property |
Value |
---|---|
Name |
x.2 |
Tensor |
float32[1,3,224,224] |
Identifier |
157 |
Outputs
Property |
Value |
---|---|
Name |
1162 |
Tensor |
float32[1,1000] |
Identifier |
176 |
Performance Benchmarks
GoogLeNet-quant8
Run model (.tflite) 10 times |
CPU (Thread:8) |
GPU |
ARMNN(GpuAcc) |
ARMNN(CpuAcc) |
Neuron Stable Delegate(APU) |
APU(MDLA) |
APU(VPU) |
G350 |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
G510 |
N/A |
N/A |
N/A |
N/A |
N/A |
3.04 ms |
N/A |
G700 |
N/A |
N/A |
N/A |
N/A |
N/A |
2.04 ms |
N/A |
G1200 |
N/A |
N/A |
N/A |
N/A |
N/A |
2.39 ms |
N/A |
GoogLeNet-fp32
Run model (.tflite) 10 times |
CPU (Thread:8) |
GPU |
ARMNN(GpuAcc) |
ARMNN(CpuAcc) |
Neuron Stable Delegate(APU) |
APU(MDLA) |
APU(VPU) |
G350 |
193.555 ms (Thread:4) |
157.701 ms |
133.454 ms |
111.099 ms |
N/A |
N/A |
673.224 ms |
G510 |
177.939 ms |
52.755 ms |
45.865 ms |
39.105 ms |
8.522 ms |
8.4 ms |
N/A |
G700 |
35.967 ms |
39.538 ms |
34.542 ms |
33.717 ms |
6.224 ms |
6.04 ms |
N/A |
G1200 |
31.778 ms |
28.887 ms |
24.254 ms |
20.328 ms |
7.072 ms |
6.05 ms |
N/A |
Widespread: CPU only, light workload.
Performance: CPU and GPU, medium workload.
Ultimate: CPU, GPU, and APUs, heavy workload.