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

[YOLO Series] Thử nhận diện lửa bằng Yolov4 trên GPU với Keras

By Chủ tiệm Mì
June 1, 2020 4 Min Read
15

Xin chào các mem, trong bài trước chúng ta đã tìm cách train model YOLOv4 bằng COLAB rất nhanh gọn tại đây. Hôm nay chúng ta sẽ tìm cách Thử nhận diện lửa bằng Yolov4 trên GPU với Keras

Nói thêm chút là sau khi train 3000 vòng trên COLAB mình đã có file weights YOLOv4 train với dữ liệu là hình ảnh các ngọn lửa (file weights tại đây cho các bạn ngại train). Bây giờ chúng ta sẽ sử dụng nó để nhận diện lửa trên PC.

yolo sample

Bắt đầu nào!

Phần 1 – Khó khăn khi chạy YOLOv4 trên OpenCV

Trong bài trước mình có guide các bạn chạy YOLOv3 trên OpenCV tại đây. Tuy nhiên sau khi lên YOLOv4 thì nó có thêm một hàm activation mới là hàm “mish” nên khi anh em chạy sẽ bị lỗi Unsupported như hình dưới:

yolo opencv mish error

Hiện có một giải pháp là 1 số bạn sử dụng source opencv, thêm hàm này vào manual và sau đó build lại. Tuy nhiên việc này làm khá mất thời gian và cũng cần hiểu biết về c, c++ nên tạm thời mình chưa đề cập ở đây (bạn nào làm được thì share lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho anh em với nhé, xin cảm ơn)

Ngoài ra còn có 1 lý do nữa là anh em đang muốn tìm hiểu cách chạy YOLO trên GPU cho nó nhanh nữa nên mình quyết định viết bài về Yolov4 trên Keras luôn nhé anh em.

Let’s go!

Phần 2 – Chuẩn bị nguyên vật liệu để chạy YOLOv4 trên Keras

Đầu tiên anh em cứ clone cái source của mình về cái đã nhé, sau đó minh sẽ phân tích cách làm chi tiết sau. Anh em chạy lệnh git:

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

Sau khi chạy xong thì cài đặt các thư viện cần thiết với lệnh:

pip install -r setup.txt

Đợi khá lâu đó cho các thư viện được cài đặt thành công. Nếu cài đặt có lỗi gì các bạn cứ post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để thảo luận nhé.

Phần 3 – Convert YOLOv4 model sang Keras Model

File weights bình thường anh em train ra nó lưu ở 1 định dạng riêng và do đó khi muốn chạy trên Keras anh em sẽ phải thực hiện convert. Anh em mở file convert.py và chú ý đoạn source này:

if __name__ == '__main__':
    model_path = 'yolo4_weight.h5'
    anchors_path = 'yolo4_anchors.txt'
    classes_path = 'yolo.names'
    weights_path = 'yolov4-custom_last.weights'

    score = 0.5
    iou = 0.5

    yolo4_model = Yolo4(score, iou, anchors_path, classes_path, model_path, weights_path)
    yolo4_model.close_session()
    print("Model converted..done!")

Các bạn cần chú ý các dòng sau:

  • Dòng 2: Đây là tên file h5 sau khi convert xong. Các bạn có thể để mặc định cũng được.
  • Dòng 3: File anchors.txt mặc định của YOLOv4.
  • Dòng 4: Ta cần kiểm tra chắc chắn file yolo.names chứa danh sách class đã train ở bài trước. Ví dụ như bài này của mình chứa 1 dòng duy nhất là “Fire” (không có dấu nháy nhé)
  • Dòng 5 : Tiếp theo hãy sửa dòng weights_path = ‘yolov4-custom_last.weights’ thành tên file weights mà bạn đã train ở bài trước. Còn nếu tên file weights của bạn cũng là yolov4-custom_last.weights thì thôi, cứ để nguyên là ngon lành cành đào.

Rồi bây giờ anh em chạy file convert.py 1 phát nào:

python convert.py

Anh em đợi một chút cho nó chạy, khi nào màn hình hiện ra dòng chữ Model converted..done! là thành công nhá.

Bây giờ anh em kiểm tra trong thư mực hiện tại đã có thêm file yolov4_weight.h5, đó chính là keras model của chúng ta với đuôi h5 quen thuộc nhé.

Đi tiếp nha!

Phần 4 – Thực hiện nhận diện lửa

Tiếp theo bạn để ý mình đã để sẵn 2 file ảnh để test trong thư mục project là 000341.jpg và 000449.jpg.

Các bạn tìm đến đoạn source sau trong file test.py và thử sửa đoạn này thành các file ảnh của bạn:

img = "000341.jpg"
image = Image.open(img)

result = yolo4_model.detect_image(image,model_image_size=model_image_size)
plt.imshow(result)
plt.show()
yolo4_model.close_session()

Sau khi sửa xong thì chạy file test.py và nếu okie thì kết quả đây:

yolov4 trên GPU

Như vậy chúng ta đã biết cách chạy được YOLOV4 trên GPU với Keras. Bài này vừa giúp các bạn thử nghiệm được model YOLOv4 đã train vừa có thể tăng tốc nếu máy bạn có GPU.

Mình xin tạm dừng ở đây và hẹn gặp lại các bạn trong các bài tiếp theo của series NLP còn đang dang dở.

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 bài tham khảo rất hay của Ma-Dan!

Tags:

