Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
3,51 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN MÔN NEURAL NETWORK ĐỀ TÀi : DỰ ĐỐN GIỚI TÍNH VÀ TUỔI Sinh viên thực : THÀO A PÓ TỦA : Lại Hồng An Huy : Lê Nhật Dương Giảng viên hướng dẫn : Đào NAM ANH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : TTNT&TGMT Lớp : D15TTNT&TGMT Khóa : 2020-2025 Hà Nội, tháng 12 PHIẾU CHẤM ĐIỂM STT Họ tên sinh viên Nội dung thực Điểm Chữ ký THÀO A PĨ TỦA(leader) Code 20810320579 Lạ Hồng An Huy Tìm 20810310440 Neural Network, hiểu Keras Lê Nhật Dương Test 20810340218 Kiểm tra lỗi sai liệu, số dự đoán Họ tên giảng viên Giảng viên chấm 1: Giảng viên chấm 2: Chữ ký Ghi MỤC LỤC LỜI NÓI ĐẦU Phần I Tổng quan Neural Network(mạng Nơ Ron nhân tạo) gì? .5 Neural Network gì? .5 1.1 Đặc điểm Artificial Neural Network gì? 1.2 Kiến trúc mạng Neural Network gì? .5 1.3 Ứng dụng Neural Network gì? .6 Keras 2.1 Tìm hiểu Tensorflow gì? .6 2.2 Keras Phần II Ứng keras tốn dự đốn giới tính tuổi .13 Giới thiệu toán 13 1.1 Mô tả 13 1.2 Yêu cầu toán 13 Môi trường thử nghiệm 13 2.1 Giới thiệu python 13 2.2 Đặc điểm Python: 13 Xây dựng liệu 15 3.1 Giới thiệu liệu 15 3.2 Cài thuật toán .16 3.3 Test .22 KẾT LUẬN .24 TÀI LIỆU THAM KHẢO 25 LỜI NÓI ĐẦU Thế giới thay đổi nhanh chóng cách mạng cơng nghiệp 4.0 Nếu nắm bắt lợi có chuẩn bị chu đáo trước thay đổi phát triển doanh nghiệp, kinh tế có lợi bứt phá lớn Ngược lại, doanh nghiệp chuẩn bị chưa chuẩn bị tốt dẫn đến tụt hậu, ảnh hưởng đến phát triển chung kinh tế quốc gia Như em đề cập trên, cách mạng công nghiệp 4.0 hội lớn giúp Việt Nam tiếp cận thành tựu công nghệ mới, tạo bứt phá cho kinh tế - xã hội hướng tới phát triển bền vững Mặc dù cố gắng hoàn thiện báo cáo với tất nỗ lực, nhiên bước đầu tìm hiểu xây dựng báo cáo môn học thời gian có hạn, với lượng kiến thức cịn hạn chế, nhiều bỡ ngỡ, nên báo cáo “Neural Network dự đoán giới tính” chắn khơng thể tránh khỏi thiếu sót Em mong nhận quan tâm, thơng cảm đóng góp q báu thầy cô bạn để báo cáo ngày hoàn thiện Tuy em mong nhận ủng hộ quý thầy, cô giáo để chúng em đạt kết tốt Chúng em xin chân thành cảm ơn thầy giáo Đào Nam Anh hướng dẫn, giúp đỡ chúng em trình học tập Thầy giúp trang bị cho em kiến thức môn học động lực để tiếp tục đường học tập Chúng em xin chân thành cảm ơn! Phần I Tổng quan Neural Network(mạng Nơ Ron nhân tạo) gì? Neural Network gì? -Neural Network đọc tiếng việt Mạng nơ-ron nhân tạo, chuỗi thuật toán đưa để tìm kiếm mối quan hệ tập hợp liệu Thông qua việc bắt bước cách thức hoạt động từ não người Nói cách khác, mạng nơ ron nhân tạo xem hệ thống tế bào thần kinh nhân tạo Đây thường hữu nhân tạo chất -Neural Network có khả thích ứng với thay đổi từ đầu vào Do vậy, đưa kết cách tốt mà bạn khơng cần phải thiết kế lại tiêu chí đầu 1.1 Đặc điểm Artificial Neural Network gì? Trong lĩnh vực tài chính, mạng nơ ron nhân tạo hỗ trợ cho trình phát triển quy trình như: giao dịch thuật toán, dự báo chuỗi thời gian, phân loại chứng khốn, mơ hình rủi ro tín dụng xây dựng báo độc quyền công cụ phát sinh giá Mạng nơ ron nhân tạo hoạt động mạng nơ ron người Mỗi nơ ron thần kinh nơ ron nhân tạo hàm toán học với chức thu thập phân loại thông tin dựa theo cấu trúc cụ thể Neural Network có tương đồng chuẩn mạnh vối phương pháp thống kê đồ thị đường cong phân tích hồi quy Neural Network có chứa lớp bao hàm nút liên kết lại với Mỗi nút lại tri giác có cấu tạo tương tự với hàm hồi quy đa tuyến tính.Bên lớp tri giác đa lớp, chúng xếp dựa theo lớp liên kết với Lớp đầu vào thu thập mẫu đầu vào lớp đầu thu nhận phân loại tín hiệu đầu mà mẫu đầu vào phản ánh lại 1.2 Kiến trúc mạng Neural Network gì? -Mạng Neural Network kết hợp tầng perceptron hay gọi perceptron đa tầng Và mạng Neural Network thường bao gồm kiểu tầng là: +Tầng input layer (tầng vào): Tầng nằm bên trái mạng, thể cho đầu vào mạng +Tầng output layer (tầng ra): Là tầng bên phải thể cho đầu mạng +Tầng hidden layer (tầng ẩn): Tầng nằm tầng vào tầng thể cho q trình suy luận logic mạng -Với mạng Neural Network nút mạng sigmoid nơron chúng lại có hàm kích hoạt khác Thực tế, người ta thường sử dụng có loại với để việc tính tốn thuận lợi Tại tầng, số lượng nút mạng khác cịn tùy vào tốn cách giải 1.3 Ứng dụng Neural Network gì? -Mạng nơ ron nhân tạo ứng dụng cho nhiều lĩnh vực như: tài chính, giao dịch, phân tích kinh doanh, lập kế hoạch cho doanh nghiệp bảo trì sản phẩm Neural Network cịn sử dụng rộng rãi cho hoạt động kinh doanh khác như: dự báo thời tiết, tìm kiếm giải pháp nhằm nghiên cứu tiếp thị, đánh giá rủi ro phát gian lận -Nhiều trường hợp sử dụng mạng nơ ron nhân tạo để thực đánh giá khai quật hội giao dịch dựa vào việc phân tích liệu lịch sử Mạng nơron cịn áp dụng phổ biến để phân biệt phụ thuộc phi tuyến lẫn đầu vào Đây vấn đề mà mơ hình phân tích kỹ thuật khác khơng thể đáp ứng Keras 2.1 Tìm hiểu Tensorflow gì? -Khái niệm Tensorflow gì? +Tensorflow thư viện mã nguồn mở phục vụ cho hoạt động Machine Learning Nó xây dựng Google, n tâm độ ổn định sử dụng +Trong quy trình phát triển phần mềm địi hỏi nhiều đoạn mã thuật tốn triển khai Thuật tốn vừa để phân tích, tổng hợp liệu vừa tảng để phần mềm khởi chạy Tuy nhiên chương trình lớn khối lượng phép tốn nhiều Cách tính tốn thủ công đảm bảo hiệu suất mong muốn Vì Tensorflow xuất chương trình hỗ trợ tính tốn cách tiếp cận mạnh mẽ phép tính tốn phức tạp Nhờ có Tensorflow, người dùng đơn giản hóa tốn học thông qua đồ thị luồng liệu tổng hợp +Tensorflow bắt đầu xuất với mục đích giúp thành viên team phát triển phần mềm làm việc model A.I Vào năm 2015, Tensorflow thức xuất thị trường Cho đến năm sau, 2017, Tensorflow hoàn thành cải tiến trở thành phiên ổn định +Sau công nhận mã nguồn mở Apache Open Source, Tensorflow cho phép toàn người dùng thể sử dụng, điều chỉnh đóng góp cho phiên cách hồn tồn miễn phí -Ngun lý hoạt động Tensorflow +Dù đem đến nhiều lợi ích thực nguyên lý hoạt động Tensorflow đơn giản Về Tensorflow giúp người dùng tạo biểu đồ luồng liệu cấu trúc mô tả Đây lý Tensorflow coi framework Những khung sườn hướng dẫn liệu làm cách để qua biểu đồ series nodes xử lý Lúc này, nodes đại diện cho hoạt động tốn học cần xử lý Cịn kết nối edge coi tensor mảng liệu đa chiều +Như nêu phần trên, Tensorflow vốn phát triển từ Python Vì thân Tensorflow ứng dụng Python Còn nodes tensor Tensorflow đối tượng thuộc Python Điều giúp ích nhiều cho lập trình viên Python vốn hệ thống dễ sử dụng, cho phép đối tượng trừu tượng bậc cao dễ dàng kết hợp với Chính nhờ giúp đỡ đắc lực này, q trình phát triển phần mềm đơn giản hóa nhiều +Từ phân tích vừa rồi, hẳn bạn đọc nắm khái niệm Tensorflow đặc điểm xung quanh Bản chất việc Tensorflow hướng dẫn khơng khó hiểu bạn tìm cách hiểu thân -Ưu điểm Tensorflow gì? +Lợi ích dễ thấy Tensorflow chắn phải kể đến khả phân tích abstraction cách tổng quan Như biết, để phát triển phần mềm đòi hỏi nhiều công đoạn khác Và tỉ mỉ đặt lên hàng đầu dù phần nhỏ không kéo theo chương trình chạy lỗi +Vì Tensorflow sử dụng cơng cụ đắc lực mang đến nhìn tổng quan cho người dùng Tất bước nhỏ lặt vặt triển khai thuật toán, chuyển input thành output ngược lại Tensorflow xử lý cách nhanh chóng, tất nhiên tự động Người dùng giảm khối lượng cơng việc rõ rệt Thay phải bận tâm đến thứ “lơng gà, vỏ tỏi” bạn dành thời gian để phát triển tính logic tổng thể ứng dụng -Dễ dàng chỉnh sửa định hướng +Liệu bạn có lo lắng tính tự động Tensorflow mang đến số rủi ro không may phần mềm sai hướng? Vậy bạn n tâm Tensorflow trang bị tính Eager execution Nếu người dùng chưa cảm thấy hài lòng cách thức thực kết mà Tensorflow mang đến, họ trực tiếp chỉnh sửa operation biểu đồ hướng xử lý liệu Thay phải khởi tạo lại toàn biểu đồ, cách chỉnh sửa theo chi tiết tiết kiệm nhiều thời gian cơng sức +Người dùng để lại đánh giá cài đặt thêm tính cho Tensorflow để lần làm việc sau mang đến kết khả quan +Nếu bạn lỗi mà Tensorflow mắc phải nằm đâu? Bạn khơng cần phải lo ln có tính TensorBoard Công cụ cho phép người dùng quan sát cách trực tiếp quy trình làm việc Tensorflow Từ phát sai lầm quy trình vận hành hệ thống để tiến đến bước chỉnh sửa -Dựa tảng mạnh mẽ – Google +Rõ ràng việc có “người đỡ đầu” tiếng Google mạnh Tensorflow Nhờ phát triển từ ê kíp cơng nghệ cao cấp giới, Tensorflow liên tục cải tiến update cho phù hợp với xu hướng đại Google tích cực tạo phần mềm hỗ trợ phát triển cho Tensorflow 2.2 Keras -Keras API cấp cao thiết kế cho Python để triển khai mạng nơ-ron dễ dàng Nó phát triển Google Keras chạy thư viện khung công tác TensorFlow, Theano, PlaidML, MXNet, CNTK Chúng thư viện mạnh khó hiểu để tạo mạng nơ-ron Mặt khác, Keras thân thiện với người bắt đầu cấu trúc tối thiểu cung cấp cách tạo mơ hình học sâu cách dễ dàng gọn ghẽ dựa TensorFlow Theano -Keras TensorFlow thơng qua làm API cấp cao thức Khi nhúng vào TensorFlow, cung cấp mơđun có sẵn cho tất tính tốn mạng nơ-ron thực học sâu nhanh TensorFlow linh hoạt lợi ích tính tốn phân tán Bạn linh hoạt kiểm sốt ứng dụng mình, thực ý tưởng bạn thời gian ngắn, sử dụng Keras, tính tốn liên quan đến tensors, đồ thị tính tốn, phiên, v.v tùy chỉnh cách sử dụng Tensorflow Core API a Xây dựng -Đầu tiền module dùng để xây dựng xương cho model : Đầu tiên ta tìm hiểu sub-module : Models keras Để khởi tạo model keras ta dùng cách: Cách : Thông qua Sequential khởi tạo model Sequential sau dùng method add để thêm laye Cách 2: để khởi tạo model dùng function API -Khi khởi tạo model có method ta cần lưu ý : +compile : Sau build model xong compile có tác dụng biên tập lại toàn model build Ở chọn tham số để training model : thuật tốn training thơng qua tham số optimizer, function loss model sử dụng mặc định tự build thông qua tham số loss, chọn metrics thị model training +summary method giúp tổng hợp lại model xem model có layer, tổng số tham số bao nhiêu,shape layer +fit dùng để đưa data vào training để tìm tham số model(tương tự sklearn) +predict dùng để predict new instance +evaluate để tính tốn độ xác model +history dùng để xem accuracy,loss qua epochs Thường dùng với matplotlib để vẽ chart -Sub-module Layers : Nó chứa layers chuyên dụng để ta build model CNN,RNN,GANs Có nhiều layers nên ta quan tâm đến số layer thường sử dụng Hình 1: Sơ đồ phân nhánh Layers -Core layer : chứa layer mà model sử dụng đến +Dense layer sử dụng layer neural network bình thường +Activation dùng để chọn activation layer(có thể dùng tham số activation thay thế) +Dropout layer dùng regularization cho layer hạn chế overfiting +Flatten dùng để lát phằng layer để fully connection +Input layer sử dụng input layer vd trước ta nói +Reshape giống tên gọi nó, dùng để reshape +Lambda dùng lambda python -Convolutional Layers: chứa layer mạng nơ ron tích chập +Conv1D,Conv2D convolution layer dùng để lấy feature từ image +UpSampling1D,UpSampling2D Ngược lại với convolution layer +ZeroPadding1D,ZeroPadding2D dùng để padding image -Pooling Layers : Chứa layer dùng mạng CNN =MaxPooling1D,MaxPooling2D dùng để lấy feature bật(dùng max) giúp giảm parameter(tham số) training +AveragePooling1D,AveragePooling2D giống maxpooling dùng Average +GlobalMaxPooling1D,GlobalMaxPooling2D -Recurrent Layers chứa layers dùng mạng RNN +RNN layer RNN +GRU khắc phục hạn chế RNN tránh vanish gradient +LSTM Long Short-Term Memory layer -Embedding layer : Embedding dùng nhiều nlp mục đích embbding sang khơng gian có chiều nhỏ hơn, dc learning from data thay cho one-hot lad hard code +input_dim size vocabulary +output_dim size word embbding +input_length chiều dài sequence -Merge Layers : chứa layers giúp cộng,trừ,hoặc nối layer vector +Add cộng layers +Subtract trừ layers +Multiply nhân layer +Average tính trung bình layers +Maximum lấy maximun layers +Concatenate nối layer +Dot Nhân matrix giữ layers -Own Keras layers : Giúp xây dựng layer theo ý muốn, gồm method cần ý build,call compute_output_shape b Tiền xử lý liệu keras -Được chia làm phần : +Sequence Preprocessing tiền xử lý chuỗi TimeseriesGenerator dùng để tạo liệu cho time series pad_sequences dùng để padding giúp chuỗi có độ dài 10 skipgrams tạo data model skip gram,kết trả tuple word xuất ko +Text Preprocessing tiền xử lý text Tokenizer giống kỹ thuật tokenizer nlp, tạo tokenizer từ documment one_hot tạo data dạng one hot encoding text_to_word_sequence covert text thành sequence +Image Preprocessing tiền xử lý image ImageDataGenerator tạo thêm data cách scale,rotation -Các function xương model +Các hàm loss functions thường dùng : mean_squared_error thường dùng regression tính theo eculic mean_absolute_error tính theo trị tuyệt đối categorical_crossentropy dùng classifier nhiều class binary_crossentropy dùng classifier class kullback_leibler_divergence dùng để tính loss phân phối thực tế thực nghiệm +Metrics thước đo để ta đánh giá accuracy model binary_accuracy y_true==y_pre trả ngược lại 0,dùng cho class categorical_accuracy tương tự binary_accuracy cho nhiều class +Optimizers dùng để chọn thuật toán training SGD Stochastic gradient descent optimizer RMSprop RMSProp optimizer Adam Adam optimizer +Activations để chọn activation function linear linear regression softmax dùng multi classifier relu max(0,x) dùng layer cnn,rnn để giảm chi phí tính tốn range (-1,1) Sigmoid range (0,1) dùng nhiều binary class +Callbacks : model lớn có training gặp cố ta muốn lưu lại model để chạy lại callback giúp t làm điều ModelCheckpoint lưu lại model sau epoch EarlyStopping stop training training ko cải thiện model ReduceLROnPlateau giảm learning metrics ko cải thiện +Datasets Keras hỗ trợ số dataset theo công thức : cifar100 gồm 50,000 32x32 color training images, labeled over 100 categories, and 10,000 test images mnist data 70k image data hand written fashion_mnist Dataset of 70k 28x28 grayscale images of 10 fashion categories imdb 25,000 movies reviews from IMDB, label đánh theo pos/neg 11 reuters 11,228 newswires from Reuters, labeled over 46 topics boston_housing data giá nhà boston theo 13 features +Applications chứa pre-training weight model deep learning tiếng.Xception,VGG16,VGG19,resnet50,inceptionv3, InceptionResNetV2,MobileNet,DenseNet,NASNet cẩu trúc chung sau : preprocess_input dùng để preprocessing input custom same với input pretraining decode_predictions dùng để xem label predict +backends banckend có nghĩa thay keras xây dựng từ đầu công thức từ đơn giản đến phức tạp, dùng thư viện xây dựng sẵn dùng Giúp tiết kiệm dc thời gian chí phí Trong keras có hỗ trợ backend tensorflow,theano CNTK +Initializers khởi tạo giá trị weight coeff bias trước training kernel_initializer and bias_initializer mặc định glorot_uniform phân phối uniform với giá trị 1/căn(input+output) +regularizers Dùng để phạt coeff tác động mạnh vào layer thường dùng L1 L2 +Constraints dùng để thiết lập điều kiện ràng buộc training +visualization giúp plot lại cấu trúc mạng neral network +Utils chứa function cần thiết giúp ta xử lý data nhanh normalize chuẩn hóa data theo L2 plot_model giúp plot model to_categorical covert class sang binary class matrix 12 Phần II Ứng keras toán dự đốn giới tính tuổi Giới thiệu tốn 1.1 Mơ tả -Bài tốn dự đốn giới tính tuổi thực đưa ảnh có hình người Sau phát khn mặt tiến hành dự đoán xem nam nữ tuổi -Giá trị input: Tuổi, giới tính, hình ảnh thông tin -Giá trị output: Kết người chuẩn đốn giới tính nam hay nữ, độ tuổi 1.2 Yêu cầu toán -Lấy liệu thơng tin, giới tính, tuổi hình ảnh -Trích chọn đặc trưng từ tập liệu lấy -Huấn luyện tập liệu -Chuẩn đốn giới tính tuổi Môi trường thử nghiệm 2.1.Giới thiệu python -Python ngơn ngữ lập trình sử dụng phổ biến ngày để phát triển nhiều loại ứng dụng phần mềm khác chương trình chạy desktop, server, lập trình ứng dụng web Ngồi Python ngơn ngữ ưa thích ngành khoa học liệu (data science) ngôn ngữ phổ biến để xây dựng chương trình trí tuệ nhân tạo bao gồm machine learning 2.2 Đặc điểm Python: Python ngôn ngữ dễ học: Ngơn ngữ Python có cú pháp đơn giản, rõ ràng, sử dụng số lượng không nhiều từ khố, Python đánh giá ngơn ngữ lập trình thân thiện với người học Python ngôn ngữ dễ hiểu: Mã lệnh (source code hay đơn giản code) viết ngôn ngữ Python dễ đọc dễ hiểu Ngay 13 trường hợp bạn chưa biết Python bạn suy đốn ý nghĩa dịng lệnh source code Python có tương thích cao (highly portable): Chương trình phần mềm viết ngơn ngữ Python chạy nhiều tảng hệ điều hành khác bao gồm Windows, Mac OSX Linux 2.3.Google Colab gì? -Colaboratory hay cịn gọi Google Colab, sản phẩm từ Google Research, cho phép thực thi Python tảng đám mây, đặc biệt phù hợp với Data analysis, machine learning giáo dục Colab không cần yêu cầu cài đặt hay cấu hình máy tính, thứ chạy thơng qua trình duyệt, bạn sử dụng tài ngun máy tính từ CPU tốc độ cao GPUs TPUs cung cấp cho bạn Sử dụng Google Colab có lợi ích ưu việt như: sẵn sàng chạy Python thiết bị có kết nối Internet mà khơng cần cài đặt, chia sẻ làm việc nhóm dễ dàng, sử dụng miễn phí GPU cho dự án AI -Tại nên sử dụng Google Colab +Các thư viện cài đặt sẵn: Phân phối Anaconda Jupyter Notebook có số liệu cài đặt sẵn Numpy, Pandas, Matplotlib Ngoài ra, Colab cung cấp nhiều thư viện machine learning cài đặt sẵn Keras, Pytorch, Tensorflow +Được lưu đám mây: Mọi thứ lưu trữ cục máy bạn lựa chọn Jupyter Notebook làm môi trường làm việc Nếu bạn đề cao quyền riêng tư chắn tính ưa thích bạn +Máy tính truy cập với tất thiết bị có đăng nhập Google, Google Colab lựa chọn hàng đầu cho bạn Vì tất Google Colab Notebook lưu tài khoản Google Drive bạn, giống tệp Google Docs Google Sheets +Sự hợp tác: Tính trội khác mà Google Colab cung cấp khả cộng tác Vì giống hợp tác tài liệu Google Docs, bạn hợp tác với nhiều nhà phát triển Google Colab Notebook Bên cạnh đó, bạn chia sẻ cơng việc hồn thành với nhà phát triển khác +Sử dụng GPU TPU miễn phí: Khơng cần phải suy nghĩ nhiều, chọn Google Colab thay Jupyter Notebook Vì, Google Research cho phép bạn sử dụng GPU TPU chuyên dụng họ cho dự án machine learning cá nhân bạn 14 +Sự tổng quát: Google Colab phiên chuyên dụng Jupyter Notebook Nó chạy đám mây cung cấp tài ngun điện tốn miễn phí Mối quan hệ Ipython, Jupyter Notebook Google Colab hiển thị bên dưới: Hình 2: Mối quan hệ Ipython, Jupyter Notebook Google Colab Xây dựng liệu 3.1 Giới thiệu liệu -Bộ liệu UTKFace liệu khuôn mặt quy mô lớn với khoảng tuổi dài (từ đến 116 tuổi) Bộ liệu bao gồm 20.000 hình ảnh khn mặt với thích độ tuổi, giới tính Các hình ảnh bao gồm khác biệt lớn tư thế, nét mặt, độ chiếu sáng, độ che phủ, độ phân giải, v.v Bộ liệu sử dụng cho nhiều tác vụ khác 15 Hình 3: Biểu đồ phân bổ độ tuổi Hình 4: Biểu đồ giới tính 3.2 Cài thuật toán -Khai báo thư viện from google.colab import drive drive.mount('/content/gdrive') import pandas as pd import numpy as np import os import matplotlib.pyplot as plt import seaborn as sns import warnings from tqdm.notebook import tqdm warnings.filterwarnings('ignore') 16 import tensorflow as tf from keras.utils import load_img from keras.models import Sequential, Model from keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2 D, Input -Đọc file liệu, phân tích liệu, chuẩn hố BASE_DIR ='/content/drive/MyDrive/archive/UTKFace' # labels - Tuổi, giới tính image_paths = [] age_labels = [] gender_labels = [] for filename in tqdm(os.listdir(BASE_DIR)): image_path = os.path.join(BASE_DIR, filename) temp = filename.split('_') age = int(temp[0]) gender = int(temp[1]) image_paths.append(image_path) age_labels.append(age) gender_labels.append(gender) df = pd.DataFrame() df['image'], df['age'], df['gender'] = image_paths, age_labels, gender_label s gender_dict = {0:'Male', 1:'Female'} -Hiện thị số thông tin data df.head() -Hiện thị ảnh liệu from PIL import Image img = Image.open(df['image'][0]) plt.axis('off') plt.imshow(img) 17 -Hiển thị lưới hình ảnh from keras.utils import load_img plt.figure(figsize=(20, 20)) files = df.iloc[0:25] for index, file, age, gender in files.itertuples(): plt.subplot(5, 5, index+1) img = load_img(file) img = np.array(img) plt.imshow(img) plt.title(f"Age: {age} Gender: {gender_dict[gender]}") plt.axis('off') -Feature Extraction def extract_features(images): features = [] for image in tqdm(images): img = load_img(image, grayscale=True) img = img.resize((128, 128), Image.ANTIALIAS) img = np.array(img) 18 features.append(img) features = np.array(features) # ignore this step if using RGB features = features.reshape(len(features), 128, 128, 1) return features X = extract_features(df['image']) X.shape X = X/255.0 y_gender = np.array(df['gender']) y_age = np.array(df['age']) input_shape = (128, 128, 1) -Model Creation inputs = Input((input_shape)) # convolutional layers conv_1 = Conv2D(32, kernel_size=(3, 3), activation='relu') (inputs) maxp_1 = MaxPooling2D(pool_size=(2, 2)) (conv_1) conv_2 = Conv2D(64, kernel_size=(3, 3), activation='relu') (maxp_1) maxp_2 = MaxPooling2D(pool_size=(2, 2)) (conv_2) conv_3 = Conv2D(128, kernel_size=(3, 3), activation='relu') (maxp_2) maxp_3 = MaxPooling2D(pool_size=(2, 2)) (conv_3) conv_4 = Conv2D(256, kernel_size=(3, 3), activation='relu') (maxp_3) maxp_4 = MaxPooling2D(pool_size=(2, 2)) (conv_4) flatten = Flatten() (maxp_4) # Kết nối lớp với dense_1 = Dense(256, activation='relu') (flatten) dense_2 = Dense(256, activation='relu') (flatten) dropout_1 = Dropout(0.3) (dense_1) dropout_2 = Dropout(0.3) (dense_2) output_1 = Dense(1, activation='sigmoid', name='gender_out') (dropout_1) output_2 = Dense(1, activation='relu', name='age_out') (dropout_2) model = Model(inputs=[inputs], outputs=[output_1, output_2]) model.compile(loss=['binary_crossentropy', 'mae'], optimizer='adam', met rics=['accuracy']) 19 -Vẽ mơ hình from tensorflow.keras.utils import plot_model plot_model(model) 20 -Train model history = model.fit(x=X, y=[y_gender, y_age], batch_size=32, epochs=30, validation_split=0.2) -Vẽ kết # plot results for gender acc = history.history['gender_out_accuracy'] val_acc = history.history['val_gender_out_accuracy'] epochs = range(len(acc)) plt.plot(epochs, acc, 'b', label='Training Accuracy') plt.plot(epochs, val_acc, 'r', label='Validation Accuracy') plt.title('Accuracy Graph') plt.legend() plt.figure() loss = history.history['gender_out_loss'] val_loss = history.history['val_gender_out_loss'] plt.plot(epochs, loss, 'b', label='Training Loss') plt.plot(epochs, val_loss, 'r', label='Validation Loss') plt.title('Loss Graph') plt.legend() plt.show() 21 # plot results for age loss = history.history['age_out_loss'] val_loss = history.history['val_age_out_loss'] epochs = range(len(loss)) plt.plot(epochs, loss, 'b', label='Training Loss') plt.plot(epochs, val_loss, 'r', label='Validation Loss') plt.title('Loss Graph') plt.legend() plt.show() 3.3 Test image_index = 100 print("Original Gender:", gender_dict[y_gender[image_index]], "Original Age:", y_age[image_index]) # predict from model pred = model.predict(X[image_index].reshape(1, 128, 128, 1)) pred_gender = gender_dict[round(pred[0][0][0])] 22 pred_age = round(pred[1][0][0]) print("Predicted Gender:", pred_gender, "Predicted Age:", pred_age) plt.axis('off') plt.imshow(X[image_index].reshape(128, 128), cmap='gray') 23 KẾT LUẬN Thông qua việc tìm hiểu đề tài giúp chúng em có nhìn tồn diện ngành trí tuệ nhân tạo việc xây dựng thuật toán để train Do thời gian không cho phép nên chúng em khơng thể hồn thiện tồn chức model mình, mong q thầy thơng cảm Bài viết cịn nhiều sai sót, em mong nhận góp ý q thầy Em xin chân thành cảm ơn! 24 TÀI LIỆU THAM KHẢO https://keras.io/ https://www.tensorflow.org/ https://www.geeksforgeeks.org/ 25