6 THÍ NGHIỆM VÀ ĐÁNH GIÁ
4.1 Các công nghệ sử dụng
4.3.2 Ngôn ngữ lập trình
Hệ thống được hiện thực dựa trên hai ngôn ngữ lập trình chính:
Server: Ngôn ngữ Python và framework Django. Mô hình học sâu được hiện thực, huấn luyện và triển khai bằng ngôn ngữ Python. Vì vậy, việc chọn Python và framework Django để hiện thực server là một lựa chọn hợp lý để tăng cường khả năng tích hợp dự báo AI vào hệ thống làm nhãn DAT. Client: Ngôn ngữ Javascript và thư viện ReactJS. React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những thành phần (components) UI có tính tương tác cao, có trạng thái và có thể sử dụng lại được. Javascript có nhiều thư viện hỗ trợ việc thao tác trên ảnh y khoa như thư viện Cornerstone.js, Three.js...
Python
Python là một ngôn ngữ lập trình thông dịch, hướng đối tượng, cấp cao với ngữ nghĩa động do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991.
Lý do chọn ngôn ngữ lập trình Python: Thứ nhất, hệ thống DAT được xây dựng dựa trên framework Django - một web framework được viết bằng Python. Thứ hai, mô hình mạng học sâu do nhóm huấn luyện trên nền tảng Pytorch. Vì vậy, việc tích hợp dự báo AI từ mô hình mạng học sâu vào hệ thống làm nhãn DAT sẽ thuận tiện hơn rất nhiều.
Javascript
JavaScript là một ngôn ngữ lập trình dạng scripting cho phép người dùng triển khai các tính năng phức tạp trên các trang web.
Lý do chọn ngôn ngữ lập trình javascript: Với thư viện Reactjs hỗ trợ mạnh mẽ cho việc xây dựng front-end cho hệ thống, cùng một số thư viện khác phục vụ cho việc thao tác trên ảnh DICOM ở phía client(thư viện Cornerstone.js) và việc trực quan khối 3 chiều (thư viện Three.js) .
4.3.3 Thư viện và frameworksDjango Django
Django là một web framework bậc cao được viết bằng Python, cho phép phát triển ứng dụng nhanh chóng, gọn gàng. Django đã giải quyết rất nhiều rắc rối trong quá trình phát triển web, giúp người dùng tập trung vào việc phát triển ứng dụng.
Trong phạm vi luận văn này, nhóm tận dụng thế mạnh sẵn có của Django kết hợp với Django REST framework nhằm xây dựng hệ thống RESTful API một cách nhanh chóng.
Django REST framework
Django REST framework (DRF) làm một bộ công cụ mãnh mẽ và linh hoạt để xậy dựng Web APIs. DRF cung cấp khả năng xác thực, tương tác với cơ sở dữ liệu và các lớp dựng sẵn giúp việc xây dựng RESTful API trở nên dễ dàng và an toàn hơn.
4.3. Công nghệ sử dụng ReactJS
ReactJS là một thư viện Javascript được sử dụng trong quá trình phát triển web để xây dựng những phần tử tương tác trên website. React sử dụng khái niệm Virtual DOM, Virtual DOM tạo ra bản cache cấu trúc dữ liệu của ứng dụng trên bộ nhớ. Với mỗi lượt thay đổi, React chỉ render lại những component thực sự thay đổi, việc này giúp tăng tốc độ phản hồi của ứng dụng một cách hiệu quả.
Nhóm sử dụng thư viện ReactJS kết hợp với Material-UI để xây dựng phần front-end cho hệ thống DAT, chi tiết sẽ được trình bày ở phần kiến trúc hệ thống.
Material-UI
Material-UI là một ngôn ngữ thiết kế được Google phát triển vào năm 2014. Với lượng component được thiết kế sắn rất đẹp mắt, Material-UI là một lựa chọn hấp dẫn để phát triển front-end.
Cornerstone.js
Cornerstone-core là một thư viện JavaScript dùng để hiển thị hình ảnh y khoa trên các trình duyệt web hiện đại hỗ trợ phần tử ’canvas’ HTML5. Cornerstone-core không phải là một ứng dụng hoàn chỉnh mà là một thành phần có thể được sử dụng như một phần của các ứng dụng lớn hơn, phức tạp hơn. Cornerstone cung cấp một tập các API cho phép thao tác và lưu trữ các thuộc tính hình ảnh y khoa bằng Javascript. Bản thân Cornerstone-core không có khả năng đọc / phân tích cú pháp hoặc tải hình ảnh và thay vào đó phụ thuộc vào một hoặc nhiều ImageLoader như CornerstoneWADOImageLoader hoặc CornerstoneWebImageLoader để hoạt động.
CornerstoneWebImageLoader là một trình tải hình ảnh dạng PNG, JPEG cho các trình duyệt web. CornerstoneWebImageLoader cung cấp cầu nối giữa thư viện Cornerstone-core và tiêu chuẩn hình ảnh của các trang web.
Cornerstone-Tools là một giải pháp nhẹ để xây dựng các công cụ trên Cornerstone.js. Nó chỉ phụ thuộc vào các thư viện trong họ Cornerstone. Thay vì cố gắng ’làm mọi thứ’, nó nhằm mục đích có thể mở rộng và có thể bổ sung được để hỗ trợ sự phát triển nhanh chóng của các công cụ mới. Lý
tưởng nhất là các công cụ được tạo ra bằng cách sử dụng các công cụ nền tảng có thể dễ dàng chia sẻ, cho phép tạo ra một hệ sinh thái rộng lớn hơn.
CornerstoneMath là một giải pháp cung cấp các chức năng toán học và hình học cho các thư viện trong họ Cornerstone.
React-three/fiber
Tiền thân là React-three-fiber, là một trình kết xuất (renderer) của React dành cho three.js. Trình kết xuất này có nhiệm vụ chuyển đổi từ các thành phần React (React component) sang three.js nguyên thủy (thực thể 3D).
Three.js
Three.js là một thư viện 3D được dùng để hiển thị nội dung 3D trên trang web trở nên dễ dàng nhất có thể. Three.js sử dụng WebGL để vẽ 3D. WebGL là một hệ thống cấp thấp chỉ vẽ các điểm, đường thẳng và hình tam giác. Khi làm việc với WebGL thường đòi hỏi khá nhiều mã nguồn được viết, đó là lý Three.js xuất hiện. Nó xử lý những thành phần như cảnh, đèn, bóng, vật liệu, kết cấu, toán học 3d, tất cả những thứ mà người dùng phải tự viết nếu sử dụng WebGL trực tiếp.
4.3.4 Cơ sở dữ liệu
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ miễn phí và nguồn mở (RDBMS) tập trung vào khả năng mở rộng và tuân thủ các tiêu chuẩn kỹ thuật. Nó được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng đồng thời.
PostgreSQL hỗ trợ đa nền tảng như Linux, macOS, FreeBSD, OpenBSD và Windows.
4.3. Công nghệ sử dụng 4.3.5 Công cụ, phần mềm hỗ trợ
Webpack
Về cốt lõi, webpack là một gói mô-đun tĩnh cho các ứng dụng JavaScript hiện đại. Khi webpack xử lý ứng dụng, nó xây dựng nội bộ một biểu đồ phụ thuộc ánh xạ mọi mô-đun mà dự án của bạn cần và tạo một hoặc nhiều gói.
Nginx
NGINX là một phần mềm web server mã nguồn mở dùng để phục vụ web HTTP. Tuy nhiên, ngày nay nó cũng được dùng làm reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP.
NGINX sử dụng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous). Tính năng này khiến NGINX server trở nên đáng tin cậy, tốc độ
và khả năng mở rộng lớn nhất.
Ngày nay, có nhiều web server phải chịu nhiều hàng ngàn kết nối. Với khả năng có thể xử lý hàng ngàn kết nối cùng lúc, nhiều website có traffic lớn đã sử dụng dịch vụ NGINX. Một số những nền tảng công nghệ sử dụng nó là Google, Netflix, Adobe, Cloudflare, WordPress,...
Docker
Docker là nền tảng phần mềm cho phép xây dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container - nơi chứa đựng mọi thứ mà phần mềm cần để hoạt động, trong đó có thư viện, công cụ hệ thống, mã nguồn. Bằng cách sử dụng Docker, có thể nhanh chóng triển khai và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và đảm bảo rằng chương trình sẽ hoạt động.
4.4 Kiến trúc hệ thống
4.4.1 Tổng quan kiến trúc hệ thống
Hình 4.2: Tổng quan kiến trúc hệ thống
Hệ thống DAT được xây dựng dựa trên mô hình MVT (Model - View - Template) của framework Django kết hợp với mô hình dự báo nhãn (AI MODEL). Model: Đây là phần trung gian chịu trách nhiệm xử lý dữ liệu giữa phần view (hiển thị cho người dùng) và phần cơ sở dữ liệu PostgreSQL. Model định nghĩa cấu trúc dữ liệu được lưu trữ cho phần dữ liệu đến từ View và truy xuât thông tin từ cơ sử dữ liệu, trả về cho View ở dạng xem được. Mỗi Model trong Django tương ứng với một bảng trong cơ sử dữ liệu.
View: Chịu trách nhiệm cho những gì người dùng thấy ở phía client. Một hàm view trong mô hình Django là một hàm Python nhận yêu cầu (“POST”,”GET”) từ phía người dùng và trả về một web response, response này có thể là nội dung HTML của trang web, một chuyển trang, một hình ảnh hoặc một response ở dạng JSON.
Template: Là phần thứ ba trong mô hình MVT, Template được viết bằng HTML, CSS và Javascript trong một file .html. Template cung cấp bố cục
4.4. Kiến trúc hệ thống
AI Model: Để việc làm nhãn được thuận tiện, nhanh chóng và chính xác hơn, AI Model được tích hợp vào hệ thống DAT. AI Model được chạy trong Django server và chịu trách nhiệm nhận yêu cầu từ phía client và trả về kết quả dự đoán.
4.4.2 Chi tiết kiến trúc hệ thốngSơ đồ use case Sơ đồ use case