Các xử lý kỹ thuật khi tách đối tượng tự động bằng Grab-cut

Một phần của tài liệu Nghiên cứu và thử nghiệm các phương pháp tách đối tượng trên ảnh (Trang 40)

3.1. Vấn đề ảnh có lẫn màu nền

Sau khi đã có chọn vùng ảnh sản phẩm, thuật toán grab-cut sẽ phân vùng ảnh thành 4 mảng sau:

 Mảng chắc chắn là nền: đó là phần ngoài của vùng được chọn

 Mảng chắn chắn là đối tượng: phần này nhìn chung là sẽ là rỗng, trừ khi đó là do người dùng nhập vào.

 Mảng có xác suất là nền cao: là phần do thuật toán Grab-cut tự tính toán dựa vào hàm năng lượng đã trình bày ở phần trên, đó là phần có độ tương đồng cao với phần chắc chắn là nền.

Bước 1. lọc bỏ nhiễu do quá trình chụp

Bước 2. làm mờ ảnh để các vùng có sai số về màu sắc có thể về cùng giá trị

Bước 3. chọn ba vùng ảnh ở góc (5x5), tính giá trị trung bình, từ 3 điểm ta sẽ mặt phẳng S

Bước 4. Tính khoảng các các điểm trên ảnh theo S

 Mảng có xác suất là đối tượng cao: cũng do Grab-cut tự tính là phần có độ tương đồng không cao với phần chắc chắn là nền.

Sau mỗi lần lặp hai mảng bên dưới có thể thay đổi, theo sự hội tụ của hàm năng lượng đã trình bày ở chương trước.

Tuy nhiên một chương trình máy tính thì khó có thể biết được phần nào là phần ảnh sản phẩm thật, và phần nào là phần sót nền. Xét hai ví dụ sau, ở ví dụ bên trái, Grab-cut đưa chú chim vào mảng có xác suất là nền cao. Tương tự như ảnh bên phải, phần nền bên trong chiếc thắt lưng cũng được đưa vào danh sách này. Tuy nhiên dễ dàng nhận ra với ảnh bên phải thì Grab-cut đã bị nhầm vì đó là một phần của ảnh.

HÌnh 2-13. Ví dụ ảnh lẫn màu nền

Vì vậy, khi xây dựng ứng dụng thực tế, cần phải chọn một trong hai cách trên, hoặc đưa tham số đầu vào để mô tả trong sản phẩm có nền hay không. Ở trường hợp bên trái, sau khi Grab-cut chỉ ra vùng có xác suất cao là nền, trong đó có bao gồm cả một phần sản phẩm, thì ta cần thực hiện một thuật toán để tìm các đường bao của các vùng nhỏ này. Sau đó chọn đường bao có chu vi lớn nhất. Chỗ này cần chú ý ở những sản phẩm có các mảng dời nhau, vì ta chỉ đang xem xét loại bỏ các thần phần bên trong sản phẩm bị đánh giá nhầm là nền thôi.

3.2. Vấn đề bóng sản phẩm

Trong khi chụp ảnh thường để lại bóng ánh sáng. Có hai loại bóng phổ biến nhất là bóng đổ dạng gradient (drop shadow), hoặc bóng gương (reflection shadow).

Hình 2-14. Ví dụ bóng đổ và bóng gương

Bóng đổ là bóng ánh sáng thông thường, còn bóng gương in hình sản phẩm do khi chụp đặt sản phẩm trên các nền bóng có thể phản chiếu hính sản phẩm.

Với các trường hợp có bóng sản phẩm, nhìn chung là chương trình sẽ lấy cả bóng. Tuy nhiên vì ranh giới giữa bóng và phần nền là vô cùng nhỏ, nên việc lấy chính xác bóng là vấn đề khá khó khăn. Nên trong phạm vi chương trình thử nghiệm, tạm thời bỏ qua các trường hợp này.

3.3. Vấn đề ảnh chụp cùng các thiết bị khác

Để tạo một hình ảnh đẹp cho sản phẩm, khi chụp sản phẩm quần áo thường được chụp cùng với người, hoặc mannequin. Tuy nhiên trong hầu hết các trường hợp chương trình không thể tách được chính xác

Hình 2-15. Ví dụ ảnh chụp cùng mannequin

3.4. Vấn đề kích thước ảnh và thời gian xử lý

Kích thước ảnh ảnh hưởng lớn đến thời gian xử lý của thuật toán. Qua thử nghiệm trên máy tính cá nhân, tôi có bảng thống kê trung bình sau cho cùng một ảnh kích thước 3x4

Max(width,height) thời gian (giây)

200px 2

400px 5

800px 21

1600px 61

4928px (ảnh gốc) 278

Bảng 2-16. bảng thời gian tính theo kích thước ảnh (adsbygoogle = window.adsbygoogle || []).push({});

Từ bảng trên có thể thấy thời gian tính tăng gần như tuyến tính với kích thước hai chiều của ảnh. Vì vậy, khi xử lý, có thể nghĩ đến việc thu nhỏ kích thước ảnh trước khi tách, sau khi có được vùng sản phẩm, có thể ánh xạ ngược lại ảnh gốc. Tuy nhiên cách này có thể làm đường biên không đẹp, hoặc bị sai số khi ánh xạ ngược lại.

3.5. Vấn đề số lần lặp Grab-cut

Khi sử dụng thuật toán Grab-cut, có một tham số là số lượt lặp trong phân tách. Số lượt lặp càng nhiều thì sự phân biệt giữa đối tượng và nền càng rõ ràng hơn. Tuy nhiên nếu biên ảnh yếu, thì càng lặp, có thể càng bị mất sản phẩm vì càng bị nền lấn vào. Về cơ bản thì số lần lặp càng nhiều thì càng chính xác, và đến một tới hạn thì lặp sẽ không làm thay đổi ảnh nữa.

Về thời gian tính, thì số lần lặp gần như thay đổi tuyến tính theo số lần lặp. Qua thử nghiệm ta có thể lựa chọn số lần lặp phù hợp với chất lượng và thời gian tính với yêu cầu của bài toán.

Triển khai chương trình thử nghiệm 1. Chương trình thử nghiệm

1.1. Môi trường

Máy tính: CPU Intel core i5-3210M (3.5GHz, 3MB L3); RAM: 8GB DDR3 Hệ điều hành: Window 8

Ngôn ngữ: Visual C++ IDE: Visual studio 2013 Thư viện: OpenCV v2.4.10

1.2. Cấu trúc chương trình.

1.3. Dữ liệu đầu vào

Chương trình có các dữ liệu đầu vào:

 File/folder: chỉ đường dẫn đến file, hoặc folder cần xử lý. Đọc dữ liệu ảnh, đổi thành kích về nhỏ hơn

Tính toán đường bao đối tượng

Dùng Grab-cut lặp tính được 4 mảng đối tượng

Xem xét loại bỏ các vùng nền bên trong sản phẩm

Tạo vùng đánh dấu sản phẩm

Ánh xạ lại vùng đánh dấu với ảnh gốc

 Ngưỡng khoảng cách độ xám của đối tượng so với mặc phẳng nền mặc định là 50% phân phối theo xác suất.

 Số lượt lần lặp trong thuật toán Grab-cut, số này càng lớn thì chạy càng lâu, nhưng chất lượng và độ chính xác càng cao, giá trị mặc định là 80

 Kích thước ảnh nhỏ trung gian trong quá trình xử lý tách (nếu để <=0 thì sẽ lấy kích thước ảnh gốc)

 Các tham số hậu xử lý: mã màu nền của ảnh đầu ra, kích thước ảnh đầu ra, và lề của ảnh đầu ra.

1.4. Dữ liệu đầu ra

Ảnh sau phân tách và hậu xử lý.

Hình 3-1. Kết quả ảnh đầu ra

2. Tiêu chuẩn chất lượng

Tiêu chuẩn chất lượng ảnh đầu ra sẽ theo đúng tiêu chuẩn đang được áp dụng tại công ty Remove The Background. Tại đây, công ty nhận xử lý ảnh chụp sản phẩm từ các website bán lẻ khác, sau đó nhân viên dùng phần mềm Photoshop để lọc bỏ nền, sau đó tạo lề cho ảnh và một số công đoạn hậu xử lý khác theo yêu cầu của từng

khách hàng. Sau đó ảnh sẽ được chạy qua một chương trình kiểm tra tự động, kiểm tra các thông tin có thể thực hiện bằng máy như kích thước ảnh, kích thước đường viền… Cuối cùng, sẽ có một nhân viên kiểm tra lại chất lượng đường viền, các phần sản phẩm có bị mất hay bị xót nền không. Sau khi qua hai vòng kiểm tra, ảnh sẽ được trả lại cho khách hàng – là các website bán lẻ, và ảnh sẽ được dùng để đăng tải lên các website bán lẻ.

2.1. Kiểm tra chất lượng tự động

 Ảnh kết quả có kích thước của ảnh đầu ra đúng với yêu cầu không?

 Ảnh kết quả có nền ảnh có màu (hoặc trong suốt) đúng với yêu cầu không?  Ảnh kết quả có khoảng cách lề sản phẩm đúng yêu cầu không? (adsbygoogle = window.adsbygoogle || []).push({});

2.2. Kiểm tra chất lượng bằng mắt

 Ảnh kết quả có bị xót nền không?

 Ảnh kết quả có bị mất một phần ảnh sản phẩm không?  Ảnh kết quả có chất lượng đường viền tốt không?

3. Kết quả chạy thử nghiệm và đánh giá 3.1. Kết quả 3.1. Kết quả

Tôi cho thử nghiệm chương trình với dữ liệu đầu vào là 500 ảnh ngẫu nhiên được chọn từ ảnh sản phẩm thật của công ty. Số lượng ảnh đa dạng về nền cũng như chất lượng ảnh. Kích thước ảnh giao động từ 1600 => 4000px. Bộ số đầu vào mặc định, lề mỗi chiều 5% và nền trắng. Grab-cut lặp 30 lần.

Kết quả như sau:

 Số ảnh đáp ứng được yêu cầu đầu ra là 91 ảnh đạt 18.2%  Thời gian xử lý trung bình mỗi ảnh: 1 phút 55 giây

Tuy nhiên, nếu để ý một chút, tôi nhận ra 91 ảnh đó đến từ 8 khách hàng (nhóm ảnh), nếu chọn 3 khách hàng có số ảnh trong đó nhiều, tối có 57 ảnh, 3 khách hàng này có 77 ảnh tham gia thử nghiệm trong tổng 500 ảnh, vì vậy tỷ lệ thành công của nhóm ba khách hàng này là 74.02%.

Tiếp tục, tôi lấy thêm 500 ảnh khác của nhóm 3 khách hàng đó để chạy lại, thì kết quả có 393 ảnh đạt chất lượng tốt, 21 ảnh là có thể tạm chấp nhận về chất lượng như của công ty đang áp dụng, đạt tỷ lệ 82.8%

Số lần lặp trong grabcut Độ chính xác Độ chính xác trong bộ đầu vào chọn Thời gian (phút:giây) 1 14.4% 80.8% 0:03 30 18.2% 82.8% 1:08 80 19.8% 83.2% 1:55 160 19.8% 83.2% 3:30

Hình 3-2. Kết quả chạy thử nghiệm

Qua bảng trên có thể thấy số lần lặp grabcut nhiều không ảnh hưởng quá nhiều đến độ chính xác của đầu ra, mà thời gian thì lại gần như tỷ lệ thuận với số lần lặp. Chính vì vậy chọn số lần lặp phù hợp ở mức trung bình là tốt hơn.

3.2. Đánh giá và so sánh 3.2.1.Độ chính xác 3.2.1.Độ chính xác

Như kết quả ở trên độ chính xác trong tập ảnh sản phẩm đầu vào ngẫu nhiên đạt 18.2%, nếu chọn lựa nhóm ảnh có nền đơn giản thì tỷ lệ thành công đạt khoảng 70-80%. Nếu cẩn thận lựa chọn tham số đầu vào phù hợp

Lấy 5 ảnh được xử lý chính xác và 5 ảnh xử lý không chính xác của chương trình tải lên hai website cho phép làm tự động Background Removal (BR

freebackgroundremoval.com), và Background Burner (BB bonanza.com). Kết quả trong 10 ảnh tải lên, BR chỉ đúng 3 trường hợp, BB đúng 2 trường hợp. Các trường hợp ảnh có biên yếu đều bị sai.

Nếu so với con người xử lý ảnh đó trên phần mềm Photoshop thì đương nhiên chất lượng người xử lý cao hơn rất nhiều, đặc biệt là với đường viền ảnh. Vì người thường sử dụng cộng cụ Pen để tạo các đường vector bao quanh ảnh, thay vì phân tách dựa vào ngưỡng điểm ảnh như chương trình.

3.2.2.Thời gian xử lý

Với khoảng gần 2 phút xử lý cho mỗi ảnh trên máy tính cá nhân, thời gian đó là lâu hơn thời gian xử lý trên hai website tự động là BB và BR. Tuy nhiên nếu giảm kích thước file để làm mẫu phân tách xuống 200px và giảm số lượt lặp Grab-cut xuống còn 1 lần, thì thời gian tính của chương trình tương đương với hai website đó.

Nếu so sánh thời gian xử lý với con người xử lý trên phần mềm Photoshop, thì tất nhiên xử lý bằng máy tính nhanh hơn rất nhiều. Bên cạnh đó, phần mềm xử lý có thể đặt trực tiếp trên server, vì vậy không cần tốn thời gian và băng thông tải file về máy client.

Kết luận

Kết quả đạt được

Luận văn đã thực hiện nghiên cứu và thử nghiệm tách đối tượng tự động trên nền ảnh của ảnh chụp dùng trong thương mại điện tử. Ảnh đầu ra cần qua một bước lọc bằng con người đầu cuối, trước khi đăng tải lên website bán lẻ. Tỷ lệ lọc bỏ nền chính xác (theo tiêu chuẩn đang được áp dụng tại công ty removethebackground) cho một số nhóm ảnh đạt tỷ lệ 70-80%. Đây là một tỷ lệ đáng chú ý, vì những nhóm ảnh này lại thường chiếm số lượng lớn ảnh cần phải xử lý.

Kết quả lớn nhất đạt được là tôi đã có được một cái nhìn tổng thể về các hướng tiếp cận một bài toán tách đối tượng trong ảnh, và hiểu ý tưởng cơ bản thuật toán Grab-cut. Tôi cũng đã hiểu cách xây dựng một ứng dụng, các phương pháp đơn giản trong việc chọn tham số, tối ưu thời gian và nâng cao chất lượng đầu ra.

Với kết quả đã ghi nhận ở đầu ra, tôi vui mừng khi luận văn đã đáp ứng được với mục đích bạn đầu khi bắt tay vào làm đề tài này. Tôi tự tin hơn vào tính ứng dụng thực tế của luận văn, và hướng phát triển trong thời gian tới.

Tính ứng dụng thực tiễn

Hiện tại với một khối lượng ảnh khổng lồ dùng trong thương mại điện tử như hiện nay, thì việc có một ứng dụng giúp giải quyết một phần tự động trong việc xử lý những ảnh sản phẩm cũng sẽ mang lại những giá trị không nhỏ. Tính ổn định và chính xác của ảnh sản phẩm đầu ra có thể được thực hiện thêm bước giám sát của con người ở bước cuối của quá trình xử lý. Việc phân loại ảnh đạt chất lượng hay chưa sẽ tiết kiệm nhiều công sức hơn là phải tự làm ảnh đó.

Hướng nghiên cứu tiếp theo

Trong các bài toán về xử lý ảnh luôn đòi hỏi một quy trình trong việc chọn tham số phù hợp, và đây cũng không là ngoại lệ. Việc xây dựng thuật toán để tính ra tham số trước hoặc trong quá trình xử lý có thể sẽ là một hướng nghiên cứu mới giúp nâng cao chất lượng ảnh đầu ra, cũng như nâng cao sự chính xác của ảnh đầu ra. Các lý thuyết về trí tuệ nhân tạo có thể được áp dụng, vì quy trình có sự phân loại giám

sát của con người ở bước cuối, đây sẽ là một dữ liệu học rất tốt cho hệ thống ra quyết định. (adsbygoogle = window.adsbygoogle || []).push({});

Tài liệu tham khảo

[1] Lương Mạnh Bá, Nguyễn Thanh Thủy (2003), Nhập môn xử lý ảnh số, nhà xuất bản khoa học kỹ thuật, Hà Nội.

[2] Nguyễn Quang Hoan - Trung tâm đào tạo bưu chính viễn thông 1, (2006), Xử lý ảnh, Hà Nội.

[3] Yuri Y. Boykov and Marie-Pierre Jolly, (2001), Interactive graph cuts for optimal boundary and region segmentation of objects in N-D images,

Proceedings of “Internation Conference on Computer Vision” vol.1, pp 105- 112.

[4] Carsten Rother, Vladimir Kolmogorov and Andrew Blake - Microsoft Research Cambridge UK, (2004), GrabCut: Interactive foreground extraction using iterated graph cuts, Trans. Graph. vol.23, pp. 309-314. [5] N. R. Pal and S. K. Pal (1993), A review on image segmentation

techniques, Pattern Recognition vol.26 no.9, pp.1277-1294. [6] OpenCV documentation http://docs.opencv.org/

Một phần của tài liệu Nghiên cứu và thử nghiệm các phương pháp tách đối tượng trên ảnh (Trang 40)