Skip to content

Repository files navigation

ShapeVision

Hệ thống Trí tuệ Nhân tạo Nhận diện và Phân tích Hình học 2D

Next.js React TypeScript Python FastAPI OpenCV

Tổng quan

ShapeVision là một dự án nghiên cứu và ứng dụng trí tuệ nhân tạo chuyên sâu vào bài toán Nhận diện Hình học (Geometric Shape Recognition). Trọng tâm cốt lõi của hệ thống là khả năng đọc hiểu, phân tích và số hóa các nét vẽ tay tự do của con người thành các mô hình hình học 2D chuẩn xác về mặt toán học.

Thay vì chỉ là một ứng dụng vẽ thông thường, ShapeVision hoạt động như một "đôi mắt" AI có khả năng phân loại tự động các hình cơ bản (Đa giác, Đường tròn), bóc tách các thuộc tính không gian (Tọa độ tâm, Kích thước, Bán kính) theo thời gian thực. Hệ thống được ứng dụng mạnh mẽ vào môi trường giáo dục thông qua Chế độ Đố vui (Quiz Mode), giúp tự động tạo đề bài, phân tích nét vẽ của học sinh và đánh giá độ chính xác (matching score) dựa trên các thuật toán Computer Vision.


Tính năng Nhận diện Nổi bật

  • Động cơ Nhận diện Hình học (AI Auto-Beautify): Vẽ tự do trên không gian canvas, hệ thống Backend AI sẽ phân tích ngay lập tức tọa độ mảng của bạn, phân loại và tái cấu trúc các đường nét thô kệch thành các dạng hình học tiêu chuẩn: Hình Chữ Nhật, Hình Vuông, Hình Tròn, Hình Tam Giác, Hình Lục Giác.
  • Hệ thống Chấm điểm Hình học (Smart Quiz): Trình đánh giá hình học thông minh tự động sinh ra các bài kiểm tra. Thuật toán AI sẽ tiến hành so khớp (Shape Matching) nét vẽ của bạn với ma trận hình tiêu chuẩn và trả về điểm số độ chính xác (thang điểm 0 - 100).
  • Không gian Vẽ Chuyên nghiệp (Advanced Workspace):
    • Sử dụng công nghệ SVG tạo ra một Canvas vô tận với hệ thống lưới (Grid snapping).
    • Quản lý theo Lớp (Layers): Dễ dàng thêm, chọn, thay đổi hoặc xóa các lớp hình vẽ hoàn toàn độc lập.
    • Cục tẩy thông minh (Smart Eraser): Cho phép xóa chính xác từng hình học cụ thể trên màn hình chỉ bằng một cú click chuột.
    • Bảng Thuộc tính (Properties Panel): Hiển thị và cập nhật theo thời gian thực các thông số toán học như Tọa độ tâm (Center X, Center Y), Kích thước (Width, Height), Bán kính (Radius) và số điểm đỉnh (Points).
  • Xác thực Người dùng & Hồ sơ (Authentication): Đăng nhập và đăng ký mượt mà. Hệ thống hỗ trợ xử lý và lưu trữ ảnh đại diện cá nhân, đảm bảo đồng bộ hoàn hảo giữa các phiên đăng nhập khác nhau.
  • Tải lên Đa tập tin (Multi-file Upload): Tính năng đặc biệt cho phép kéo thả và tải lên nhiều tập tin cùng lúc, tiện lợi cho việc quản lý tài nguyên hoặc chèn nội dung vào workspace.
  • Giao diện Hiện đại, Tinh tế (UI/UX): Hỗ trợ Chế độ Sáng/Tối (Dark/Light mode), các hiệu ứng tương tác vi mô (micro-interactions) mượt mà, và phong cách thiết kế Glassmorphism (Kính mờ) cao cấp được xây dựng hoàn toàn bằng CSS thuần (Vanilla CSS Modules) giúp tối ưu hiệu năng.

Công nghệ Sử dụng (Technology Stack)

Frontend (Giao diện Người dùng)

  • Framework: Next.js 15 (App Router - Cấu trúc thư mục mới nhất)
  • UI Library: React 19
  • Ngôn ngữ: TypeScript
  • Styling: Vanilla CSS Modules
  • Icon: Lucide React

