Thử dạy máy tính xem và phân loại video các môn thể thao Seagames 30

Hello cuối tuần các anh em Mì AI, một tuần trôi qua thật nhanh và ngày cuối tuần vui vẻ đến tất cả các anh em nhé. Hôm nay mình sẽ cùng anh em đến với một bài classify nhưng không phải là classify hình ảnh thường nữa mà anh em ta sẽ cùng nhau classify, phân loại video nhé.

Sau khi train xong, chúng ta sẽ cho model xem trận đấu bóng đá chung kết Seagames 30 và máy tính sẽ hiển thị là “Đang xem bóng đá”. Hoặc nếu cho xem quả huy chương vàng bơi lội của Ánh Viên thì máy sẽ nói “Đang xem bơi lội” :D.

Thú vị đúng ko các bạn ? Bắt đầu luôn nhé!

Nguồn: ZingVN

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

Các bạn tạo thư mục MiAI_Video_Classify để lưu mã nguồn nhé. Tạo xong thì clone ngay thôi

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

Đợi một tý là các bạn có mã nguồn liền tay. Bây giờ thì như thường lệ là cài đặt các thư viện

pip install -r setup.txt

Xong con ong! Bây giờ tải dữ liệu về nhé. Mình sẽ sử dụng các hình ảnh của 3 môn thể thao là: bóng đá, bơi lội và đấm bốc nhé (để demo cho nhanh). Các bạn bấm vào đây để tải dữ liệu tại đây ( cảm ơn tác giả Anubhav Maity đã chia sẻ)

Sau khi tải dữ liệu về các bạn sẽ có thư mục data, copy nguyên thư mục data đó vào folder MiAI_Video_Classify là xong luôn!

Phần 2 – Tư tưởng thuật toán phân loại video

Chắn hẳn các bạn đã quen với việc dùng CNN để phân loại hình ảnh đúng không? Bài này cũng tương tự.

  • Mình sử dụng mạng Resnet50 và weight imagenet để thực hiện transferlearning.
  • Sau đó đóng băng các lớp của mạng và gắn thêm vài lớp Flattern và Dense, kết thúc bằng Softmax để clasiffy.
  • Mình đưa liên tiếp các ảnh của video vào để classify sau đó lấy trung bình của 128 frame liên tiếp gần nhất để đưa ra kết quả dự đoán cuối cùng và hiển thị lên màn hình.

Phần 3 – Mã nguồn chương trình

Các bạn chú ý sẽ có 2 file:

  • Training.py: File thực hiện xử lý dữ liệu và train model, lưu model ra file h5.
  • Predict.py: Thực hiện đọc frame từ video, xử lý ảnh và và predict kết quả cuối cùng và hiển thị lên màn hình.

Phần 4 – Tiến hành train và test model phân loại video

Đầu tiên hãy kiểm tra lại xem dữ liệu đã đầy đủ chưa, các bạn đã cài cắm đủ thư viện chưa. Nếu đã đủ hãy gõ lệnh sau để train:

python training.py

Ở đây mình đang để tạm 25 epochs vì thấy accurary cũng khá ổn rồi. Các bạn có thể điều chỉnh nếu muốn.

phân loại video

Sau khi train xong model sẽ được lưu vào file models/sport.h5 nhé. Mình có pretrain sẵn cho các bạn thử nhé, tại đây. Các bạn tải về copy vào thư mục models là xong!

Bây giờ là bước thú vị nhất đó là kiểm tra model của chúng ta. Mình có để sẵn 2 video trong thư mục test_video :

  • Football_lite.mp4: Là bàn thằng của Việt Nam trước Indo Seagames 30 vừa rồi
  • Swim_lite.mp4: Là huy chương vàng bơi lội của Ánh Viên

Chúng ta chạy lệnh sau để kiểm thử nhé:

python predict.py -v test_video/football_lite.mp4

Và màn hình sẽ hiện ra hình ảnh trận đấu bóng đá kèm dự đoán chuẩn của model là: “I’m watching: Football”

phân loại video

Bây giờ chúng ta đổi câu lệnh:

python predict.py -v test_video/swim_lite.mp4

Và chúng ta sẽ có predict là đang xem Swiming 😀

phân loại video

Như vậy model của chúng ta đã dự đoán chuẩn các môn thể thao. Bài này mình xin tạm dừng ở đây nhé. Hẹn gặp lại các bạn trong các bài tiếp theo nhé!

Hãy join cùng 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

Cảm ơn tác giả Anubhav Maity đã có bài tham khảo tuyệt vời!

Related Post

2 Replies to “Thử dạy máy tính xem và phân loại video các môn thể thao Seagames 30”

Leave a Reply

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