aidarknetdeep learningGPUkerasmachine learningobject detectionpythontrainYoloyolo v4yolov4
Author

Chủ tiệm Mì

Follow Me
Other Articles
Previous

[DA-DS]Nhập môn Data Analysis với Python

Next

Thử làm phần mềm quét văn bản/scanner app bằng OpenCV

15 Comments
  1. hung says:
    June 24, 2020 at 7:53 am

    Loi: em install theo anh nhu trong setup.txt thi no bat tensor > 2.2 moi dung dc keras, em install tensorflow >= 2.2 thi no bat tensor < 2.0 moi dung duoc @@ cuoi cung khong biet dung ban tensor nao

    Reply
    1. Nguyễn Chiến Thắng says:
      June 25, 2020 at 3:25 am

      Em cài bản Keras thấp hơn bằng lệnh pip install keras==2.3.1 nhé. Nếu vẫn vướng thì post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!

      Reply
  2. khuong says:
    July 25, 2020 at 6:12 am

    Dành cho bạn nào bị lỗi như bên dưới thì: vào đây update package lên: https://stackoverflow.com/a/62482183
    Traceback (most recent call last):
    File “convert.py”, line 5, in
    from keras import backend as K
    File “/usr/local/lib/python3.7/site-packages/keras/__init__.py”, line 6, in
    ‘Keras requires TensorFlow 2.2 or higher. ‘
    ImportError: Keras requires TensorFlow 2.2 or higher. Install TensorFlow via `pip install tensorflow`

    Reply
    1. Coder says:
      September 21, 2020 at 10:42 pm

      Một lựa chọn khác để sửa lỗi là thay đổi version bằng cách thay đổi setup.txt:
      numpy
      tensorflow-gpu==1.13.1
      keras==2.3.0
      pillow
      opencv-python
      opencv-python-headless

      Reply
  3. Happy Coder says:
    September 22, 2020 at 12:15 am

    Cảm ơn anh.
    Anh Thắng cho em hỏi, nếu mình muốn áp dụng Yolo v4 model với input là video (video được đọc bằng openCV) thì như thế nào vậy anh? Em search thử thì chỉ có hướng dẫn dùng OpenCV với Yolo v3.

    Reply
  4. Coder says:
    November 2, 2020 at 3:02 am

    Hi Anh Thắng, vậy trong trường hợp máy không có GPU thì mình ko thực hiện dc lệnh convert ah anh.
    Em thực hiện trên máy mac thì gặp lỗi như sau:
    Traceback (most recent call last):
    File “convert.py”, line 166, in
    yolo4_model = Yolo4(score, iou, anchors_path, classes_path, model_path, weights_path)
    File “convert.py”, line 152, in __init__
    self.load_yolo()
    File “convert.py”, line 133, in load_yolo
    self.yolo4_model.save(self.model_path)
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/keras/engine/network.py”, line 1152, in save
    save_model(self, filepath, overwrite, include_optimizer)
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/keras/engine/saving.py”, line 449, in save_wrapper
    save_function(obj, filepath, overwrite, *args, **kwargs)
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/keras/engine/saving.py”, line 541, in save_model
    _serialize_model(model, h5dict, include_optimizer)
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/keras/engine/saving.py”, line 161, in _serialize_model
    layer_group[name] = val
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/keras/utils/io_utils.py”, line 233, in __setitem__
    dataset = self.data.create_dataset(attr, val.shape, dtype=val.dtype)
    File “/Users/diego/.conda/envs/MiAI_Keras_Yolo/lib/python3.7/site-packages/h5py/_hl/group.py”, line 143, in create_dataset
    if ‘/’ in name:
    TypeError: a bytes-like object is required, not ‘str’

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

      Ồ ko liên quan em ơi., Em thử chụp hình và post lên Group https://www.facebook.com/groups/miaigroup rồi trao đổi thêm nhé! Trên này không có hình khó quá!

      Reply
  5. Mai Thanh Thảo says:
    December 15, 2020 at 9:09 am

    Em chạy file convert.py thì bị lỗi như này
    Traceback (most recent call last):
    File “convert.py”, line 173, in
    yolo4_model = Yolo4(score, iou, anchors_path, classes_path, model_path, weights_path)
    File “convert.py”, line 157, in __init__
    self.load_yolo()
    File “convert.py”, line 130, in load_yolo
    buffer=weights_file.read(weights_size * 4))
    TypeError: buffer is too small for requested array

    Reply
    1. Nguyễn Chiến Thắng says:
      December 15, 2020 at 9:12 am

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

      Reply
    2. Xuan Thien Bui says:
      June 16, 2021 at 5:10 pm

      anh đã chạy được chưa ạ

      Reply
  6. trieu says:
    December 27, 2020 at 6:20 am

    mình git lone trên colab luôn hả anh

    Reply
    1. Nguyễn Chiến Thắng says:
      December 28, 2020 at 9:34 am

      Đúng em. Cho nhanh 😀

      Reply
  7. Tan says:
    March 24, 2021 at 10:16 am

    Đã làm được cảm ơn anh

    Reply
  8. Linh Nhật says:
    May 23, 2021 at 4:13 pm

    Làm sao để thay input từ hình ảnh thành video ạ.

    Reply
    1. Nguyễn Chiến Thắng says:
      May 27, 2021 at 4:53 pm

      Em tham khảo bài này: https://www.miai.vn/2019/09/23/xay-dung-he-thong-chong-trom-don-gian-bang-yolo-va-opencv/

      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!