Backend (Máy chủ Trí tuệ Nhân tạo AI)

  • Framework: FastAPI
  • Học sâu (Deep Learning): Mạng Nơ-ron Nhân tạo (Artificial Neural Network - ANN) xây dựng trên nền tảng TensorFlow / PyTorch
  • Tiền xử lý & Trích xuất đặc trưng: OpenCV (cv2) & NumPy
  • Xác thực Dữ liệu: Pydantic

Phân tích Thuật toán & Trí tuệ nhân tạo (Under the Hood)

Điều làm nên sức mạnh của ShapeVision nằm ở Backend Python với pipeline xử lý kết hợp giữa Mạng nơ-ron nhân tạo (Artificial Neural Network - ANN)Thị giác máy tính (Computer Vision). Khi người dùng kết thúc một nét vẽ bằng "Bút AI", dữ liệu sẽ được tiền xử lý, trích xuất đặc trưng hình học và đưa vào mô hình ANN để phân loại.

1. Lưu đồ thuật toán AI Pipeline

flowchart LR
    A[Nét vẽ thô] --> B[Tiền xử lý]
    B --> C[Nhị phân hóa]
    C --> D[Trích xuất đặc trưng OpenCV]
    D --> E[Đưa vào Mạng ANN]
    E --> F[Render kết quả]
Loading

2. Tiền xử lý Dữ liệu & Trích xuất Tham số Không gian

Các tọa độ điểm vector (strokes) được raster hóa thành ma trận ảnh NumPy. Sử dụng thuật toán cv2.findContourscv2.convexHull (Bao lồi) để làm sạch nhiễu tay run. Hệ thống sau đó dùng cv2.minEnclosingCircle hoặc cv2.boundingRect để bóc tách thông số.

Minh họa Convex Hull & Bounding Box (Minh họa Convex Hull & Bounding Box: Ảnh so sánh trực quan cách OpenCV tìm khung chữ nhật bao quanh một nét vẽ, và sợi dây "bao lồi" bao quanh các đỉnh của đa giác)

3. Nhận diện bằng Mạng Nơ-ron Nhân tạo

ShapeVision đưa các đặc trưng đã chuẩn hóa vào mạng ANN nhiều lớp. Mô hình gồm lớp đầu vào (Input Layer), các lớp ẩn (Hidden Layers), trọng số (Weights), độ lệch (Bias), hàm kích hoạt như ReLU và lớp đầu ra sử dụng Softmax để trả về phân phối xác suất của từng loại hình học. image

4. Đánh giá Mô hình Học sâu (Model Evaluation)

Biểu đồ đường (Line Chart) của Loss và Accuracy

