Skip to content

dangvinh29/cnn-inference-in-C

Repository files navigation

CNN Inference Engine in C

Một công cụ thực thi (inference engine) tối giản cho mạng thần kinh nhân tạo (CNN), được viết bằng C thuần. Dự án cho phép chạy các mô hình đã huấn luyện (định dạng JSON/BIN) trên CPU với sự hỗ trợ của đa luồng OpenMP.

📌 Tính năng

  • Kiến trúc linh hoạt: Đọc cấu trúc mạng từ tệp .json và trọng số từ tệp .bin.
  • Hỗ trợ đa lớp (Operators):
    • Convolution (Conv2D)
    • Max Pooling
    • Fully Connected (Gemm)
    • Activation Functions: ReLU, PReLU, Sigmoid, Softmax.
    • Batch Normalization & Reshape.
  • Tối ưu hóa: Tận dụng xử lý song song trên CPU bằng OpenMP.
  • Không phụ thuộc thư viện nặng: Chỉ yêu cầu cJSON để xử lý file cấu hình.

📁 Cấu trúc dự án

  • main.c: Luồng chính của chương trình, nạp dữ liệu MNIST và thực hiện test.
  • cJSON.h/c: Thư viện xử lý dữ liệu JSON.
  • model.json: Tệp định dạng cấu trúc các layer của mô hình.
  • model.bin: Tệp nhị phân chứa trọng số (weights) và định hướng (bias).

Yêu cầu

  • Trình biên dịch C (GCC, Clang hoặc MSVC).
  • Thư viện OpenMP được cài đặt sẵn.

Lệnh biên dịch (GCC)

gcc -O3 -fopenmp main.c cJSON.c -lm -o cnn_inference

About

A lightweight, dependency-free CNN inference engine written in C for deploying trained models on CPU. It executes neural networks by parsing architecture from JSON and mapping weights from binary files.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors