Détection d'objets personnalisés

Vous pouvez télécharger le code sur la page GitHub ( lien )





Bienvenue dans l'article sur la reconnaissance. Comme je passe la plupart de mon temps de travail dans un espace de bureau en open space, où chaque lieu est numéroté, j'ai décidé de vous parler de la vision par ordinateur en utilisant l'exemple d'une plaque régulière avec un numéro de lieu de travail. Ici, nous allons recycler le réseau de neurones pour détecter la plaque de notre choix.





J'utilise python3.7 et les noms de tous les modules versionnés sont stockés dans le fichier requirements.txt.





.





:





  • 500 , — 100, 1000 , , 2.





  • / . 80%, - 20%.





  • TF .





  • . config ( , ).





  • .





  • .





  • .





TensorFlow , , 1000 . , , . , , - .





, ().





. , . LabelImg- , GitHub , .





LabelImg GitHub ()





LabelImg ()





LabelImg, GUI. — dir , . create rectbox. , . , ! w, , ctrl+s, . 1 100 , , . , !





LabelImg xml-, . xml- TFRecords, TensorFlow. , , \test \train xml-.





, . , 20% XML- test, train.





, , TFRecords, TensorFlow.





-, image .xml csv-, . , : python xml_to_csv.py.





train_labels.csv test_labels.csv CSGO_images. cmd, .bat xml_to_csv.bat.





generate_tfrecord.py . , . labelmap.pbtxt.





, , generate_tfrecord.py:





# TO-DO    label map
def class_text_to_int(row_label):
    if row_label == 'table':
        return 1
    else:
        return None
      
      



TFRecord, generate_tfrecord.bat.





train.record test.record training. .





, — . , , . labelmap.pbtxt CSGO_training. . , generate_tfrecord.py.





item {
 id: 1
 name: 'table'
}
      
      



, . , . .





TensorFlow research\ object_detection\ samples\ configs faster_rcnn_ inception_v2_ coco.config CSGO_training. . .config , , . 10. num_classes , . :





num_classes : 1
 107.  fine_tune_checkpoint :
fine_tune_checkpoint : "faster_rcnn_inception_v2_coco_2018_01_28 / model.ckpt"
 122  124.   train_input_reader  input_path  label_map_path :
input_path: "CSGO_images / train. record"
label_map_path: "CSGO_training / labelmap.pbtxt"
 128.  num_examples   ,    CSGO_images\test.    113 ,     :
num_examples: 113
(   )
 136  138.   eval_input_reader  input_path  label_map_path :
input_path: "CSGO_images / test. record"
label_map_path: "CSGO_training / labelmap.pbtxt"
      
      



. ! . .





, train.bat.





. . 1.5 . , 0,05, ( , ). , . , , .





.





, , — ( ). graph export_inference_graph.py,   , “XXXX” ” model.ckpt-XXXX » .ckpt :





python export_inference_graph.py --input_type image_tensor --pipeline_config_path CSGO_training/faster_rcnn_inception_v2_coco.config --trained_checkpoint_prefix CSGO_training/model.ckpt-XXXX --output_directory CSGO_inference_graph
      
      



frozen_inference_graph.pb /coco_v3/ CSGO_inference_ graph. .pb . frozen_inference_graph.pb . coco_v3 predict.py 39 .





PATH_TO_FROZEN_GRAPH = 'graph/frozen_inference_graph.pb'
      
      



41 labelmap.





PATH_TO_LABELS = 'graph/labelmap.pbtxt'
      
      



Enfin, avant d'exécuter des scripts Python, vous devez modifier la variable NUM_CLASSES du script pour qu'elle corresponde au nombre de classes que nous voulons détecter. Je n'utilise qu'une seule classe, donc je l'ai changé en 1:

NUM_CLASSES = 1





À la ligne 65, vous devez définir l'image sur laquelle la détection aura lieu.





Après le démarrage, vous verrez une fenêtre et une plaque reconnue.





C'est tout, merci pour votre attention.








All Articles