3 CÁC CÔNG TRÌNH LIÊN QUAN
3.3 Mô đun gán nhãn 2D của ứng dụng Trainingdata [5]
data [5]
TrainingData.io là một nền tảng quản lý dữ liệu huấn luyện của học máy, là công cụ làm nhãn ảnh và video thành lập bởi một nhóm các nhà phát triển giải pháp cho Visual AI tại California - Mỹ. Ứng dụng TrainingData.io cung cấp tính năng ghi nhãn dữ liệu huấn luyện được hỗ trợ bởi AI có độ chính xác cao. Hệ thống hỗ trợ dữ liệu ở nhiều định dạng như JPEG, PNG, DICOM, avi, mp4, zip, tar,...
3.3. Mô đun gán nhãn 2D của ứng dụng Training data [5] 3.3.1 Tính năng gán nhãn thủ công
Ứng dụng này cung cấp các công cụ gán nhãn như: Draw - Vẽ nhãn tự do
Point - Xác định toạ độ của một điểm trên ảnh Polygon - Giới hạn vùng nhãn theo hình đa giác Rectangle - Giới hạn vùng nhãn theo hình chữ nhật Length - Đo khoảng cách giữa hai điểm trên ảnh Zoom in/zoom out - Thu nhỏ/phóng to ảnh Bright - Điều chỉnh độ sáng của ảnh.
Contrast - Điều chỉnh độ tương phản của ảnh. Invert - Đảo ngược màu ảnh.
Hình 3.10:Cửa sổ gán nhãn thủ công 2D trên ảnh y khoa của TrainingData [5]. 1-Thanhmenu chứa các công cụ gán nhãn, 2-Khu vực hiển thị ảnh y khoa. 3-Cấu hình các nhãn, menu chứa các công cụ gán nhãn, 2-Khu vực hiển thị ảnh y khoa. 3-Cấu hình các nhãn, mỗi loại nhãn tương ứng với một màu.
3.3.2 Tính năng dự đoán nhãn bằng AI
Trainingdata.io cung cấp API để dự đoán các nhãn bằng cách sử dụng mô hình hiện có của người dùng mà không cần phải cung cấp cho họ mô hình của bạn. Ngoài ra, người dùng còn được cung cấp một số mô hình học máy hiện có như: phân đoạn phổi, phát hiện đối tượng(người, xe đạp, ô tô, đèn giao thông),... để dự đoán các nhãn
4 TỔNG QUAN HỆ THỐNG LÀM
NHÃN ẢNH Y KHOA DAT
4.1 Mục tiêu của hệ thống DAT
Để đáp ứng nhu cầu làm nhãn ảnh y khoa phục vụ cho việc huấn luyện mạng học sâu, nhóm chúng tôi đã kế thừa và phát triển hệ thống DAT (Data Annotation Tool) của phòng lab Computer Vision and Graphics. DAT là một công cụ làm nhãn dữ liệu đặc thù cho ảnh DICOM.
Bài toán phân đoạn ảnh y khoa dùng mạng học sâu luôn cần một số lượng dữ liệu lớn. Nguồn dữ liệu dồi dào và chính xác là một trong những yếu tố giúp việc huấn luyện mạng hiệu quả hơn. Việc gán nhãn dữ liệu, đặc biệt là những tập dữ liệu đặc thù như ảnh y khoa cần có một công cụ hỗ trợ hợp lý. Nhận thức được nhu cầu này, nhóm đã cải thiện hệ thống DAT với nhiều chức năng phù hợp cho việc gán nhãn ảnh DICOM.
4.2 Phân tích yêu cầu
4.2.1 Quản trị hệ thống và dữ liệu
- Quản lý dữ liệu:
Chức năng tải lên dữ liệu làm nhãn: Dữ liệu ảnh DICOM cần lãm nhãn sẽ được tải lên ở dạng .dicom. Sau đó, dữ liệu sẽ được đẩy lên và lưu trữ tại Django server.
tập dữ liệu với những người dùng khác thông qua chức năng ’Invite’, người được mời sẽ có quyền truy cập vào tập dữ liệu được chia sẻ.
Chức năng xoá tập dữ liệu: Cho phép người dùng xoá tệp ảnh y khoa khỏi hệ thống.
4.2.2 Chức năng gán nhãn
Tải lên và lưu trữ ảnh y khoa
Trực quan khối 3 chiều của tập dữ liệu Sinh lát cắt ảo từ tập ảnh ba chiều
Vẽ nhãn bằng bút và vẽ nhãn theo hình tròn, hình chữ nhật. Chỉnh sửa nhãn bằng công cụ bút hoặc kéo
Xóa nhãn đang làm.
Phóng to, thu nhỏ và kéo thả vị trí của lát cắt ảo.
Đo độ dài giữa hai vị trí trên lát cắt ảo, góc, toạ độ của một vị trí cụ thể Sử dụng dự đoán AI để làm nhãn nhanh và chính xác hơn.
Tạo và lưu trữ nhãn. Thao tác undo.
Thao tác điều chỉnh khối và lát cắt ảo theo giá trị Hounsfield Unit để làm rõ từng đối tương cụ thể : gan, mạch máu, phổi ..
4.3. Công nghệ sử dụng4.3 Công nghệ sử dụng 4.3 Công nghệ sử dụng
4.3.1 Techstack
Hình 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
Sơ đồ sequence diagram
Hình 4.4: Sơ đồ sequence diagram hệ thống DAT
Thiết kế cơ sở dữ liệu với Django Models
Framework Django hỗ trợ lớp model để người dùng tương tác với cơ sở dữ liệu, mỗi model là một bảng gồm những trường được mô tả và quan hệ với các model khác (nếu có). Với hệ thống DAT này, ngoài những bảng dữ liệu được kế thừa, chúng tôi thiết kế thêm hai bảng dữ liệu chính:
Bảng dữ liệu để lưu nhãn đã làm: Sau khi bước làm nhãn kết thúc, dữ liệu nhãn sẽ được lưu trong bảng này.
4.4. Kiến trúc hệ thống
người dùng có thể chạy dự đoán AI để hỗ trợ việc làm nhãn. Khi chạy dự đoán AI, url dẫn tới mô hình AI sẽ được lưu vào bảng dữ liệu này để lấy được nhãn dự báo.
5.1 Chức năng đăng ký tài khoản và đăng nhập 5.1.1 Chức năng đăng ký tài khoản
Để đăng nhập vào hệ thống DAT, người dùng cần đăng ký một tài khoản cho riêng mình. Tài khoản được sử dụng nhằm mục đích định danh người dùng cho các tác vụ về sau.
Hình 5.1: Giao diện đăng ký tài khoản
5.1. Chức năng đăng ký tài khoản và đăng nhập
Tuy nhiên, chúng tôi sử dụng kết hợp với simple-jwt để hỗ trợ người dùng đăng nhập thông qua JSON Web Token (JWT) - sẽ được trình bày ở phần tiếp theo.
5.1.2 Chức năng đăng nhập
Sau khi đã có tài khoản, người dùng có thể đăng nhập vào hệ thống. Sau khi đăng nhập, người dùng được cấp một JWT, JWT này được đính vào header của yêu cầu (request) khi người dùng thực hiện các tác vụ đòi hỏi người dùng phải được xác thực. JWT được thiết lập có thời hạn sáu mươi phút. Trường hợp người dùng đăng xuất, JWT này sẽ được lưu vào bảng BlacklistToken để vô hiệu hóa hiệu lực của JWT trong trường hợp JWT chưa hết hạn.
Hình 5.2: Giao diện đăng nhập vào hệ thống DAT
5.1.3 Chức năng thay đổi mật khẩu
Khi nhấn vào nút chứa tên người dùng ở góc trên bên phải thanh menu, người dùng có thể thay đổi mật khẩu hiện tại.
Hình 5.3: Giao diện menu đổi mật khẩu
(a) Giao diện đổi mật khẩu (b) Giao diện đổi mật khẩu thành công
5.2. Chức năng tải lên tập dữ liệu làm nhãn, chia sẻ và xóa tập dữ liệu5.2 Chức năng tải lên tập dữ liệu làm nhãn, chia 5.2 Chức năng tải lên tập dữ liệu làm nhãn, chia
sẻ và xóa tập dữ liệu
5.2.1 Chức năng tải lên tập dữ liệu
Hình 5.5: Giao diện tải lên tập dữ liệu mới và hiển thị những tập dữ liệu hiện có
Tại trang chủ, những tập dữ liệu nào có sẵn sẽ hiện trên giao diện chính của người dùng. Người dùng có thể tải lên tập dữ liệu y khoa cần làm nhãn bằng cách