Melatih R-CNN Lebih Cepat Menggunakan API Deteksi Objek TensorFlow dengan Set Data Kustom | oleh Menuju Tim AI | Apr, 2021

Antarmuka program aplikasi deteksi objek (API) TensorFlow berfungsi sebagai framework untuk membuat jaringan neural deep learning yang bertujuan untuk memecahkan masalah deteksi objek.

Berkat API deteksi objek TensorFlow, kumpulan data tertentu dapat dilatih menggunakan model yang ada di dalamnya dalam keadaan siap pakai. Selain itu, fasilitas TensorFlow adalah bobot yang digunakannya dari kumpulan data COCO yang dikandungnya. Model yang ada dapat digunakan tanpa perlu pembelajaran ulang melalui model yang sudah dilatih sebelumnya.

Di seluruh model jaringan neuralnya, banyak penelitian telah dilakukan dalam ilmu data, dan banyak masalah yang dihadapi dalam pembelajaran mesin telah dipecahkan. Ini adalah harta karun bagi ilmuwan data khusus computer vision dan mereka yang bekerja di bidang kecerdasan buatan.

Perpustakaan diperlukan untuk instalasi kami 📣

Protobuf 3.0.0Python-tkPillow 1.0Lxmltf Slim (yang disertakan dalam tensorflow / model / penelitian / ”checkoutJupyter notebookMatplotlibTensorflow (> = 1.12.0) Cythoncontextlib2COCO API

📌 Tautan model yang ditawarkan oleh TensorFlow dan file API deteksi objek yang akan digunakan untuk deteksi objek dapat ditemukan di Github.

Gambar 5: Eksekusi R-CNN yang lebih cepat.

Langkah 1: Membuat Lingkungan Virtual dan Mengaktifkan di Anaconda

(base) C: Users PCName> conda create -n myenv python = 3.6
(base) C: Users PCName> conda mengaktifkan myenv
(myenv) C: Users PCName>

Jika transaksi dilakukan tanpa menginstal lingkungan virtual baru, ini akan menyebabkan kesulitan karena mungkin ada unduhan yang salah di pangkalan.

Langkah 1.1: Menginstal TensorFlow GPU

Conda instal tensorflow-gpu == 1.15.0

Langkah 1.2: Kompiler Protocol Buffer diinstal di Anaconda Prompt

File protobuf adalah file protokol yang diperlukan untuk transmisi data.

Buffer protokol adalah mekanisme yang dapat diperluas netral-bahasa dan platform-netral untuk membuat serialisasi data terstruktur.
– Pengembang Google [7]

Conda install -c anaconda protobuf

Langkah 1.3: Setelah lingkungan virtual baru diinstal, muat dari dalam file requirement.txt

# Requirement.txt samplepillow
lxml
jupyter
matplotlib.dll
panda
opencv-python
cython == 0.28.1
tf_slim
licik

Paket yang diperlukan dapat diinstal dari terminal dengan perintah pip install, atau file ini dapat diunduh dan dijalankan dengan perintah berikut.

pip install -r requirement.txt

Langkah 2: Unggah file model Tensorflow

Penggunaan Object Detection API tidak mungkin dilakukan tanpa file model TensorFlow. Oleh karena itu, harap pastikan bahwa file tersebut telah diunduh dari lokasi yang benar.

Gambar 7: Direktori model TensorFlow.

Ketika data dalam folder dikeluarkan dari indeks, akan terlihat seperti di atas.

Langkah 3: Letakkan model Faster R-CNN Inception V2 di folder deteksi objek

Pada langkah ini, kita akan menggunakan model Inception v2 dengan jaringan saraf Faster R-CNN yang harus dikeluarkan dari repositori dan ditempatkan di folder. Karena folder yang akan aktif adalah object_detection, itu harus ada di direktori ini.

Gambar 8: Menempatkan model awal R-CNN v2 di direktori deteksi objek.

Catatan: File yang terkait dengan deteksi objek terletak di folder object_detection.

Langkah 4: Tentukan PYTHON_PATH sebagai variabel lingkungan sistem

Alamat model, penelitian, dan direktori object_detection, termasuk file Protobuf yang diunduh, harus ditambahkan ke PYTHON_PATH yang ada.

Ada dua opsi untuk menambahkan jalur.

Gambar 9: Menambahkan ke jalur secara manual Gambar 10: Menambahkan dengan perintah Set setiap saat

Langkah 5: Jalankan file Protoc di folder penelitian

Silakan jalankan dengan mengetikkan file proto di sini sepenuhnya. Pastikan kode di terminal tertulis di folder penelitian.

protoc –python_out =. . object_detection protos anchor_generator.proto. object_detection protos argmax_matcher.proto. object_detection protos bipartite_matcher.proto. object_detection protos box_coder.proto. object_detection protos box_predictor.proto eval.proto. object_detection protos fast_rcnn.proto. object_detection protos fast_rcnn_box_coder.proto. object_detection protos flexible_grid_anchor_generator.proto. object_detection protos calibration.proto. object_detection. hyperparams calibration.proto. object_detection. hyperparams object_detection protos image_resizer.proto. object_detection protos input_reader.proto. object_detection protos loss.proto. object_detection protos matcher.proto. object_detection protos mean_stddev_box_coder.proto. object_detection protos matcher.proto. object_detection protos mean_stddev_box_coder.proto. model.proto. object_detection protos optimizer.proto. object_detection protos pipeline.proto. object_detection protos post_processing.proto. object_detection protos preprocessor.proto. object_detection protos region_similarit y_calculator.proto. object_detection protos square_box_coder.proto. object_detection protos ssd.proto. object_detection protos ssd_anchor_generator.proto. object_detection protos string_int_label_map.proto. object_dotos object_detection protos keypoint_box_coder.proto. object_detection protos multiscale_anchor_generator.proto. object_detection protos graph_rewriter.proto. object_detection protos center_net.proto. object_detection fotos grid_anchor_gection. .proto. object_detection protos target_assigner.proto

Langkah 6: Jalankan file setup.py di folder penelitian

Pastikan bahwa file setup.py yang ada di folder Research telah dikompilasi dan diinstal.

python setup.py buildpython setup.py install

Langkah 7: Mengonversi file XML set data yang disiapkan ke CSV

Kumpulan data yang dapat digunakan dengan TensorFlow Object Detection API berjenis terbatas. Karena penggunaan PASCAL VOC adalah hal yang umum, data XML akan digunakan terutama. Tag lokasi gambar dan gambar disimpan secara bersamaan dalam data Pascal VOC.

PASCAL VOC (Tantangan Kelas Objek Visual PASCAL)

Gambar 11: Deteksi objek dari dataset publik PASCAL VOC | Sumber: Dataset publik oleh Dong et al. dalam Makalah dengan Kode [8].

Dataset PASCAL Visual Object Classes (VOC) 2012 berisi 20 kategori objek antara lain kendaraan, rumah tangga, hewan, dan lain-lain: pesawat terbang, sepeda, perahu, bus, mobil, sepeda motor, kereta api, botol, kursi, meja makan, tanaman dalam pot, sofa, TV / monitor, burung, kucing, sapi, anjing, kuda, domba, dan orang. Setiap gambar dalam kumpulan data ini memiliki anotasi segmentasi tingkat piksel, anotasi kotak pembatas, dan anotasi kelas objek.
– PASCAL VOC [8]

Pada langkah ini, data yang akan digunakan untuk menguji dan melatih folder harus dipindahkan ke direktori models / research / object_detection / images.

Gambar 12: Folder deteksi_bjek. Gambar 13: Melatih dan menguji file CSV.

Jalankan kode yang ditunjukkan di bawah ini di direktori models / research / object_detection. Di folder gambar, file CSV test_labels.csv dan train_labels.csv akan dibuat.

python xml_to_csv.py

Langkah 8: Masukkan kelas di file generate_tfrecord.py

Nama kelas yang ingin kita gunakan harus ditentukan pada langkah ini.

Gambar 14: Memasuki kelas untuk data TensorFlow kami.

Langkah 9: File Generate_tf_record.py dijalankan untuk set pelatihan dan pengujian

Jalankan kode di bawah ini di direktori models / research / object_detection. Untuk membuat record Tensorflow dilakukan dengan kode berikut.

python generate_tfrecord.py –csv_input = images / train_labels.csv –image_dir = images / train –output_path = train.recordpython generate_tfrecord.py –csv_input = images / test_labels.csv –image_dir = images / test –output_path = test.record

Langkah 10: Buat file bernama labelmap.pbtxt di direktori model / research / object_detection / training

Hal pertama yang harus dilakukan pada langkah ini adalah memindahkan file lebih cepat_rcnn_inception_v2_pets.config dan graph.pbtxt ke dalam direktori models / research / object_detection / training. Gambar 15: Memindahkan file ke direktori yang benar Setelah file generate_tf_record dijalankan, label peta akan dibuat secara otomatis. Ini dapat dikontrol dengan membuka peta label di folder sebagai berikut. Gambar 16: Output dari file rekaman TensorFlow kami.

Ubah baris di fast_rcnn_inception_v2_pets.config seperti di bawah ini di direktori models / research / object_detection / training.

(Contoh perubahan untuk 5 kelas)

Baris 9: # tulis jumlah kelas Gambar 17: Menulis jumlah kelas dengan R-CNN yang lebih cepat Baris 106: Tuliskan fine_tune_checkpoint Gambar 18: Menuliskan checkpoint Baris 123: Tulis jalur input jalur train.record Baris 130: Tulis hitungan dari gambar uji di folder model / penelitian / gambar / tes Gambar 19: Menghitung gambar kita Baris 135: Tulis jalur input dari jalur test.record Gambar 20: Menulis jalur input dari catatan pengujian kami Baris 137: Menulis label kami map path Gambar 21: Menulis path map label kita.

Langkah 11. Latih model dengan file train.py

Sebelum folder training models / research / object_detection / inference_graph harus kosong. Sejak mulai berlatih, jalankan perintah di bawah ini di direktori models / research / object_detection.

python train.py –logtostderr –train_dir = training / –pipeline_config_path = training / fast_rcnn_inception_v2_pets.config

Saat pelatihan dimulai, kita akan melihat yang berikut ini di terminal;

Gambar 22: Awal pelatihan model kami.

Langkah 12: Tahap Grafik Inferensi untuk hasil pengujian dengan export_inference_graph.py

Tulis nomor model model.ckpt terakhir yang dibuat di direktori inference_graph di bagian XXXX dari perintah. Misalnya, jumlah model yang dibuat karena pelatihan dapat diberi nilai “0” sebagai berikut.

Gambar 23: Grafik inferensi stage.python export_inference_graph.py –input_type image_tensor –pipeline_config_path training / fast_rcnn_inception_v2_pets.config –trained_checkpoint_prefix training / model.ckpt-XXXX –output_directory inference_graph

Saat menulis kode Python, saat idle diketik di terminal, layar idle muncul.

Gambar 24: Layar idle.

Pilih File / Open… dari pojok kiri idle. Pilih file Object_detection_image.py di model direktori / research / object_detection dari layar yang terbuka.

Ada dua opsi di sini. Kita dapat mengatur jalur folder uji di file object_detection_image.py, atau kita bisa memindahkan gambar yang ingin kita uji ke direktori model / research / object_detection.

Petunjuk 🗝️

Di sini, operasi dilakukan dengan memindahkan gambar yang diinginkan ke direktori test model / research / object_detection.

IMAGE_NAME = ‘yourtestimagename.JPG’

Tuliskan jumlah kelas yang dapat diidentifikasi oleh detektor objek.

NUM_CLASSES = 1

Tekan F5 untuk menjalankan modul:

Gambar 25: Setelah menjalankan modul. | Sumber: Gambar demi Gambar Tantangan Kelas Objek Visual PASCAL, kumpulan data publik [9]