2 Nền tảng và các cơng trình liên quan
2.3 Các thách thức tiêu biểu
Qua khảo sát các phương pháp và hướng tiếp cận hiện có, nhóm xin đưa ra một vài khó khăn cản trở việc nghiên cứu được ứng dụng rộng rãi như sau.
Sai khác giữa các GUI element trong cùng một lớp
Một GUI element được phân lớp phụ thuộc vào chức năng của nó. Khi GUI element được biểu diễn thành giao diện, element đó sẽ được tùy chỉnh các thơng số như kích thước, màu sắc, vị trí, etc tùy thuộc vào mong muốn của người thiết kế. Giữa các GUI element thuộc 1 lớp có thể có nhiều biến thể khác nhau cho nên sẽ rất khó để có thể phát hiện và phân loại chính xác các GUI element.
Sự tương đồng giữa các GUI element khác lớp
Như đã nói ở trên thì các thuộc tính của một GUI element có thể được tùy chỉnh, vì vậy các GUI element thuộc các lớp khác nhau có thể có kích thước hay màu sắc giống nhau làm ảnh hưởng tới tính chính xác cho q trình phát hiện và phân loại.
Xác định một element hay một tập các element
Một số GUI element có thể khá phức tạp, điển hình như ImageView là một vùng hiển thị ảnh. Nếu như background ảnh quá phức tạp ta có thể nhận diện được rất nhiều component bên trong ImageView nhưng thực chất tất cả vẫn chỉ là 1 bức ảnh. Vì vậy phải cân nhắc vấn đề này khi thực hiện bước phát hiện.
Khoảng cách giữa các GUI element với nhau
Một giao diện thường có rất nhiều GUI element và trong nhiều trường hợp các GUI element này nằm rất sát nhau. Lấy ví dụ như thanh menu gồm nhiều button nằm sát nhau, khi thực hiện phát hiện các element trong ảnh có khả năng vì các button nằm quá sát nên bộ phát hiện chỉ thấy có một element là cả thanh menu nhưng thực chất thanh menu lại có nhiều button. Cho nên đây là một thách thức trong quá trình xây dựng bộ phát hiện element trong giao diện.
Tính chính xác cao cho việc nhận diện
Đối với bài toán phát hiện vật thể, một chỉ số thường được sử dụng để đánh giá là IOU(Intersection Over Union, hình 2.31). Chỉ số này được tính dựa trên diện tích phần chồng lắp giữa 2 bounding box trên cho tổng diện tích phần hợp nhau. Trong bài tốn phát hiện vật thể, như đã nói ở trên, ta sẽ có sẵn những ground truth bounding box và sẽ học cách để đưa ra dự đoán bouding box. Bằng cách tính IOU giữa bouding box dự đốn và ground
truth bounding box, ta sẽ kiểm chứng được box mà ta dự đốn đúng là vật thể hay khơng.
Đối với việc dự đoán các vật thể đơn giản như chó, mèo, xe cộ, etc, thì ngưỡng IOU đặt ra để xác định xem việc dự đốn đúng hay khơng thường khá thấp, chỉ tầm 0,5. Tuy nhiên đối với bài toán phát hiện các thành phần GUI này, ngưỡng IOU có yêu cầu khá cao bởi vì việc xác định thiếu chính xác sẽ ảnh hưởng tới bước phân loại các thành phần GUI và đưa ra các GUI component có kích thước, vị trí sai lệch so với ảnh gốc
3 Nhận diện và phân loại các
thành phần giao diện của ứng dụng từ ảnh chụp màn hình
Ở phần 2, nhóm đã phân tích các giải pháp được đề xuất cho bài toán
Nhận diện và phân loại các thành phần giao diện của ứng dụng từ ảnh chụp màn hình. Mỗi cách tiếp cận đều có ưu nhược điểm riêng phần của mình.
Trong phần 3, nhóm sẽ trình bày hướng tiếp cận và giải pháp mà nhóm cho rằng là hiệu quả và phù hợp nhất. Hướng tiếp cận này dựa trên ý tưởng chính của hai bài nghiên cứu khoa học gần đây là ReDraw [23] và UI2CODE [21]
Những năm gần đây, với sự phát triển vượt bậc của các kỹ thuật liên quan đến Machine Learning nói chung hay Deep Learning nói riêng, hàng loạt các nghiên cứu khoa học đã cơng bố các mơ hình mạng Neural đảm nhiệm vai trị trên, trong số các mơ hình tiêu biểu khơng thể khơng kể đến các mơ hình two-staged anchor-based. Mặc dù vậy, khi áp dụng dạng mơ hình trên (cụ thể FasterRCNN) trong lĩnh vực này lại không đem lại kết quả khả quan. Giải pháp nhóm đưa ra cho bài tốn này là sử dụng tổ hợp các kỹ thuật của thị giác máy tính truyền thống như: Flood Fill [28], Suzuki Contour Tracing [13], Shape Recognition [29], kết hợp vào các kỹ thuật hiện đại như: Scene Text Recognition [18], Classification Neural Network, etc để nhận diện và phân loại các thành phần giao diện.
giai đoạn xử lý chính: Phát hiện (detection), Nhận diện (classification) và tổ hợp (combine). Hình 3.1 thể hiện lược đồ đơn giản thứ tự hoạt động giữa các
giai đoạn
Hình 3.1: Tổng quan giải pháp thực hiện đề tài của nhóm
3.1 Giai đoạn I - Phát hiện và khoanh vùng các thành phần giao diện
Phát hiện và khoanh vùng các thành phần giao diện là một bước quan trọng trong phương pháp mà nhóm đề xuất. Giai đoạn này (Hình 3.2) nhận
đầu vào là hình ảnh của giao diện người dùng, sử dụng các kỹ thuật trong Thị giác máy tính (Phát hiện cạnh - Edge detection hoặc Theo dõi đường bao - Contour tracing). Kết quả cuối cùng của quá trình phát hiện thành phần GUI là một tập hợp các tọa độ hộp giới hạn (bounding box) nằm trong ảnh chụp màn hình đầu vào ban đầu và một tập hợp các hình ảnh được cắt và trích xuất từ bản gốc ảnh chụp màn hình theo các hộp giới hạn mô tả các thành phần GUI. Thơng tin này sau đó được cung cấp vào mạng CNN để được phân loại thành các lớp GUI trong Giai đoạn 2.2. Cần lưu ý rằng chỉ các thành phần GUI được phát hiện trong quá trình này, các tổ hợp GUI sẽ không được đề cập trong báo cáo này.
Algorithm 1: GUI Component Detector
Input :Screenshot of GUI
Output :Non-Text Component
// Step 1: Binarization
binary =Binarization(screen) // Step 2: First detection
width, height =Shape(screen)
out = [] fori←0 to width do for j ←0 to height do map ← screen.Copy() map =FloodFill(map, (i, j)) map =Segment(map) out.Push(Component(map)) end end
// Step 3: Detection refinement
out =UnionOverlapsed(out) // Step 4: Nested fusion