Skip to content
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Computer Vision

Xây dựng model dự đoán tuổi qua khuôn mặt – Age Prediction model

By Chủ tiệm Mì
October 8, 2019 4 Min Read
22

Hello xin chào anh em, hôm nay chúng ta sẽ cùng nhau xây dựng model dự đoán tuổi qua khuôn mặt – Age Prediction model nhé.

Chắc hẳn các anh em đã nghe nói và xem SharkTank Việt Nam thấy có vụ startup làm một kios bán hàng, khi khách hàng đến đứng trước camera sẽ dự đoán được tuổi, giới tính của khách để suggest những mặt hàng phù hợp đúng không? Phải nói là mình rất thú vị và ấn tượng với bài toán đó của họ và hôm nay chúng ta sẽ cùng làm thử nhé.

Phần 1. Chuẩn bị nguyên vật liệu

Chúng ta tạo thư mục MiAI_Age_Prediction để lưu bài làm nhé. Sau đó các bạn chạy lệnh git sau để lấy mã nguồn về:

git clone https://github.com/thangnch/MiAI_Age_Prediction .

Sau đó các bạn tạo các thư mục sau trong folder MiAI_Age_Prediction

  • data: Thư mục này chứa dữ liệu ảnh để train
  • models: Thư mục này chứa các model pretrain, và train của bài toán

Rồi, bây giờ tiến hành tải các dữ liệu cần thiết nhé:

  • Tải dữ liệu ảnh: Chúng ta sẽ sử dụng kho ảnh của WIKI để train. Dữ liệu khá đầy đủ cả mặt ,cả ngày tháng năm sinh và tuổi tác để train. Các bạn tải file tại đây và giải nén, sau đó chỉ copy file các file và folder bên trong (bỏ folder wiki_crop đi nhé) vào thư mục data
  • Tải file xml của haarcascade để phát hiện khuôn mặt tại đây và đặt vào trong thư mục models
  • Tải pretrain weights của mạng VGGFace tại đây và cũng cho vào thư mục models luôn.

Đã xong, giờ tiến hành cài đặt thư viện nào, lại lệnh thần thánh sau:

pip install -r setup.txt

Pha cốc cà phê ngồi tán chuyện chờ cài xong là chơi tiếp.

Phần 2. Tư tưởng bài toán

Bài toán này sẽ thực hiện như sau, khá đơn giản thôi!

Với bước train:

  • Load dữ liệu train vào và tính toán, xử lý dữ liệu cho phù hợp
  • Sử dụng mạng VGGFace và có customize thêm vài layer cuối kết thúc bằng layer softmax để Predict tuổi (từ 0-100).
  • Đưa dữ liệu vào train cho tới khi model có hàm loss hội tụ.

Với bước test:

  • Đọc ảnh từ webcam
  • Crop lấy khuôn mặt, convert thành tensor và đưa vào mạng đã train để predict
  • Hiển thị khung quanh mặt và tuổi kèm theo.

Okie, giờ đến bước cụ thể hóa bằng code.

Phần 3. Tiến hành code model dự đoán tuổi qua khuôn mặt

Các bạn để ý sẽ có 2 file là train_model.py và test_model.py. Như tên gọi của nó, 1 file để train còn 1 file để test.

Các hàm, các dòng lệnh mình đã comment đầy đủ trong code, các bạn mở ra xem và kết hợp với phần tư tưởng ở trên là hiểu được code nhé.

dự đoán tuổi

Nếu có khó khăn gì , hoặc có gì cần hỏi thêm các bạn cứ post lên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup để cùng thảo luận nhé.

Phần 4. Train model

Các bạn đã có ảnh trong thư mục data, có các pretrain model trong thư mục models. Giờ các bạn chạy file train_model.py bằng lệnh

python train_model.py

Sau đó ngồi đợi cho model train xong, tùy cấu hình máy, tùy vào ý đinh của các bạn mà các bạn có thể điều chỉnh số epochs train cho phù hợp nhé.

dự đoán tuổi

Phần 5. Test model dự doán tuổi

Ngon rồi, giờ các bạn đã train xong, các bạn sẽ thấy có một file age_model_weights.h5 trong thư mục models, đó chính là file saved model đó. Bạn nào ngại train có thể tải luôn file pretrain mình để ở đây và ném vào thư mục models là xong.

Bây giờ chúng ta chạy lệnh:

python test_model.py 

và đưa khuôn mặt vào webcam đi nào. Nó sẽ nịnh bạn tý nhé, bạn sẽ được dự đoán trẻ hơn thường lệ. Đố các bạn biết tại sao lại thế 😀

Vâng, như vậy là đã hết bài rồi, trong bài này mình tổng kết lại các bạn đã biết dùng VGGFace, biết sử dụng pretrain weights, biết customize mạng để gắn thêm softmax phục vụ nhu cầu của mình.

Chúc các bạn thành công!

Hãy tham gia cộng đồng Mì AI nhé:

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn/
Youtube: http://bit.ly/miaiyoutube

Tags:

Age predictionainoodleCNNface detectionhaarcascademì aimiaipretrain modelVGGFaceWiki
Author

