Hướng dẫn tích hợp model AI vào web server Django Python

Raspango là tên source code web server chúng tôi tự viết dùng để cung cấp API xử lý ảnh. Raspango sử dụng framework Django chạy trên nhiều hệ điều hành như Windows, Centos, Ubuntu và Raspbian để xử lý ảnh, nhận diện vật thể và trả về cho client. Đối với Raspberry Pi còn có thêm chức năng đọc tín hiệu cảm biến, xuất tín hiệu ra các chân GPIO,…

Khi lập trình OpenCV bằng script Python thì mỗi lần chạy là phải load lại model. Với những model nhẹ thì không sao, còn những model nặng thì việc load lại tốn rất nhiều thời gian. Mục đich của Raspango là load sẵn model để sử dụng nhiều lần.

Việc kết hợp giữa Django và OpenCV giúp cho nhiều ngôn ngữ khác có thể gọi đến Python thông qua RESTful API. Nhờ đó các bạn có thể chạy web server ở 1 máy và nhiều máy khác truy cập được, kể cả thiết bị di động.

Raspango là kết hợp giữa RaspberryDjango

Mục lục

  1. Ưu điểm của Raspango
  2. Hướng dẫn sử dụng
  3. Hướng dẫn debug Django

Ưu điểm và chức năng của Raspango

Raspango được customize và cấu trúc thư mục phù hợp nhất với việc gắn các thư viện Machine Learning như OpenCV, Tensorflow, Pytorch,… Các thư viện này được đặt trong folder lib.

  • Dễ sử dụng, tốc độ nhanh khi gọi model predict hình ảnh
  • Có giao diện web sử dụng bootstrap dễ dàng điều chỉnh, design layout bằng html/css
  • Cung cấp API cho nhiều client khác nhau như browser, app,…
  • Sử dụng SQLite nên không cần cài đặt DB Management, chỉ cần load là chạy
  • Chạy được trên cả Windows lẫn Linux (Ubuntu, Centos, Rasbian – nay là Raspberry Pi OS)
  • Play webcam từ phía backend (server) lẫn frontend (browser)
  • Raspango có thể stream dữ liệu realtime từ server về client mà không cần cliend request liên tục
  • Trong folder lib/hardware có sẵn 1 số code điều khiển phần cứng của Raspberry Pi
  • Loại bỏ các phương thức xác thực, chống hack, chỉ tập trung giới thiệu cách gọi OpenCV

Nguyên lý hoạt động và ứng dụng

  • Hình ảnh từ webcam hoặc ảnh load từ file đều chuyển thành string base64, sau đó gửi về phía backend xử lý
  • Backend chấp nhận ảnh dạng binary lẫn base64, sau đó xử lý và gửi về kết quả
  • Có code example điều khiển Shield 4 relay của Raspberry Pi

Trang chủ là các thông tin về server

Stream webcam từ server về client

Example upload ảnh để detect khuôn mặt, ảnh up lên server dạng base64, server detect khuôn mặt và cũng trả về định dạng base64

Example detect đeo khẩu trang

Hướng dẫn sử dụng

  1. Bước 1: download Python 3.6.5 và cài đặt, sau đó restart máy tính.
  2. Bước 2: download Visual Studio Code
  3. Bước 3: Clone source code Raspango
  4. Bước 4: Cài đặt các thư viện pip bằng lệnh pip install -r requirements.txt
  5. Bước 5: chạy file start.bat
  6. Bước 6: mở Chrome nhập địa chỉ localhost, trang web sẽ yêu cầu nhập username và password

Username: admin
Password: admin

Trên hệ điều hành Linux để chạy Raspango thì gọi lệnh:
sudo bash start.sh

Hướng dẫn debug Django

Để debug các nên sử dụng Visual Studio Code – công cụ này hỗ trợ việc debug dễ dàng. Thay vì print() ra từng giá trị thì các bạn debug sẽ xem được nhiều giá trị hơn.

Tiếp theo là sửa file manage.py, thêm các dòng sau vào hàm main

Trong Visual Studio Code, ấn F5 để debug, chọn Python File như hình dưới

Đặt breakpoint trong API, khi bạn gọi đến 1 API nào đó thì Visual Studio Code sẽ dừng ở chỗ các bạn đặt breakpoint. Từ đó các bạn dễ dàng xem được giá trị biến để debug .

Video hướng dẫn debug Python trong Django khi API được gọi đến

Chi tiết hơn về việc debug bằng Visual Studio Code các bạn có thể tham khảo thêm: https://code.visualstudio.com/docs/python/debugging

Leave a Reply