Hướng Dẫn Thiết Lập Faster R-CNN Với Keras

Mã nguồn triển khai Faster R-CNN trên Keras có thể tải xuống từ địa chỉ: https://github.com/yhenon/keras-frcnn. Sau khi tải về và mở bằng PyCharm (đảm bảo đã cài đặt Tensorflow-gpu và Keras), bạn sẽ thấy cấu trúc của dự án như sau:

Tiếp theo, cần điều chỉnh tệp requirements.txt và thiết lập phiên bản Keras tương thích với hệ thống đã cài đặt. Ví dụ:

Keras==2.0.8

Lưu ý rằng nên chọn phiên bản phù hợp, tránh sử dụng các phiên bản quá mới vì có thể gây ra lỗi không tương thích như:

TypeError: softmax() got an unexpected keyword argument 'axis'

Sau đó, kiểm tra các tham số cấu hình trong tệp train_frcnn.py:

thiet_lap.add_argument("-p", "--duong_dan", dest="duong_dan_huan_luyen", help="Đường dẫn đến dữ liệu huấn luyện.")
thiet_lap.add_argument("-o", "--phan_tich", dest="bo_phan_tich", help="Bộ phân tích dữ liệu. Chọn simple hoặc pascal_voc",
                default="pascal_voc")
thiet_lap.add_argument("-n", "--so_roi", type=int, dest="so_roi", help="Số lượng RoI xử lý trong một lần.", default=32)
thiet_lap.add_argument("--mang", dest="mang_cu_so", help="Mạng cơ sở sử dụng. Hỗ trợ vgg hoặc resnet50.", default='vgg')
thiet_lap.add_argument("--lat_ngang", dest="lat_ngang", help="Tăng cường dữ liệu bằng lật ngang. (Mặc định=false).", action="store_true", default=False)
thiet_lap.add_argument("--lat_doc", dest="lat_doc", help="Tăng cường dữ liệu bằng lật dọc. (Mặc định=false).", action="store_true", default=False)
thiet_lap.add_argument("--xoay", "--xoay_90", dest="xoay_90", help="Tăng cường dữ liệu bằng xoay 90 độ. (Mặc định=false).",
                  action="store_true", default=False)
thiet_lap.add_argument("--so_epoch", type=int, dest="so_epoch", help="Số lượng epoch.", default=2000)
thiet_lap.add_argument("--ten_cau_hinh", dest="ten_cau_hinh", help=
                "Nơi lưu trữ tất cả siêu dữ liệu liên quan đến huấn luyện (dùng khi kiểm tra).",
                default="cau_hinh.pickle")
thiet_lap.add_argument("--duong_dan_trong_so_moi", dest="duong_dan_trong_so_moi", help="Đường dẫn lưu trọng số đầu ra.", default='./model_frcnn.hdf5')
thiet_lap.add_argument("--duong_dan_trong_so_vao", dest="duong_dan_trong_so_vao", help="Đường dẫn đến trọng số đầu vào. Nếu không chỉ định, sẽ tải trọng số mặc định từ keras.")

Theo mặc định, mã nguồn sử dụng Resnet50 làm mạng cơ sở. Tuy nhiên, có thể thay đổi sang VGG bằng cách điều chỉnh tham số tương ứng.

Tải xuống bộ dữ liệu VOC2007 từ địa chỉ: https://pjreddie.com/projects/pascal-voc-dataset-mirror/

Sau khi tải về, giải nén tệp. Do chỉ sử dụng VOC2007, cần chỉnh sửa tệp pascal_voc_phan_tich.py bằng cách loại bỏ VOC2012 trong đoạn mã:

duong_dan_du_lieu = [os.path.join(duong_dan_goc,s) for s in ['VOC2007', 'VOC2012']]

để tránh lỗi khi chạy chương trình.

Để thực thi train_frcnn.py, cần tải trọng số pre-trained cho Resnet50 hoặc VGG:

Trọng số Resnet50: https://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels.h5

Trọng số VGG: https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5

Sau khi tải và giải nén vào thư mục tương ứng, có thể chạy lệnh huấn luyện:

python train_frcnn.py -p D:\PythonWorkSpace\VOC2007\VOCdevkit --input_weight_path D:\PythonWorkSpace\Models

Trong đó, tham số -p chỉ đường dẫn đến thư mục VOC2007, còn --input_weight_path là đường dẫn đến tệp trọng số VGG.

Giao diện khi chương trình đang chạy sẽ hiển thị các thông tin về quá trình huấn luyện:

Thẻ: keras faster-rcnn object-detection deep-learning tensorflow

Đăng vào ngày 18 tháng 5 lúc 00:14