Top Ad unit 728 × 90


Train (Đào tạo, máy học) các đối tượng tùy chỉnh sử dụng Tensorflow - Phần 1

          Như ở bài trước chúng ta đã tìm hiểu cách sử dụng tensorflow trong nhận dạng đối tượng với dữ liệu có sẵn (đã được train bởi google). Nhưng trong thực tế ứng dụng chúng ta không cần quá nhiệu dữ liệu đối tượng được train (cần nhiều tài nguyên máy, tốc độ chương trình chậm). Ở bài này chúng ta sẽ tìm hiểu cách train (đào tạo) đối tượng tùy chọn.
          Ở đây chúng ta sẽ train đối tượng trên hệ điều hành Ubuntu (linux).
Bước 1: Thu thập ảnh và dán nhãn hình ảnh
Thu thập vài trăm hình ảnh có chứa đối tượng của bạn - Tối thiểu tối thiểu là khoảng 100, lý tưởng hơn như 500 +, nhưng, bạn càng có nhiều hình ảnh,  tẻ nhạt hơn là ...
Chú thích / dán nhãn các hình ảnh, lý tưởng với một chương trình. Ở hướng dẫn này chúng ta sử dụng LabelImg. Quá trình này về cơ bản là vẽ các ô xung quanh đối tượng của bạn (s) trong một hình ảnh. Chương trình nhãn tự động sẽ tạo một tệp tin XML mô tả các đối tượng trong ảnh.

Cài đặt labeImage


sudo apt-get install pyqt5-dev-tools
sudo pip3 install lxml
git clone https://github.com/tzutalin/labelImg
cd labelImg
make qt5py3
python3 labelImg.py

Khi chạy file này, bạn sẽ nhận được một cửa sổ giao diện. Từ đây, chọn mở thư mục và chọn thư mục mà bạn đã lưu tất cả các hình ảnh của mình. Bây giờ, bạn có thể bắt đầu chú thích bằng nút tạo rectbox. Vẽ khung anh của bạn, thêm tên vào, và nhấn ok. Lưu, nhấn ảnh kế tiếp, và lặp lại! Bạn có thể nhấn phím w để vẽ khung và dung ctrl + s để làm nhanh hơn.



Khi bạn đã có hơn 100 hình ảnh được gắn nhãn, chúng ta sẽ tách chúng thành các nhóm đào tạo và thử nghiệm. Để làm điều này, chỉ cần sao chép khoảng 10% hình ảnh của bạn và các tệp tin chú thích của XML vào một thư mục mới gọi là "test" và sau đó sao chép các tệp còn lại vào một thư mục mới được gọi là "train"

Một khi bạn đã thực hiện xong tất cả những điều này, bạn đã sẵn sàng để đi tới hướng dẫn tiếp theo, ở đây chúng ta sẽ giới thiệu cách tạo các tệp tin TFRecord yêu cầu từ dữ liệu này.



Bước 2: TFRecord

Bây giờ chúng ta cần phải chuyển đổi các tệp XML này thành các tệp tin CSV riêng lẻ có thể  chuyển đổi thành tệp TFRecord. Để làm điều này, chúng ta sẽ sử dụng sẽ sử dụng code xml_to_csv.py ( bạn có thể tải về Ở Đây)  

Trong tập lệnh xml_to_csv, tôi đã thay đổi:
Từ
def main():
    image_path = os.path.join(os.getcwd(), 'annotations')
    xml_df = xml_to_csv(image_path)
    xml_df.to_csv('raccoon_labels.csv', index=None)
    print('Successfully converted xml to csv.')
Thành:
def main():
    for directory in ['train','test']:
        image_path = os.path.join(os.getcwd(), 'images/{}'.format(directory))
        xml_df = xml_to_csv(image_path)
        xml_df.to_csv('data/{}_labels.csv'.format(directory), index=None)
        print('Successfully converted xml to csv.')

Scrpit này là để tách train / test và đặt tên các tập tin. Để chương trình được chạy tốt, các bạn để các folder theo như hướng dẫn: (thư mục đặt trên Desktop)


Object-Detection
-data/
--test_labels.csv
--train_labels.csv
-images/
--test/
---testingimages.jpg
--train/
---testingimages.jpg
--...yourimages.jpg
-training
-xml_to_csv.py

Bây giờ tới file generate_tfrecord.py. Việc sửa đổi duy nhất mà bạn cần làm ở đây là trong lớp class_text_to_int. Bạn cần phải thay đổi điều này để lớp cụ thể của bạn. Trong trường hợp của chúng ta, chúng ta chỉ có một lớp. Nếu bạn có nhiều lớp, thì bạn sẽ cần tiếp tục xây dựng câu lệnh if.


# TO-DO replace this with label map
def class_text_to_int(row_label):
    if row_label == 'macncheese':
        return 1
    else:
        None

Và tất nhiên để thực hiện train thì chúng ta cần cài đặt Tensorflow.


Đầu tiên chúng ta cần clone tensorflow về máy tính:

git clone https://github.com/tensorflow/models.git

Sau đó cài đặt các thu viện cần thiết

pip3 install tensorflow 
sudo apt-get install protobuf-compiler python-pil python-lxml
sudo pip install jupyter
sudo pip install matplotlib

Và tiếp tục:

# Từ tensorflow/models/research
protoc object_detection/protos/*.proto --python_out=.

Nếu các bạn gặp lỗi chúng ta cần sử dụng phiên bản protoc mới nhất 
Download phiên bản cho python giải nén và thực hiện các lệnh: [download]

sudo ./configure
sudo make check
sudo make install

Sau đó thử thực hiện lại lệnh protoc lần nữa (chắc chắn các bạn phải đang chạy từ thu mục  models ).

# Từ tensorflow/models/research
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

Cuối cùng chúng ta tiến hành cài đặt thư viện object_dection :

sudo python3 setup.py install

Chúng ta bắt đầu chạy generate_tfrecord.py script. Chúng ta cần chạy hai lần, một lần để train TFRecord và lần còn lại là test TFRecord.

python3 generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=data/train.record
python3 generate_tfrecord.py --csv_input=data/test_labels.csv --output_path=data/test.record

Bây giờ, trong thư mục dữ liệu của bạn, bạn đã có train.record và test.record.
Tiếp theo, chúng ta cần phải thiết lập một tệp cấu hình và sau đó đào tạo một mô hình mới hoặc bắt đầu từ một điểm kiểm tra với một mô hình được đào tạo trước, đó là những gì chúng ta sẽ đề cập trong hướng dẫn tiếp theo.

Video hướng dẫn




Train (Đào tạo, máy học) các đối tượng tùy chỉnh sử dụng Tensorflow - Phần 1 Reviewed by Jacky on tháng 12 14, 2017 Rating: 5

Không có nhận xét nào:

All Rights Reserved by Cộng Đồng OpenCV © 2017
Edit bởi: Jacky Le | Youtube Channel: JACKY LE

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.