Chương 1. Giới thiệu React Hình 2.3: Logo của ReacJS React (còn được gọi là ReactJS) là một Thư viện javascript được tạo ra bởi sự cộng tác giữa Facebook và Instagram. Nó cho phép những nhà phát triển web tạo ra giao diện người dùng nhanh chóng. Phần Views của Reactjs thường được hiển thị bằng việc chủ yếu dung các component mà chứa các component cụ thể hoặc các thẻ HTML.
Một trong những đặc trưng duy nhất của Reactjs là việc render dữ liệu không những có thể thực hiện ở tầng server mà còn ở tầng client. Nó cũng sử dụng khái niệm là Virtual DOM (DOM ảo). Virtual DOM tạo ra bản cache cấu trúc dữ liệu của ứng dụng trên bộ nhớ. Sau đó, ở mỗi vòng lặp, nó liệt kê những thay đổi và sau đó là cập nhật lại sự thay đổi trên DOM của trình duyệt một cách hiệu quả.
Điều này cho phép ta viết các đoạn code như thể toàn bộ trang được render lại dù thực tế là Reactjs chỉ render những component hay subcomponent nào thực sự thay đổi. NGUYỄN VĂN HÙNG – B19DCCN301 8 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Ưu điểm của ReactJS: ● Reactjs có hiệu quả tốt: Reactjs tạo ra cho chính nó Vitual DOM – nơi mà các component thực sự tồn tại trên đó. Điều này sẽ giúp cải thiện hiệu suất rất nhiều. Reactjs cũng tính toán những thay đổi nào cần cập nhật lên DOM và chỉ thực hiện chúng.
Điều này giúp Reactjs tránh những thao tác cần trên DOM mà nhiều chi phí. ● Reactjs giúp việc viết các đoạn code JS dễ dàng hơn: Nó dùng cú pháp đặc biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript. Ta có thể thêm vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi. Đây là đặc tính thú vị của Reactjs.
Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX. ● Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi. NGUYỄN VĂN HÙNG – B19DCCN301 9 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Giới thiệu Spring Boot Hình 2.4: Logo của Spring Boot Spring Boot là một trong số các module của spring framework chuyển cung cấp các tính năng RAD(Rapid Application Development) cho phép tạo ra và phát triển các ứng dụng độc lập dựa trên spring một cách nhanh chóng.
Spring Boot ra đời với mục đích loại bỏ những cấu hình phức tạp của Spring, nó không yêu cầu cấu hình XML và nâng cao năng suất cho các nhà phát triển. Với sự góp mặt của Spring Boot, hệ sinh thái Spring đã trở nên mạnh mẽ, phổ biến và hiệu quả hơn bao giờ hết. Ưu điểm của Spring Boot: Spring Boot được thiết kế để giúp các kỹ sư phần mềm đẩy nhanh quá trình phát triển, cho phép họ loại bỏ việc thiết lập và cấu hình ban đầu tốn thời gian của môi trường triển khai. Các lợi ích chính của Spring Boot bao gồm: ● Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng.
● Tự động cấu hình tất cả các components cho một ứng dụng Spring cấp sản xuất. NGUYỄN VĂN HÙNG – B19DCCN301 10 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ● Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn. ● Điểm cuối HTTP, cho phép nhập các tính năng bên trong ứng dụng như chỉ số, tình trạng sức khỏe, v. ● Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng và trong bộ nhớ.
● Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác. ● Tích hợp trơn tru với hệ sinh thái Spring. ● Cộng đồng lớn và rất nhiều hướng dẫn, tạo điều kiện cho giai đoạn làm quen. NGUYỄN VĂN HÙNG – B19DCCN301 11 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.
Giới thiệu cơ sở dữ liệu MySQL Hình 2.5: Logo của MySQL MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. Người dùng có thể tải về MySQL miễn phí từ trang chủ.
MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,. Ưu điểm của MySQL: ● MySQL là một cơ sở dữ liệu đa nền tảng tốc độ cao, ổn định, dễ sử dụng, cung cấp một tập hợp lớn các chức năng tiện ích rất mạnh mẽ. ● Do MySQL có nhiều tính năng bảo mật, tất cả đều mức cao nên nó rất lý tưởng cho các ứng dụng truy cập cơ sở dữ liệu trên Internet. ● Bất kỳ ai học MySQL cơ bản đều biết MySQL hỗ trợ nhiều hàm SQL được mong đợi của một hệ quản trị cơ sở dữ liệu quan hệ, cả trực tiếp và gián tiếp.
NGUYỄN VĂN HÙNG – B19DCCN301 12 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ● MySQL có thể xử lý một lượng lớn dữ liệu và nếu cần và nó có thể mở rộng nhanh chóng. ● Việc áp dụng một số tiêu chuẩn cho phép MySQL hoạt động rất hiệu quả và tiết kiệm chi phí, tăng tốc độ thực thi. Giới thiệu về YOLO 2. Bài toán nhận diện đối tượng Theo yêu cầu đặt ra cho hệ thống, chúng ta cần có một module giúp bài đăng đăng lên được kiểm duyệt một cách tự động.
Do giới hạn về thời gian và tài nguyên, trong đồ án này sẽ tập trung vào việc kiểm duyệt thông qua các ảnh của bài đăng với ý tưởng như sau: Khi bài đăng được tạo bởi người dùng, danh sách ảnh của bài đăng sẽ được gửi cho một hệ thống dự đoán, hệ thống này trả về kết quả cho hệ thống chính và từ đó hệ thống chính quyết định sẽ kiểm duyệt, khóa hay chuyển cho Quản lý trang web kiểm duyệt thủ công. Cụ thể chúng ta sẽ kiểm duyệt qua ảnh như thế nào? Chúng ta cần nhận biết bức ảnh đó có “thỏa mãn” yêu cầu của chúng ta không. Yêu cầu được đặt ra ở đây là “Bức ảnh đó có liên quan đến quần áo không?”. Từ đó ta cần nhận diện được liệu trong bức ảnh đó có chụp đối tượng là quần áo không.
Với luồng tư duy đó, chúng ta cần có kiến thức về bài toán Phát hiện đối tượng (Object detection) trong Thị giác máy tính. Phát hiện đối tượng là một bài toán phổ biến trong thị giác máy tính. Nó liên quan đến việc khoanh một vùng quan tâm trong ảnh và phân loại vùng này tương tự như phân loại hình ảnh. Tuy nhiên, một hình ảnh có thể bao gồm một số vùng quan tâm trỏ đến các đối tượng khác nhau.
Điều này làm cho việc phát hiện đối tượng trở thành một vấn đề nâng cao hơn của phân loại hình ảnh. Các mô hình có thể áp dụng cho bài toán a. Faster RCNN Giới thiệu Faster RCNN là một trong các phương pháp phát hiện đối tượng sử dụng mạng Deep learning đạt độ chính xác cao trên các tập dữ liệu chuẩn như COCO. Faster RCNN được cải tiến dựa trên 2 phương pháp trước đó là RCNN và Fast RCNN.
Trong Faster RCNN, tác giả đề xuất sử dụng mạng các vùng đề xuất RPN (Region Proposal Network) để tạo ra các vùng đề xuất. Sau khi có được các đặc trưng từ các lớp tích chập (convolutional) đầu tiên, mạng RPN sử dụng cửa sổ trượt trên bản đồ đặc trưng (feature map) để rút trích đặc trưng cho mỗi vùng đề xuất. RPN được xem như là một NGUYỄN VĂN HÙNG – B19DCCN301 13 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT mạng liên kết đầy đủ cùng lúc thực hiện 2 nhiệm vụ đó là dự đoán tọa độ cho các đối tượng và độ tin cậy cho đối tượng đó (objectness score). So với các phương pháp trước đó Faster RCNN đạt kết quả cao hơn và có thời gian xử lý nhanh hơn, tuy nhiên tốc độ vẫn vẫn chưa thể đáp ứng xử lý theo thời gian thực.
Mô hình Faster RCNN có thể được mô phỏng như hình sau: Hình 2.6: Kiến trúc Faster RCNN [1] b. SSD (Single Shot Detector) Giới thiệu Trong SSD, tại mỗi vị trí trên feature map, SSD đặt các default bounding boxes với kích thước, tỷ lệ khác nhau. Trong quá trình xử lý, SSD sẽ đánh giá và tìm đối tượng trên các bounding box này nhằm tìm ra box phù hợp nhất với đối tượng cần tìm kiếm. Thêm vào đó, bằng việc tìm kiếm trên các feature map khác nhau, SSD có thể tìm kiếm các đối tượng với kích thước khác nhau mà không cần thay đổi kích thước của các bounding box.
Thực nghiệm cho thấy, SSD đạt 74.3% mAP trên tập test của VOC2007, đạt 59 FPS khi sử dụng Nvidia Titan X với kích thước ảnh đầu vào 512 x 512, nhanh hơn Faster R-CNN. NGUYỄN VĂN HÙNG – B19DCCN301 14 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Hướng tiếp cận Ý tưởng chính của SSD đến từ việc sử dụng các bounding box, bằng việc khởi tạo sẵn các box tại mỗi vị trí trên ảnh, SSD sẽ tính toán và đánh giá thông tin tại mỗi vị trí xem vị trí đó có vật thể hay không, nếu có thì là vật thể nào, và dựa trên kết quả của các vị trí gần nhau, SSD sẽ tính toán được một box phù hợp nhất bao trọn vật thể. Ngoài ra, bằng việc tính toán bounding box trên các feature map khác nhau, tại mỗi tầng feature map, một box sẽ ôm trọn một phần hình ảnh với các kích thước khác nhau. Như trên ví dụ trên, con mèo và con chó có thể được phát hiện ở 2 tầng feature map khác nhau, 2 kích thước và tỉ lệ khác nhau.
Thay vì sử dụng 1 box và thay đổi kích thước box cho phù hợp với vật thể, thì SSD sử dụng nhiều box trên nhiều tầng, từ đó tổng hợp ra vị trí và kích thước box kết quả. Bằng việc loại trừ các region proposal, SDD có thể đạt được tốc độ xử lý cao hơn Faster R-CNN. YOLO (You look only once) YOLO được xem là phương pháp đầu tiên xử lý dữ liệu theo thời gian thực và vẫn đạt được độ chính xác cao.