[PYTHON] Implémentation de retina net sur CentOS

environnement

Environnement

git clone https://github.com/tensorflow/tpu.git
sudo apt-get install -y python-tk
pip install tensorflow-gpu==1.15
pip install --user Cython matplotlib opencv-python-headless pyyaml Pillow
pip install 'git+https://github.com/cocodataset/cocoapi#egg=pycocotools&subdirectory=PythonAPI'

Inférence avec le modèle entraîné

  1. Téléchargez n'importe quel modèle https://github.com/tensorflow/tpu/blob/master/models/official/detection/MODEL_ZOO.md

  2. Effectuer une inférence

  1:person
  2:bicycle
  3:car

category_id: sous la forme de category Si vous souhaitez changer de classe, créez un fichier csv selon le format ci-dessus

  python ~/tpu/models/official/detection/inference.py \
    --model="retinanet" \
    --image_size=640\
    --checkpoint_path="./detection_retinanet_50/model.  ckpt" \
    --label_map_file="./retinanet/tpu/models/official/  detection/datasets/coco_label_map.csv" \
    --image_file_pattern="path/to/input/file" \
    --output_html="path/to/output/file" \
    --max_boxes_to_draw=10 \
    --min_score_threshold=0.05

3. Apprenez avec les données originales

  1. Téléchargez les données entraînées https://github.com/tensorflow/tpu/blob/master/models/official/detection/MODEL_ZOO.md ​
  2. Créer des données d'entrée
  #!/bin/bash
​
  TRAIN_IMAGE_DIR="path/to/train/images/dir"
  TRAIN_OBJ_ANNOTATIONS_FILE="path/to/train/file"
  OUTPUT_DIR="path/to/output/dir"
  VAL_IMAGE_DIR="path/to/test/images/dir"
  VAL_OBJ_ANNOTATIONS_FILE="path/to/test/images/dir"
​
  function create_train_dataset(){
    python3 create_coco_tf_record.py \
      --logtostderr \
      --include_masks \
      --image_dir="${TRAIN_IMAGE_DIR}" \
      --object_annotations_file="$  {TRAIN_OBJ_ANNOTATIONS_FILE}" \
      --output_file_prefix="${OUTPUT_DIR}/train" \
      --num_shards=256
  }
  function create_val_dataset() {
    SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
    PYTHONPATH="tf-models:tf-models/research"
    python3 $SCRIPT_DIR/create_coco_tf_record.py \
      --logtostderr \
      --include_masks \
      --image_dir="${VAL_IMAGE_DIR}" \
      --object_annotations_file="$  {VAL_OBJ_ANNOTATIONS_FILE}" \
      --output_file_prefix="${OUTPUT_DIR}/val" \
      --num_shards=32
  }
​
  create_train_dataset
  create_val_dataset

​ 3. Effectuer l'apprentissage

  MODEL_DIR="<path to the directory to store model files>"
  TRAIN_FILE_PATTERN="<path to the TFRecord training data>"
  EVAL_FILE_PATTERN="<path to the TFRecord validation data>"
  VAL_JSON_FILE="<path to the validation annotation JSON file>"
  RESNET_CHECKPOINT="<path to trained model>"
  python ~/tpu/models/official/detection/main.py \
    --model="retinanet" \
    --model_dir="${MODEL_DIR?}" \
    --mode=train \
    --eval_after_training=True \
    --use_tpu=False \
    --params_override="{train: { checkpoint: { path: ${RESNET_CHECKPOINT?}, prefix: resnet50/ }, train_file_pattern: ${TRAIN_FILE_PATTERN?} }, eval: { val_json_file: ${VAL_JSON_FILE?}, eval_file_pattern: ${EVAL_FILE_PATTERN?} }}"
  INFO:tensorflow:examples/sec: 0.622754
  INFO:tensorflow:global_step/sec: 0.078258

4. Raisonnement

  1. Exécutez ​
  python ~/tpu/models/official/detection/inference.py \
      --model="retinanet" \
      --image_size=640\
      --checkpoint_path="path/to/input" \
      --label_map_file="path/to/label" \
      --image_file_pattern="path/to/input/file" \
      --output_html="path/to/output/file" \
      --max_boxes_to_draw=10 \
      --min_score_threshold=0.05

--Modèle avant l'entraînement avec les données originales (Les résultats d'inférence seront téléchargés) ​ --Modèle après la formation (Les résultats d'inférence seront téléchargés)

5. Évaluation

  1. Exécutez
  python ${RETINA_ROOT}/evaluate_model.py\
    --model="retinanet"\
    --checkpoint_path="path/to/imput/file"\
    --config_file="${CONFIG_PATH}"\
    --params_override="${PARAMS_PATH}"\ 
    --dump_predictions_only = True\
    --predictions_path="path/to/output/file"

​ ​

Bonus: comparaison des performances

Comme c'est un gros problème, je l'ai comparé à d'autres modèles construits dans le passé. Tous étaient de taille 8 et ont été formés et évalués à l'aide de l'ensemble de données d'origine.

Vitesse d'apprentissage

Comparez le temps moyen passé sur 100 itérations.

temps
retinanet Environ 21[min]
ttfnet Environ 228[min]

précision

Comparez la précision de l'AP et le résultat de l'inférence au moment de 2000 itérations.

mAP
retinanet 96.35
ttfnet 79.78

Recommended Posts

Implémentation de retina net sur CentOS
Installez Faiss sur CentOS 7
Installez numba sur CentOS 7.2
Installez Python3.4 sur CentOS 6.6
Implémenter ESPnet sur Macbook
Développer .NET sur Linux
Installez mecab-python sur CentOS
Installez Python 2.7.3 sur CentOS 5.4
Installation sur la boîte virtuelle CentOS8
Installez awscli sur centos7
Installer Chainer sur CentOS 6.7
Configuration du couple sur CentOS 6
Configurer grub sur CentOS 8
Jusqu'à docker-compose sur CentOS7
Construction de l'environnement Anaconda sur CentOS7
Installez la série ImageMagick-6.2.x sur CentOS7.7
Installez Python 3.8 sur CentOS 7 (SCL)
L'installation d'Apache échoue sur CentOS 8.2
Moniteur de trafic simple avec CentOS
Installez Chrome sur la série CentOS 7
Installez Python 3.8 sur CentOS 8 (AppStream)
Remarques sur l'installation de Python sur CentOS
Étapes pour déployer EMLauncher sur CentOS 8
Étapes pour installer MySQL 8.0 sur CentOS 8.1
raspberry pi 4 centos7 installer sur docker
Étapes pour installer VirtualBox sur CentOS
Installez java (Oracle JDK14) sur CentOS7
Comment installer PyPy sur CentOS
Configurer l'environnement Python sur CentOS
Comment installer TensorFlow sur CentOS 7
Installez pip sur CentOS7. Aussi iPython.
Créer un environnement python dans centos
Installez VirtualBox sur CentOS 7 sur VirtualBox (mac + vagrant)
Installer Python sur CentOS à l'aide de Pyenv
Comment installer Maven sur CentOS
Créer un environnement python3 sur CentOS7
Note d'étude 9_Install Jenkins sur CentOS7
Installez Python sur CentOS en utilisant pyenv