Chủ tiệm Mì

Follow Me
Other Articles
Previous

Đi buôn chứng khoán cùng Mì AI, xây model LSTM dự đoán giá chứng khoán Vietcombank cuối năm 2019

Next

Dạy bé “máy tính” tập tô màu cho ảnh đen trắng bằng mạng Auto-Encoder

22 Comments
  1. Đặng Quốc Bảo says:
    October 10, 2019 at 8:07 am

    Bác cho hỏi bị lỗi này khắc phục sao ạ. Cám ơn!
    Admin@PC1GHJ2AS3 MINGW64 /d/MiAI_Age_Prediction
    $ pip install -r setup.txt
    Requirement already satisfied: numpy in c:\users\admin\appdata\local\programs\python\python37-32\lib\site-packages (from -r setup.txt (line 1)) (1.17.2)
    Collecting keras (from -r setup.txt (line 2))
    Using cached https://files.pythonhosted.org/packages/ad/fd/6bfe87920d7f4fd475acd28500a42482b6b84479832bdc0fe9e589a60ceb/Keras-2.3.1-py2.py3-none-any.whl
    Collecting tensorflow (from -r setup.txt (line 3))
    ERROR: Could not find a version that satisfies the requirement tensorflow (from -r setup.txt (line 3)) (from versions: none)
    ERROR: No matching distribution found for tensorflow (from -r setup.txt (line 3))

    Reply
    1. Nguyễn Chiến Thắng says:
      October 11, 2019 at 1:23 am

      Lỗi lạ nhỉ. Bác post lên group Mì AI kèm theo hình để mọi ng cùng xem nhé.

      Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup

      Reply
  2. Gemi Khong says:
    December 19, 2019 at 2:43 am

    Anh cho hỏi bị lỗi MemoryError khi load ảnh có cách nào xử lý không? Em đọc một số nguồn thì ghi là chuyển sang load từng batch thay vì toàn bộ dataset (nhưng cũng không rõ làm như thế nào).

    MemoryError: Unable to allocate array with shape (224, 224, 3) and data type float32

    Reply
    1. Nguyễn Chiến Thắng says:
      December 20, 2019 at 6:57 am

      Đúng rồi. Nếu máy có ít RAM thì nên load theo batch. Em search Keras batch image generator

      Reply
      1. Gemi Khong says:
        December 20, 2019 at 7:32 am

        Cảm ơn anh!

        Reply
  3. Asta says:
    February 5, 2020 at 3:11 pm

    Anh cho em hỏi: trong folder models có 2 file .xml và .h5 (như hướng dẫn trên). Nhưng code train_model.py trên GitHub thì trong folder lại có thêm file classification_age_model.hdf5? Nếu có file thì classification_age_model.hdf5 tải ở đâu? Anh cho em xin link download.

    Reply
    1. Nguyễn Chiến Thắng says:
      February 15, 2020 at 2:01 pm

      File đó là file weights lưu tạm sẽ sinh ra trong quá trình train em. Em cần gì thêm thì post Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để trao đổi thêm nhé!

      Reply
  4. LE VAN THUAN says:
    February 29, 2020 at 4:49 am

    Anh ơi em bị lỗi này mà không biết sửa sao ạ ? Em làm đúng từng bước chỉ khi chạy file train thì nó hiện lỗi như bên dưới
    Traceback (most recent call last):
    File “D:/Nam 4/Machine Learning/MiAI_Age_Prediction/MiAI_Age_Prediction/train_model.py”, line 5, in
    import tensorflow as tf
    File “D:\DevPrograms\PythonPython38-32\lib\site-packages\tensorflow\__init__.py”, line 24, in
    from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
    File “D:\DevPrograms\PythonPython38-32\lib\site-packages\tensorflow\python\__init__.py”, line 49, in
    from tensorflow.python import pywrap_tensorflow
    File “D:\DevPrograms\PythonPython38-32\lib\site-packages\tensorflow\python\pywrap_tensorflow.py”, line 58, in
    from tensorflow.python.pywrap_tensorflow_internal import *
    File “D:\DevPrograms\PythonPython38-32\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 114
    def TFE_ContextOptionsSetAsync(arg1, async):
    ^
    SyntaxError: invalid syntax

    Reply
    1. Nguyễn Chiến Thắng says:
      March 2, 2020 at 3:44 am

      Em chụp màn hình và post lên group Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!

      Reply
  5. hoàng says:
    March 23, 2020 at 3:56 am

    a ơi cho em hỏi sao em tải data về thấy 100 folder nhưng folder nào cũng thấy cả già cả trẻ thế ạ, nó gán nhãn kiểu gì thế aj?

    Reply
    1. Nguyễn Chiến Thắng says:
      March 23, 2020 at 4:54 pm

      Cụ thể như nào em nhỉ? Em lên group post để trao đổi cho tiện nha. Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup

      Reply
  6. Lê Văn Lợi says:
    February 16, 2021 at 7:05 pm

    Anh ơi, a dùng python mấy đấy ạ? Em dùng 3.6 toàn bị lỗi ạ

    Reply
    1. Nguyễn Chiến Thắng says:
      February 18, 2021 at 1:53 am

      Anh dùng 3.7.9. Có lỗi gì em cứ post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!

      Reply
  7. Kha says:
    June 9, 2021 at 5:06 pm

    Epoch 1/50
    1970/1970 [==============================] – 579s 273ms/step – loss: 4.2838 – accuracy: 0.0296 – val_loss: 3.8985 – val_accuracy: 0.0289
    Epoch 2/50
    1970/1970 [==============================] – 515s 262ms/step – loss: 3.9742 – accuracy: 0.0386 – val_loss: 3.8348 – val_accuracy: 0.0429
    Epoch 3/50
    1970/1970 [==============================] – 515s 261ms/step – loss: 3.9459 – accuracy: 0.0397 – val_loss: 3.8036 – val_accuracy: 0.0466

    Sau khi đọc bài hd của bạn. Mình có training lại tập wiki mới mô hình mạng (model) như bạn:
    1. Cho mình hỏi ban đầu độ loss cao và accuracy thấp vậy hả bạn
    2. Bạn traning mất bao nhiêu thời gian? dộ loss và độ chính xác như thế nào

    Reply
    1. Nguyễn Chiến Thắng says:
      June 12, 2021 at 11:32 pm

      Lâu quá mình cũng ko nhớ chính xác nữa. Bạn cứ post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup rồi cùng chia sẻ thêm nha!

      Reply
  8. Tổng hợp 8+ thông tin [Nhận diện tuổi qua khuôn mặt], hướng dẫn chi tiết từ A-Z – VPN Miễn Phí says:
    May 17, 2022 at 4:20 pm

    […] Xây dựng model dự đoán tuổi qua khuôn mặt – Age Prediction – Mì … […]

    Reply
  9. Thuan says:
    June 27, 2022 at 11:51 am

    anh ơi, sao em k thấy chỗ tải file setup.txt vậy ak

    Reply
    1. Nguyễn Chiến Thắng says:
      June 29, 2022 at 10:29 pm

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!

      Reply
  10. Thang says:
    July 21, 2022 at 11:23 am

    em gặp lỗi này không biết là do như nào thế a
    (venv) C:\Users\ADMIN\PycharmProjects\Age_Prediction\venv\Age Prediction>python test_model.py
    2022-07-21 11:21:26.680002: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘cudart64_110.dll’; dlerror: cudart64_110.dll not found
    2022-07-21 11:21:26.680712: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    Traceback (most recent call last):
    File “test_model.py”, line 6, in
    from keras.preprocessing.image import load_img, save_img, img_to_array
    ImportError: cannot import name ‘load_img’ from ‘keras.preprocessing.image’ (C:\Users\ADMIN\PycharmProjects\Age_Prediction\venv\lib\site-packages\keras\preprocessing\image.py)

    Reply
    1. Nguyễn Chiến Thắng says:
      July 25, 2022 at 3:40 pm

      Em post lên https://facebook.com/groups/miaigroup trao đổi cho dễ nhé!

      Reply
  11. minh tran says:
    May 11, 2023 at 12:37 pm

    pip install -r setup.txt
    lỗi này xuất hiện sau khi nhấn lệnh trên ạ.E phải sửa như nào ạ?
    ERROR: Could not open requirements file: [Errno 2] No such file or directory: ‘setup.txt’

    [notice] A new release of pip available: 22.3.1 -> 23.1.2
    [notice] To update, run: python.exe -m pip install –upgrade pip

    Reply
    1. Nguyễn Chiến Thắng says:
      May 19, 2023 at 10:10 am

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé trao đổi cho tiện!

      Reply
