ResNet34 Model

ResNet34 is a powerful convolutional neural network for image classification. With InferX, you can run ResNet34 on any device using the same API - from edge devices to powerful servers.

Features

  • High Accuracy: Excellent performance on image classification tasks
  • Cross-Platform: Same code works on Jetson, GPU, or CPU
  • Pre-trained: Ready to use with ImageNet weights
  • Fast Inference: Optimized for real-time applications
  • 1000 Classes: Supports all ImageNet classes

Installation

ResNet34 is included with InferX:

pip install git+https://github.com/exla-ai/InferX.git

Basic Usage

from inferx.models.resnet34 import ResNet34
import cv2

# Initialize the model (automatically detects your hardware)
model = ResNet34()

# Load and classify an image
image = cv2.imread("path/to/your/image.jpg")
results = model.inference(image)

# Print top predictions
for prediction in results['predictions'][:5]:
    print(f"{prediction['class']}: {prediction['confidence']:.3f}")

Advanced Usage

Batch Processing

from inferx.models.resnet34 import ResNet34
import cv2
import os

model = ResNet34()

# Process multiple images
image_folder = "path/to/images/"
images = []
filenames = []

for filename in os.listdir(image_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        image_path = os.path.join(image_folder, filename)
        image = cv2.imread(image_path)
        images.append(image)
        filenames.append(filename)

# Batch inference
results = model.batch_inference(images)

# Process results
for filename, result in zip(filenames, results):
    top_prediction = result['predictions'][0]
    print(f"{filename}: {top_prediction['class']} ({top_prediction['confidence']:.3f})")

Real-time Camera Classification

from inferx.models.resnet34 import ResNet34
import cv2

model = ResNet34()

# Open camera
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # Run inference
    results = model.inference(frame)
    
    # Display top prediction
    if results['predictions']:
        top_pred = results['predictions'][0]
        text = f"{top_pred['class']}: {top_pred['confidence']:.2f}"
        
        cv2.putText(frame, text, (10, 30), 
                   cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
    
    cv2.imshow('ResNet34 Classification', frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Custom Confidence Threshold

# Filter predictions by confidence threshold
results = model.inference(
    image, 
    confidence_threshold=0.5,
    top_k=10
)

# Only show high-confidence predictions
high_confidence = [
    pred for pred in results['predictions'] 
    if pred['confidence'] > 0.7
]

for pred in high_confidence:
    print(f"High confidence: {pred['class']} ({pred['confidence']:.3f})")

Performance

InferX optimizes ResNet34 for your hardware:

HardwareInference TimeMemory UsageThroughput
Jetson AGX Orin~15ms~1GB~65 FPS
RTX 4090~5ms~2GB~200 FPS
Intel i7 CPU~50ms~500MB~20 FPS

Response Format

{
    'predictions': [
        {
            'class': str,        # Class name (e.g., "golden retriever")
            'class_id': int,     # ImageNet class ID
            'confidence': float  # Confidence score (0-1)
        }
    ],
    'inference_time': float,     # Time taken for inference (seconds)
    'preprocessing_time': float  # Time taken for preprocessing (seconds)
}

ImageNet Classes

ResNet34 can classify 1000 different classes from ImageNet, including:

  • Animals: Dogs, cats, birds, wildlife
  • Objects: Vehicles, furniture, tools
  • Food: Fruits, vegetables, dishes
  • Nature: Plants, geological features
  • And much more: The complete list is available in the model documentation

Example Applications

Photo Organizer

from inferx.models.resnet34 import ResNet34
import os
import shutil

model = ResNet34()

# Organize photos by detected objects
source_folder = "unsorted_photos/"
organized_folder = "organized_photos/"

for filename in os.listdir(source_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        image_path = os.path.join(source_folder, filename)
        image = cv2.imread(image_path)
        
        results = model.inference(image)
        
        if results['predictions']:
            top_class = results['predictions'][0]['class']
            
            # Create category folder
            category_folder = os.path.join(organized_folder, top_class)
            os.makedirs(category_folder, exist_ok=True)
            
            # Move file
            destination = os.path.join(category_folder, filename)
            shutil.move(image_path, destination)
            
            print(f"Moved {filename} to {top_class} folder")

Quality Control System

# Example for manufacturing quality control
def check_product_quality(image_path, expected_class="product_name"):
    model = ResNet34()
    image = cv2.imread(image_path)
    
    results = model.inference(image, top_k=5)
    
    # Check if expected class is in top predictions
    for pred in results['predictions']:
        if expected_class.lower() in pred['class'].lower():
            if pred['confidence'] > 0.8:
                return "PASS", pred['confidence']
            else:
                return "LOW_CONFIDENCE", pred['confidence']
    
    return "FAIL", 0.0

# Test product
status, confidence = check_product_quality("product_image.jpg", "bottle")
print(f"Quality Check: {status} (Confidence: {confidence:.3f})")

Content Moderation

# Basic content filtering example
def classify_image_content(image_path):
    model = ResNet34()
    image = cv2.imread(image_path)
    
    results = model.inference(image, top_k=10)
    
    # Define categories of interest
    animal_classes = ['dog', 'cat', 'bird', 'horse', 'cow']
    vehicle_classes = ['car', 'truck', 'motorcycle', 'bicycle']
    nature_classes = ['tree', 'flower', 'mountain', 'beach']
    
    categories = []
    
    for pred in results['predictions']:
        class_name = pred['class'].lower()
        
        if any(animal in class_name for animal in animal_classes):
            categories.append(f"Animal: {pred['class']}")
        elif any(vehicle in class_name for vehicle in vehicle_classes):
            categories.append(f"Vehicle: {pred['class']}")
        elif any(nature in class_name for nature in nature_classes):
            categories.append(f"Nature: {pred['class']}")
    
    return categories

categories = classify_image_content("test_image.jpg")
print("Image contains:", categories)

Hardware Detection

✨ InferX - ResNet34 Model ✨
🔍 Device Detected: AGX_ORIN
⠏ [0.5s] Loading ResNet34 model
✓ [0.7s] Ready for image classification

Next Steps

ResNet34 Model

ResNet34 is a powerful convolutional neural network for image classification. With InferX, you can run ResNet34 on any device using the same API - from edge devices to powerful servers.

Features

  • High Accuracy: Excellent performance on image classification tasks
  • Cross-Platform: Same code works on Jetson, GPU, or CPU
  • Pre-trained: Ready to use with ImageNet weights
  • Fast Inference: Optimized for real-time applications
  • 1000 Classes: Supports all ImageNet classes

Installation

ResNet34 is included with InferX:

pip install git+https://github.com/exla-ai/InferX.git

Basic Usage

from inferx.models.resnet34 import ResNet34
import cv2

# Initialize the model (automatically detects your hardware)
model = ResNet34()

# Load and classify an image
image = cv2.imread("path/to/your/image.jpg")
results = model.inference(image)

# Print top predictions
for prediction in results['predictions'][:5]:
    print(f"{prediction['class']}: {prediction['confidence']:.3f}")

Advanced Usage

Batch Processing

from inferx.models.resnet34 import ResNet34
import cv2
import os

model = ResNet34()

# Process multiple images
image_folder = "path/to/images/"
images = []
filenames = []

for filename in os.listdir(image_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        image_path = os.path.join(image_folder, filename)
        image = cv2.imread(image_path)
        images.append(image)
        filenames.append(filename)

# Batch inference
results = model.batch_inference(images)

# Process results
for filename, result in zip(filenames, results):
    top_prediction = result['predictions'][0]
    print(f"{filename}: {top_prediction['class']} ({top_prediction['confidence']:.3f})")

Real-time Camera Classification

from inferx.models.resnet34 import ResNet34
import cv2

model = ResNet34()

# Open camera
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # Run inference
    results = model.inference(frame)
    
    # Display top prediction
    if results['predictions']:
        top_pred = results['predictions'][0]
        text = f"{top_pred['class']}: {top_pred['confidence']:.2f}"
        
        cv2.putText(frame, text, (10, 30), 
                   cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
    
    cv2.imshow('ResNet34 Classification', frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Custom Confidence Threshold

# Filter predictions by confidence threshold
results = model.inference(
    image, 
    confidence_threshold=0.5,
    top_k=10
)

# Only show high-confidence predictions
high_confidence = [
    pred for pred in results['predictions'] 
    if pred['confidence'] > 0.7
]

for pred in high_confidence:
    print(f"High confidence: {pred['class']} ({pred['confidence']:.3f})")

Performance

InferX optimizes ResNet34 for your hardware:

HardwareInference TimeMemory UsageThroughput
Jetson AGX Orin~15ms~1GB~65 FPS
RTX 4090~5ms~2GB~200 FPS
Intel i7 CPU~50ms~500MB~20 FPS

Response Format

{
    'predictions': [
        {
            'class': str,        # Class name (e.g., "golden retriever")
            'class_id': int,     # ImageNet class ID
            'confidence': float  # Confidence score (0-1)
        }
    ],
    'inference_time': float,     # Time taken for inference (seconds)
    'preprocessing_time': float  # Time taken for preprocessing (seconds)
}

ImageNet Classes

ResNet34 can classify 1000 different classes from ImageNet, including:

  • Animals: Dogs, cats, birds, wildlife
  • Objects: Vehicles, furniture, tools
  • Food: Fruits, vegetables, dishes
  • Nature: Plants, geological features
  • And much more: The complete list is available in the model documentation

Example Applications

Photo Organizer

from inferx.models.resnet34 import ResNet34
import os
import shutil

model = ResNet34()

# Organize photos by detected objects
source_folder = "unsorted_photos/"
organized_folder = "organized_photos/"

for filename in os.listdir(source_folder):
    if filename.endswith(('.jpg', '.png', '.jpeg')):
        image_path = os.path.join(source_folder, filename)
        image = cv2.imread(image_path)
        
        results = model.inference(image)
        
        if results['predictions']:
            top_class = results['predictions'][0]['class']
            
            # Create category folder
            category_folder = os.path.join(organized_folder, top_class)
            os.makedirs(category_folder, exist_ok=True)
            
            # Move file
            destination = os.path.join(category_folder, filename)
            shutil.move(image_path, destination)
            
            print(f"Moved {filename} to {top_class} folder")

Quality Control System

# Example for manufacturing quality control
def check_product_quality(image_path, expected_class="product_name"):
    model = ResNet34()
    image = cv2.imread(image_path)
    
    results = model.inference(image, top_k=5)
    
    # Check if expected class is in top predictions
    for pred in results['predictions']:
        if expected_class.lower() in pred['class'].lower():
            if pred['confidence'] > 0.8:
                return "PASS", pred['confidence']
            else:
                return "LOW_CONFIDENCE", pred['confidence']
    
    return "FAIL", 0.0

# Test product
status, confidence = check_product_quality("product_image.jpg", "bottle")
print(f"Quality Check: {status} (Confidence: {confidence:.3f})")

Content Moderation

# Basic content filtering example
def classify_image_content(image_path):
    model = ResNet34()
    image = cv2.imread(image_path)
    
    results = model.inference(image, top_k=10)
    
    # Define categories of interest
    animal_classes = ['dog', 'cat', 'bird', 'horse', 'cow']
    vehicle_classes = ['car', 'truck', 'motorcycle', 'bicycle']
    nature_classes = ['tree', 'flower', 'mountain', 'beach']
    
    categories = []
    
    for pred in results['predictions']:
        class_name = pred['class'].lower()
        
        if any(animal in class_name for animal in animal_classes):
            categories.append(f"Animal: {pred['class']}")
        elif any(vehicle in class_name for vehicle in vehicle_classes):
            categories.append(f"Vehicle: {pred['class']}")
        elif any(nature in class_name for nature in nature_classes):
            categories.append(f"Nature: {pred['class']}")
    
    return categories

categories = classify_image_content("test_image.jpg")
print("Image contains:", categories)

Hardware Detection

✨ InferX - ResNet34 Model ✨
🔍 Device Detected: AGX_ORIN
⠏ [0.5s] Loading ResNet34 model
✓ [0.7s] Ready for image classification

Next Steps