xychart-beta
    title "Mô hình Huấn luyện AI: Accuracy & Loss qua các Epochs"
    x-axis "Epochs" [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    y-axis "Percentage (%)" 0 --> 100
    line [40, 55, 68, 75, 82, 88, 92, 95, 97, 98]
    line [85, 70, 50, 35, 25, 18, 12, 8, 5, 3]
Loading

(Đường đi lên: Độ chính xác Accuracy tăng dần. Đường đi xuống: Sai số Loss giảm dần. Bằng chứng cho thấy AI thực sự "có học" chứ không đoán mò)

Ma trận nhầm lẫn (Confusion Matrix) thể hiện tỷ lệ AI nhận diện đúng/sai giữa các hình cơ bản:

Thực tế \ Dự đoán Hình Tròn Hình Tam Giác Hình Vuông Hình Lục Giác
Hình Tròn 96% 1% 2% 1%
Hình Tam Giác 1% 95% 2% 2%
Hình Vuông 2% 1% 97% 0%
Hình Lục Giác 1% 2% 1% 96%

Sơ đồ Kiến trúc & Use Case

Sơ đồ Use Case (UML)

flowchart LR
    User([ Người dùng]) --- UC1(Nhận diện nét vẽ)
    User --- UC2(Làm mượt hình)
    User --- UC3(Chế độ Đố vui)
Loading

Sơ đồ Kiến trúc Hệ thống

flowchart TD
    Frontend[Frontend: Next.js] <-->|Gửi API JSON| Backend[Backend: FastAPI]
    Backend <-->|Tiền xử lý & Model| AILayer[AI Layer: CNN & OpenCV]
    Backend <-->|Lưu trữ/Truy vấn| Database[(Database / File System)]
Loading

Cấu trúc Thư mục Chi tiết

Dự án được tổ chức theo tiêu chuẩn Monorepo với cấu trúc gọn gàng và dễ mở rộng:

shapevision/
├── backend/                             # [Thư mục Backend] Máy chủ Trí tuệ Nhân tạo (Python)
│   ├── main.py                          # Logic chính: Khởi tạo FastAPI, cấu hình CORS, OpenCV AI Pipeline
│   └── requirements.txt                 # Danh sách các thư viện Python cần thiết (FastAPI, OpenCV, NumPy...)
├── src/                                 # [Thư mục Frontend] Chứa toàn bộ mã nguồn Next.js
│   ├── app/                             # Next.js App Router (Định tuyến ứng dụng chính)
│   │   ├── (auth)/                      # Nhóm định tuyến dành cho Xác thực
│   │   │   ├── login/page.tsx           # Trang Đăng nhập hệ thống
│   │   │   └── register/page.tsx        # Trang Đăng ký tài khoản
│   │   ├── api/                         # Các Endpoints API nội bộ của Next.js
│   │   │   └── upload/route.ts          # Xử lý tính năng Tải lên Đa tập tin (Multi-file upload)
│   │   ├── workspace/                   # Phân hệ Không gian làm việc (Tính năng cốt lõi)
│   │   │   ├── draw/                    # Tính năng Bàn vẽ thông minh (AI Drawing Workspace)
│   │   │   │   ├── page.tsx             # Giao diện chính của bàn vẽ (Canvas, Sidebar, Layers)
│   │   │   │   └── draw.module.css      # Style CSS Modules riêng biệt cho trang vẽ
│   │   │   └── quiz/                    # Tính năng Đố vui Hình học (Quiz Workspace)
│   │   │       ├── page.tsx             # Giao diện hiển thị câu hỏi và thực thi vẽ
│   │   │       └── quiz.module.css      # Style CSS Modules cho trang đố vui
│   │   ├── layout.tsx                   # Layout gốc của toàn ứng dụng (cấu hình Font chữ, Root HTML)
│   │   ├── page.tsx                     # Trang chủ (Landing Page) tuyệt đẹp giới thiệu dự án
│   │   └── globals.css                  # Biến CSS toàn cục (Design tokens), Reset CSS & Typography
│   └── components/                      # Các Component UI tái sử dụng độc lập
│       ├── Header.tsx                   # Thanh điều hướng phía trên (Topbar / Navbar)
│       └── ...                          # Các thành phần UI khác
├── public/                              # [Thư mục Tĩnh] Chứa tài nguyên public như hình ảnh, SVG
│   ├── default-avatar.png               # Ảnh đại diện mặc định của người dùng
│   └── ...
├── tsconfig.json                        # Cấu hình compiler cho TypeScript (Ràng buộc kiểu dữ liệu)
├── next.config.mjs                      # Cấu hình hệ thống của Next.js framework
├── package.json                         # Khai báo script chạy dự án và thư viện Node.js dependencies
└── README.md                            # Tài liệu mô tả dự án (File bạn đang đọc)

Hướng dẫn Cài đặt (Getting Started)

Yêu cầu hệ thống

  • Node.js (phiên bản v18 trở lên)
  • Python (phiên bản 3.10 trở lên)

1. Khởi động AI Backend

Mở terminal và trỏ vào thư mục dự án, chạy lệnh:

cd backend
python -m venv venv
source venv/Scripts/activate  # Dành cho hệ điều hành Windows
pip install fastapi uvicorn opencv-python numpy pydantic
uvicorn main:app --reload --port 8000

2. Khởi động Frontend

Mở một cửa sổ terminal mới (giữ nguyên cửa sổ Backend đang chạy):

npm install
npm run dev

3. Trải nghiệm Ứng dụng

Truy cập vào địa chỉ http://localhost:3000 trên trình duyệt web của bạn và bắt đầu khám phá!

About

ShapeVision là một dự án nghiên cứu và ứng dụng trí tuệ nhân tạo chuyên sâu vào bài toán nhận diện Hình học (Geometric Shape Recognition) . Trọng tâm cốt lõi của hệ thống là khả năng đọc hiểu, phân tích và số hóa các nét vẽ tay tự do của con người thành các mô hình hình học 2D chuẩn xác về mặt toán học.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages