1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt

24 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 389,11 KB

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO BTL NNLT Đề tài: Ước lượng BMI người dựa ảnh khuôn mặt Sinh viên thực hiện: Hoàng Mai Phương Lại Thị Huyền Thương Mai Thị Quỳnh Anh Đinh Thị Quỳnh Giáo viên HD: Cô Trần Thị Thanh Hải 20193060 20193128 20192685 20193073 Báo cáo tập lớn NNLT Nhóm LỜI NĨI ĐẦU Ngày nay, khoa học công nghệ ngày phát triển, với cảm biến ảnh, xử lí ảnh ngày trở nên đa dạng Việc sử dụng hình ảnh khuôn mặt không sử dụng xác thực, định danh mà cịn hướng đến ứng dụng khác sức khỏe xác định số BMI, ứng dụng vào y học Đề tài chúng em chọn hướng đến ước lượng số BMI từ hình ảnh khn mặt thơng qua việc xây dựng mơ hình hồi quy tuyến tính Bài báo cáo hồn thành nhằm mục đích tìm hiểu, củng cố trang bị cho thân kiến thức ngôn ngữ lập trình C++ với thư viện opencv Qua vận dụng kiến thức thu thập để vận dụng làm tập, ứng dụng vào dự án đề Xin chân thành cảm ơn cô Trần Thị Thanh Hải tạo môi trường giúp chúng em làm project trang bị kiến thức, tài liệu cho chúng em! Báo cáo tập lớn NNLT Nhóm MỤC LỤC LỜI NĨI ĐẦU .1 DANH MỤC HÌNH ẢNH DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT .4 Đóng góp thành viên CHƯƠNG LÝ THUYẾT CHUNG .5 1.1 Chỉ số BMI 1.2 Mơi trường lập trình .6 1.2.1 Ngơn ngữ lập trình C++ 1.2.2 Thư viện OpenCV 1.3 Xử lí sở liệu 1.3.1 Tính tốn đặc trưng histogram RGB 1.3.2 Tính tốn đặc trưng HOG 1.4 Thuật toán hồi qui đa tuyến tính (linear regression) 1.4.1 Hồi qui tuyến tính đại số 10 1.4.2 Hồi qui đa tuyến tính sử dụng Gradient desent 11 1.5 Đánh giá sai số ước lượng 12 CHƯƠNG THỰC HÀNH 13 2.1 Các bước thưc .13 2.1.1 Dữ liệu đầu vào 13 2.1.2 Đọc ảnh liệu .13 2.1.3 Tính toán vector biểu diễn ảnh 14 2.1.4 Biểu diễn liệu ảnh thu thập vector đặc trưng biểu diễn .15 2.1.5 Cài đặt thuật toán hồi qui đa tuyến tính(Multiple linear regression) để tìm mơ hình dự tốn BMI khn mặt từ ảnh .15 2.1.6 Chương trình tính tốn .16 2.1.7 Thực đánh giá với tối thiểu 10 người khơng có CSDL thu, đánh giá sai số ước lượng 17 2.2 Kết nhận xét 18 KẾT LUẬN 19 PHỤ LỤC 20 Báo cáo tập lớn NNLT TÀI LIỆU THAM KHẢO DANH MỤC HÌNH ẢNH Hình 1 Chỉ số BMI Hình Mơi trường lập trình Hình Ví dụ histogram RGB Hình Đặc trưng HOG ảnh Hình Sơ đồ tính tốn HOG Hình Vote hướng vào cell Hình Ước tính cân nặng dựa vào chiều Hình Hàm mát phụ thuộc vào số l Hình 2 Kết ước lượng Báo cáo tập lớn NNLT DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT Báo cáo tập lớn NNLT Nhóm Đóng góp thành viên Để phát huy ưu thành viên đồng thời để thành viên hiểu chương trình, phát huy tối đa lợi làm việc nhóm, chúng em có bảng phân chia nhiệm vụ sau: Người thực Mai Thị Quỳnh An Hoàng Mai Phươn Đinh Thị Quỳnh Lại Thị Huyền Thươ CHƯƠNG LÝ THUYẾT CHUNG 1.1 Chỉ số BMI BMI (Body mass Index) số tính từ chiều cao cân nặng, số đáng tin cậy mập ốm người BMI không đo lường trực tiếp mỡ thể nghiên cứu chứng minh BMI tương quan với đo mỡ trực tiếp Hình 1 Chỉ số BMI BMI phương pháp không tốn dễ thực để tầm soát vấn đề sức khoẻ Tính số BMI phương pháp tốt để đánh giá thừa cân béo phì cho quần thể dân chúng Để tính số BMI, người ta yêu cầu đo chiều cao cân nặng, không tốn dễ thực Sử dụng số BMI cho phép người ta so sánh tình trạng cân nặng họ với quần thể nói chung Và đề án project thể mục đích Thơng qua hình ảnh khn mặt người, chúng em ước tính số BMI người thơng qua hồi quy tuyến tính sử dụng thư viện OpenCV lập trình ngơn ngữ C++ Báo cáo tập lớn NNLT Nhóm Hình 1 Chỉ số BMI 1.2 Mơi trường lập trình 1.2.1 Ngơn ngữ lập trình C++ C++ loại ngơn ngữ lập trình bậc trung (middle-level) Đây ngơn ngữ lập trình đa tạo Bjarne Stroustrup phần mở rộng ngôn ngữ lập trình C, "C với lớp Class", Ngôn ngữ mở rộng đáng kể theo thời gian C ++ đại có tính năng: lập trình tổng quát, lập trình hướng đối tượng, lập trình thủ tục, ngơn ngữ đa mẫu hình tự có kiểu tĩnh, liệu trừu tượng, lập trình đa hình, ngồi cịn có thêm tính năng, công cụ để thao tác với nhớ cấp thấp 1.2.2 Thư viện OpenCV OpenCV thiết kế cách tối ưu, sử dụng tối đa sức mạnh dịng chip đa lõi… để thực phép tính toán thời gian thực, nghĩa tốc độ đáp ứng đủ nhanh cho ứng dụng thông thường OpenCV thư viện thiết kế để chạy nhiều tảng khác (cross-patform), nghĩa chạy hệ điều hành Window, Linux, Mac, iOS … Việc sử dụng thư viện OpenCV tuân theo quy định sử dụng phần mềm mã nguồn mở BSD bạn sử dụng thư viện cách miễn phí cho mục đích phi thương mại lẫn thương mại Việc chọn mơi trường lập trình ảnh hưởng nhiều đến q trình làm, thực dự án, từ mặt lợi ích nêu chúng em dùng ngơn ngữ C++ với thư viện Opencv Visual Studio (Hình Mơi trường lập trình) Báo cáo tập lớn NNLT Nhóm Hình Mơi trường lập trình 1.3 Xử lí sở liệu Để thực đề án trước tiên ta phải xử lí ảnh Trước tiên ta phải đọc ảnh, từ liệu ảnh đầu vào ảnh ta thu ma trận Mat ảnh Trong OpenCV với giao diện C++, tất kiểu liệu ảnh, ma trận lưu dạng cv::Mat Hàm imread đọc ảnh đầu vào lưu vào biến Sau đó, ta tính tốn vector đặc trưng ảnh để ước tính BMI Bằng cách sử dụng phương pháp rút trích đặc trưng ảnh ta thu vector đặc trưng ảnh Nói cách khác bạn mã hóa hình ảnh thành vector, vector mang đặc trưng (các số thực) đại diện cho ảnh Một vector biểu diễn ảnh tính tốn đặc trưng histogram RGB ảnh, histogram of gradient (HOG), đặc trưng sift sử dụng hàm OpenCV Trước tiên tìm hiểu số tính tốn để vector dặc trưng 1.3.1 Tính tốn đặc trưng histogram RGB Histogram gọi biểu đồ sắc độ Biểu đồ sắc độ đồ thị thể thông tin độ sáng điểm ảnh (Pixel) tạo nên ảnh Đặc trưng histogram RGB ảnh biểu đồ phân bố màu “Đỏ, xanh lá, xanh da trời” ảnh Và thực chương trình tính toán đặc trung này, ảnh biểu diễn vector Báo cáo tập lớn NNLT Nhóm Hình Ví dụ histogram RGB Từ ảnh đầu vào ta thu biểu đồ thể màu ảnh Hình Ví dụ histogram RGBNhưng biểu đồ màu ảnh nên chụp độ sáng, phông khác ảnh hưởng nhiều đến kết uqar thu ước tính sai số lớn Vì nhóm chúng em thực biểu diễn vector đặc trưng ảnh dựa vào HOG 1.3.2 Tính tốn đặc trưng HOG Pháp rút trích đặc trưng hình ảnh HOG xuất hội nghị CVPR 2005 đề xuất tác giả Dalal Triggs HOG viết tắt Histogram of Oriented Gradient - loại “feature descriptor” Mục đích “featura descriptor” trừu tượng hóa đối tượng cách trích xuất đặc trưng đối tượng bỏ thơng tin khơng hữu ích Vì vậy, HOG sử dụng chủ yếu để mơ tả hình dạng xuất đối tượng ảnh Bản chất phương pháp HOG sử dụng thông tin phân bố cường độ gradient (intensity gradient) hướng biên (edge directins) để mô tả đối tượng cục ảnh Các toán tử HOG cài đặt cách chia nhỏ ảnh thành vùng con, gọi “tế bào” (cells) với cell, ta tính tốn histogram hướng gradients cho điểm nằm cell Ghép histogram lại với ta có biểu diễn cho ảnh ban đầu Để tăng cường hiệu nhận dạng, histogram cục chuẩn hóa độ tương phản cách tính ngưỡng cường độ vùng lớn cell, gọi khối (blocks) sử dụng giá trị ngưỡng để chuẩn hóa tất cell khối Kết sau bước chuẩn hóa vector đặc trưng có tính bất biến cao thay đổi điều kiện ánh sáng Hình Đặc trưng HOG ảnh Báo cáo tập lớn NNLT Nhóm Hình Đặc trưng HOG ảnh Với hình ảnh đầu vào kích thước 64x128, chia thành block 16x16 chồng nhau, có block ngang 15 block dọc, nên có 7x15 = 105 blocks Mỗi block gồm cell Khi áp dụng biểu đồ 9-bin cho cell, block đại diện vector có kích thước 36x1 Vì vậy, nối tất vector block lại với nhau, ta thu vector đặc trưng HOG ảnh có kích thước 105x36x1 = 3780x1 Hình Sơ đồ tính tốn HOG Theo sơ đồ tính tốn HOG (Hình Sơ đồ tính tốn HOG) ta gồm bước làm sau: Chuẩn hóa mức sáng màu sắc ảnh: việc dùng ảnh màu chuẩn hóa ảnh cho kết tốt Tính gradient ảnh Vote hướng vào cell (histogram): Ở bước 2, ta tính ảnh gradient theo trục x (dx) gradient theo trục y (dy) Và ta tính góc biên độ tương ứng pixel xét Hình Vote hướng vào cell Báo cáo tập lớn NNLT Nhóm Hình Vote hướng vào cell Chuẩn hóa theo block: Vì cell mang histogram vùng ảnh 8x8, thơng tin mang tính chất cục Vì tác giả đưa nhiều cách chuẩn hóa khác dựa khối (block) chồng lấn (overlap) Trích vector đặc trưng block chuẩn hóa cho ảnh 64x128 Sau tính tốn vector đặc trưng ảnh, ta biểu diễn vector cho ảnh sở liệu tương ứng với số BMI nó, CSDL có vector đặc trung số BMI tương ứng 1.4 Thuật toán hồi qui đa tuyến tính (linear regression) Để liên hệ ảnh (mặt người cần xác định BMI) BMI ta sử dụng thuật tốn hồi qui đa tuyến tính (linear regression), thuật toán Supervised learning Mục tiêu giải thuật hồi quy tuyến tính dự đốn giá trị nhiều biến mục tiêu liên tục (continuous target variable) y dựa ma trận đầu vào ma trận x Linear hay tuyến tính hiểu cách đơn giản thẳng, phẳng Trong không gian hai chiều, hàm số gọi tuyến tính đồ thị có dạng đường thẳng Trong không gian ba chiều, hàm số goi tuyến tính đồ thị có dạng mặt phẳng Trong không gian nhiều chiều, khái niệm mặt phẳng khơng cịn phù hợp nữa, thay vào đó, khái niệm khác đời gọi siêu mặt phẳng (hyperplane) 1.4.1 Hồi qui tuyến tính đại số Về ta có tập huấn luyện chứa cặp (X (i), Y (i)) tương ứng nhiệm vụ ta phải tìm giá trị ŷ tương ứng với đầu vào x Để làm điều ta cần tìm quan hệ x y để từ đưa dự đốn Hay nói cách trừu tượng ta cần vẽ đường quan hệ thể mối quan hệ tập liệu Y=X =ŷ ω 10 Báo cáo tập lớn NNLT Trong đó: y [1 yn y Y= ⋮ Y giá trị thực output (dựa số liệu thống kê có tập training data), ŷ giá trị mà mơ hình Linear Regression dự đốn Nhìn chung, Y ŷ hai giá trị khác có sai số mơ hình, nhiên, mong muốn khác nhỏ Chúng ta cần xác định hệ số ω Hình Ước tính cân nặng dựa vào chiều cao Ví dụ ta ước tính cân nặng dựa vào chiều cao Hình Ước tính cân nặng dựa vào chiều caoCác chấm đỏ liệu đầu vào (cơ sở dữu liêu) gồm chiều cao cân nặng, đường màu xạnh đường sau ước tính, tính ω biễn diễn y = ω.x, ta thấy chấm đỏ gần với đường xanh kết việc ước tính sát với thực Với liệu vào ma trận X (vector biểu diễn ảnh) ma trận Y (chỉ số BMI) ta tính ma trận β ω = Y.X-1 Như công thức = Y.X-1 dựa vào ma trận nghịch đảo X Y Nhưng det(X)=0 việc tính khơng khả thi, ta có cơng thức nghiệm: ω = (XT.X)-1.XT.Y Như từ ta xác định ma trận ω với liệu (vector hog ảnh khác CSDL) ta thu giá trị y (chỉ số BMI) 11 Báo cáo tập lớn NNLT Nhóm Nhưng điều xảy (XT.X) khơng thể đảo ngược (số suy biến) Đến đây, để xác định cách xác, nhóm chúng em sử dụng phương pháp khác để xác định hệ số mà khơng phải tính nghịch đảo ma trận Đó phương pháp sử dụng Gradient desent 1.4.2 Hồi qui đa tuyến tính sử dụng Gradient desent Giả thuyết hàm đa tuyến tính n biến có dạng: ŷ=ω0 +ω1 x1+ ω2 x2 + ….+ωn xn hay ŷ=x ω với : x = [1 ; x1; x2; … ;xn] , w =[w0 ;w1 ;w2 ; ;wn ]T 1.4.2.1 Hàm mát Hàm mát thuật tốn có dạng: (trong đó: m số lượng giá trị ) Nhiệm vụ tìm vector w cho hàm mát J(w) nhỏ Giờ cần thuật tốn để tìm giá trị nhỏ hàm J Đó gradient descent 1.4.2.2 Thuật tốn Gradient descent Dựa vào đạo hàm theo biến hàm mát, ta xác định wi=w i−α α Với hàm mát dạng trên, ta có: ωi=ωi− m m ∑i=1 (x(i) ω− y(i) ) x(ji) với α tốc độ học – learning rate để thay đổi giá trị ωi; x(ji ) giá trị hàng thứ i cột j ma trận X 12 Báo cáo tập lớn NNLT Nhóm Với giá trị w tìm được, tính giá trị hàm mát Lặp lại điều đến hàm mát đủ nhỏ, từ xác định ma trận w hàm ŷ=x ω Việc số lần lặp lại ảnh hưởng đến giá trị hàm mát nhiều, lặp lại cang nhiều độ xác cao (Hình Hàm mát phụ thuộc vào số lần lặp lại ), lặp lại nhiều ảnh hưởng tới tốc dộ xử lí chương trình nhớ thực chương trình Hình Hàm mát phụ thuộc vào số lần lặp lại Hình Hàm mát phụ thuộc vào số lần lặp lại ta thấy, số lần lặp lại từ – 1000 có thay đổi lớn đến hàm mát, độ xác cao tăng số lần lặp hàm mát gần với 1.5 Đánh giá sai số ước lượng Như trình bày việc ước lượng sai số, nên phải xác định sai số phép ước lượng Ta có đầu vào ma trận X ma trận ω tính thu y (chỉ số BMI thực thế) cần tính so sánh với giá trị ŷ (chỉ số BMI ước lượng) Chúng ta mong muốn sai khác e giá trị thực y ŷgiá trị dự đoán nhỏ Nói cách khác, muốn giá trị sau nhỏ tốt: 1e2 = 13 Báo cáo tập lớn NNLT Nhóm Sau tính sai số tốn, ta tiến hành đánh giá độ xác ước lượng BMI thông qua khuôn mặt dựa vào số sai số CHƯƠNG THỰC HÀNH Sau tìm hiểu qua lý thuyết chung, thự hành tìm hiểu đề tài 2.1 Các bước thưc 2.1.1 Dữ liệu đầu vào Để tính xác cao liệu đầu vào gồm 20 người, người ảnh: Ảnh có độ phân giải (640x480) kênh màu chụp theo góc sau: -60o, -30o, 0o, 30o, 60o theo phương ngang ảnh ngẩng cúi góc khoảng 30o theo phương thẳng đứng Số lượng ảnh: 20x7 = 140 ảnh, tương ứng với chiều cao cân nặng người Trong đó, người đánh số mã số, họ tên, lưu số ảnh khuôn mặt chụp theo góc nhìn khác Dữ liệu lưu vào thư mục, thư mục chứa thư mục con, thư mục có tên tên người, có chứa file ảnh khn mặt người Để thuận tiện cho việc tính tốn chúng em xử lí số BMI = cân nặng/(chiều cao * chiều cao) 2.1.2 Đọc ảnh liệu Sử dụng hàm ‘imread()’ thư viện OpenCV để thực đọc ảnh Để thuận tiện tính tốn, chúng em lưu thư mục chứa ảnh tệp chứa liệu số BMI tương ứng vào thư mục riêng biệt / Doc tat ca cac anh / Dau vao có noi luu cac anh sau doc (img) / Dia chi Folder de doc anh vector readImgs(vector img, string src_path) { vector fileNames; glob(src_path, fileNames, true); //luu duong dan toi file vao fileNames for (auto file : fileNames { img.push_back(imread(file));//Lưu ảnh đọc vào vector } return img; 14 Báo cáo tập lớn NNLT Nhóm } Đồng thời đọc ảnh xong đọc giá trị BMI người có CSDL lưu vào vector, thứ tự BMI vetor tương ứng thứ tự với ảnh vector đọc ảnh Trong CSDL, ảnh người chụp theo góc khác chứa thư mục con, ảnh gán giá trị BMI Vì thế, để thuận tiện, hàm đọc lấy giá trị BMI (get _Y) có biến “inter” để lấy giá trị BMI “inter” lần ảnh thư mục / / Doc du lieu BMI file txt / Dau vao la dia chi luu can doc: src_path / Vector luu cac chi so BMI: get_Y Gia tri BMI day cho bao nhieu anh: repeat template vector get_Y(string src_path, vector get_Y, int inter) { int i = 0; string pattern = "*.txt"; // Dinh dang file can doc vector fileNames; // Vector luu dia chi cac file BMI se doc glob(src_path + pattern, fileNames, true); // Doc tat ca cac file *.txt cout

Ngày đăng: 02/12/2022, 08:33

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Chỉ số BMI 1.2 Môi trường lập trình - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1.1 Chỉ số BMI 1.2 Môi trường lập trình (Trang 7)
Hình 1.2. Mơi trường lập trình 1.3 Xử lí cơ sở dữ liệu - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1.2. Mơi trường lập trình 1.3 Xử lí cơ sở dữ liệu (Trang 8)
Hình 1.3. Ví dụ về histogram RGB - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1.3. Ví dụ về histogram RGB (Trang 9)
Hình 1.4. Đặc trưng HOG của ảnh - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1.4. Đặc trưng HOG của ảnh (Trang 10)
Với mỗi hình ảnh đầu vào kích thước 64x128, chia thành các block 16x16 chồng nhau, sẽ có 7 block ngang và 15 block dọc, nên sẽ có 7x15 = 105 blocks - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
i mỗi hình ảnh đầu vào kích thước 64x128, chia thành các block 16x16 chồng nhau, sẽ có 7 block ngang và 15 block dọc, nên sẽ có 7x15 = 105 blocks (Trang 10)
Hình 1. 6. Vote hướng vào cell - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1. 6. Vote hướng vào cell (Trang 11)
Hình 1. 7. Ước tính cân nặng dựa vào chiều cao - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1. 7. Ước tính cân nặng dựa vào chiều cao (Trang 12)
Hình 1. 8. Hàm mất mát phụ thuộc vào số lần lặp lại - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 1. 8. Hàm mất mát phụ thuộc vào số lần lặp lại (Trang 15)
mơ hình dự tốn BMI của một khuôn mặt từ ảnh - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
m ơ hình dự tốn BMI của một khuôn mặt từ ảnh (Trang 19)
2.1.5 Cài đặt thuật toán hồi qui đa tuyến tính(Multiple linear regression) để tìm - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
2.1.5 Cài đặt thuật toán hồi qui đa tuyến tính(Multiple linear regression) để tìm (Trang 19)
Hình 2.1. Kết quả ước lượng - (TIỂU LUẬN) báo cáo BTL NNLT đề tài ước lượng BMI của người dựa trên ảnh khuôn mặt
Hình 2.1. Kết quả ước lượng (Trang 23)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w