Show Comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Tìm hiểu và cài đặt OpenClaw – trợ lý ảo 24/7 thông minh đa chức năng – Mì Ai
  • Dùng thử Pika – robot học Tiếng Anh cho trẻ cực đỉnh – Mì AI
  • TopView.AI 4.0 – nền tảng tạo AI video cộng tác bá đạo – Mì AI
  • Storm MCP – giải pháp nhanh gọn nhẹ để có MCP Server trong 5 phút – Mì AI
  • VoxCPM thử voice cloning với checkpoint finetune Tiếng Việt – Mì AI

Recent Comments

  1. Chủ tiệm Mì on Thử xây dựng hệ thống Agentic AI với LangGraph – Mì AI
  2. Nguyễn Chiến Thắng on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  3. Trần Sơn Dương on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  4. Salomon on [CV] Thử làm model cảnh báo ngủ gật cho tài xế oto bằng Dlib và Resnet
  5. khang on Xây dựng hệ thống nhận diện thủ ngữ – ngôn ngữ ký hiệu tay – để giao tiếp với người khuyết tật

Categories

  • Basic
  • Computer Vision
  • Data Science – Data Analysis
  • Generative AI
  • MÌ ÚP
  • Natural Language Processing
  • RNN-LSTM-GRU
  • Share Data

Là người đi trước, hãy biết đưa tay lại phía sau.

Nguyễn Chiến Thắng
Cảm ơn các bạn đã ủng hộ Mì AI!