Xin chào anh em, hôm nay chúng ta sẽ cùng nhau tìm cách cài đặt và train YOLO trên Windows nhé.
Đây là bài viết của MOD của Mì Ai Blog – Dưỡng Hà, bạn Dưỡng Hà chuyên về OpenCV, Deep Learning trên Windows.
Sở dĩ có bài này là vì cài đặt và train trên Windows khó hơn, nhiều thao tác hơn và dễ lỗi hơn trên Linux và MacOS. Thời gian vừa qua có rất nhiều bạn đã gặp khó khăn khi thực hành các bài toán. Mình thì lại sử dụng Mac và ko có máy tính Windows nên không giúp anh em được nhiều. Do vậy có đặt hàng MOD Dưỡng Hà và nay đã có bài khá hay cho các bạn. Chúng ta cùng bắt đầu nhé!
Phần 1 – Cấu hình máy tính khuyến nghị
Do YOLO là một mô hình khá nặng nên các bạn cần có máy tính mạnh, có GPU để có thể train thành công nhé. Nếu không có thì các bạn có thể tham khảo bài train YOLO trên COLAB tại đây.
Cấu hình máy mình dùng trong bài này là: Win 10 64-bit, RAM 32Gb, Card màn hình GPU: GetForce GTX 1070 Ti.
Phần 2 – Mã nguồn YOLO sử dụng cho Window
Các bạn chú ý nhé, mã nguồn YOLO gốc sử dụng trong các bài trên COLAB thì không sử dụng được trên Window, nên các bạn dùng mã nguồn mới tại địa chỉ:
https://github.com/AlexeyAB/darknet
Các bạn bấm vào link trên, chọn mục Download về như hình:
Sau khi tải về các bạn được 1 file darknet_master, các bạn tiến hành giải nén file này để có thư mục darknet như hình dưới:
Như vậy là xong phần mã nguồn, đi tiếp các phần cài cắm nhé!
Phần 3 – Cài đặt các thư viện, phần mềm cần thiết
Phần này tải và cài cắm hơi nhiều và lằng nhằng, các bạn theo dõi kỹ nhé.
Bước 1: Tải và cài đặt CUDA
Cái này các bạn cứ hình dung là thư viện để có thể chạy được các bài toán trên GPU nhé. Thông thường GPU để chơi game cho mượt kaka.
Các bạn tải về CUDA tại đây và tiến hành cài đặt (cứ NEXT thôi, anh em ta cũng chưa thuộc dạng expert haha). Nhớ chọn đúng phiên bản và hệ điều hành nhé. Mình khuyến cáo chưa nên dùng bản 10.1.
Bước 2: Tải về CUDNN
Đây là thư viện NVidia CUDA® Deep Neural Network: Là một thư viện nền tảng cho các mạng deep neural network được tăng tốc bởi GPU. Tóm lại là có thằng này thì mấy cái mạng YOLO mới chạy được trên GPU.
Tải về tại đây, chú ý chọn đúng phiên bản OS. Phần này có thể cần tạo tài khoản thì các bạn cứ xài gmail làm cái tài khoản cho nó hoành nhé.
Bước 3. Tải thư viện OpenCV
Ở đây mình dùng bản 3.4.0 tại đây. Cái này cứ tải về cài như cài phần mềm khác thôi, ko có gì đáng chú ý.
Bước 4. Cài đặt Visual Studio
Các bạn nên xài bản 2015 hoặc 2017. Nếu bạn nào có rồi thì bỏ qua bước này còn bạn nào chưa có thì có 2 lựa chọn:
- Tải và tìm bản cờ rách trên mạng về cài cho nó full.
- Sử dụng bản Community cũng okie. Tải tại đây.
Chú ý: Khi cài đặt phải chọn phần C++ nhé.
Thế là xong phần cài cắm, hãy chắc chắn bạn cài cắm đủ trước khi sang phần tiếp theo nhá.
Phần 4 – Cấu hình và ghép nối các thư viện, phần mềm để train YOLO trên Windows
Bước 1. Cấu hình PATH cho các phần mềm.
Các bạn mở phần Edit System Value lên, để vào phần này các bạn theo hướng dẫn tại đây.
Sau đó các bạn thêm 2 biến như sau trong phàn System Variables (có rồi thì sửa lại phần Value cho đúng nhé)
Bước 2. Copy các file vào đúng vị trí
- Copy <Đường đẫn cài đặt>\cuda\bin\cudnn64_7.dll to C:\Program Files \NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
- Copy <Đường đẫn cài đặt>\cuda\include\cudnn.h to C:\Program Files \NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
- Copy <Đường đẫn cài đặt>\cuda\lib\x64\cudnn.lib to C:\Program Files \NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
Rồi, bây giờ khởi động lại máy tính, tranh thủ nghỉ lấy hơi tý 😀
Phần 5 – Cấu hình Project darket
Tiến hành quay trở lại thư mục Darknet_master đã giải nén ở trên, các bạn chuyển vào thư mục build/darknet và để ý 2 file sau:
- File darknet.sln: Là file solution của Visual Studio cho máy có GPU
- File darket_no_gpu.sln là dành cho máy không có GPU
Ở bài này mình tập trung vào train YOLO trên Windows với máy có GPU nhé, ko có GPU thì ko train nổi đâu, các bạn lên COLAB cho nhanh.
Các bạn click đúp vào file sln để mở solution trong Visual Studio. Nếu bạn dùng VS 2017 thì sẽ có cửa sổ hỏi có nâng cấp không (vì Source Darknet viết bằng VS 2015) và các bạn OK nhé.
Sau khi solution đã được mở lên các bạn click chuột phải chọn Properties và chuyển combox Configuration sang Release như hình:
Tiếp theo các bạn để ý mục CUDA C/C++, chúng ta bấm vào đó để màn hình hiện ra như sau:
Các bạn copy đường dẫn đến CUDA (ví dụ như trên của mình) vào dòng CUDA Toolkit Custom Dir và nhấn OK để đóng lại.
Nghỉ tý đi các bạn, làm chén nước điếu thuốc rồi bắt đầu sau ít phút nhá.
Phần 6 – Tiến hành build trên Windows
Bây giờ, nếu bạn làm chuẩn các bước trên rồi thì hãy quay trở lại VS và nhấn menu Build > Rebuild và đợi VS chạy và biên dịch mã nguồn.
Đợi lúc thì sẽ thấy trong thư mục darknet/x64 xuất hiện file darknet.exe kèm cả mớ file nữa. Như vậy là đã thành công.
Các bạn copy file opencv_world340.dll vào thư mục x64 này để chuẩn bị cho bước train sau nhé.
Phần 7 – Train model YOLO trên Windows
Trước khi train hãy đảm bảo là các bạn đã tạo các file yolo.data, yolo.names, darknet53.conv.74, train.txt. val.txt. yolo3.cfg theo các bài trước của Mì AI nhé (link search https://miai.vn?s=yolo)
Bây giờ để train model YOLO bằng file darknet.ext vừa biên dịch ra, các bạn mở bài này : https://www.miai.vn/2019/08/25/yolo-series-train-va-detect-su-dung-yolo-model-tren-windows/ và làm từ Bước 4 trở đi nhé.
Đại khái là sẽ run command:
darknet.exe detector train yolo.data cfg/yolov3.cfg darknet53.conv.74
Model sẽ chạy train và loss giảm theo thời gian cho đến khi hội tụ là okie nhé.
Chúc các bạn thành công! Nếu có khó khăn gì cứ post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!
#MiAI
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
Ở chỗ “Tiếp theo các bạn để ý mục CUDA C/C++, chúng ta bấm vào đó để màn hình hiện ra như sau” Thì bên máy mình không hiện ra mục CUDA C/C++, chỉ có mỗi mục C/C++ thôi, nhưng khi chạy một project mới với CUDA thì nó mới hiện. Mình bị kẹt ngay chỗ đó và run project không được
Em post lên Group: https://www.facebook.com/groups/miaigroup có ảnh cho tiện nhé!
bạn làm được chưa ạ mình cũng đang gặp vấn đề đó
Máy em có GPU mà GPU của AMD
làm sao cho nó chạy trên AMD anh?
Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!