[PYTHON] Retina-Netz unter CentOS implementiert

Umgebung

Umgebung

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'

Rückschluss auf das trainierte Modell

  1. Laden Sie ein beliebiges Modell herunter https://github.com/tensorflow/tpu/blob/master/models/official/detection/MODEL_ZOO.md

  2. Inferenz durchführen

  1:person
  2:bicycle
  3:car

category_id: In Form einer Kategorie Wenn Sie die Klasse ändern möchten, erstellen Sie eine CSV-Datei im obigen Format

  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. Lernen Sie mit Originaldaten

  1. Laden Sie trainierte Daten herunter https://github.com/tensorflow/tpu/blob/master/models/official/detection/MODEL_ZOO.md ​
  2. Erstellen Sie Eingabedaten
  #!/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. Führen Sie das Lernen durch

  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. Argumentation

  1. Führen Sie aus ​
  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

5. Bewertung

  1. Führen Sie aus
  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: Leistungsvergleich

Da es eine große Sache ist, habe ich es mit anderen Modellen verglichen, die in der Vergangenheit gebaut wurden. Alle hatten Chargengröße 8 und wurden unter Verwendung des Originaldatensatzes trainiert und bewertet.

Lerngeschwindigkeit

Vergleichen Sie die durchschnittliche Zeit, die für 100 Iterationen aufgewendet wurde.

Zeit
retinanet Über 21[min]
ttfnet Über 228[min]

Richtigkeit

Vergleichen Sie die Genauigkeit des AP und das Inferenzergebnis zum Zeitpunkt von 2000 Iterationen.

mAP
retinanet 96.35
ttfnet 79.78

Recommended Posts

Retina-Netz unter CentOS implementiert
Installieren Sie Faiss unter CentOS 7
Installieren Sie numba unter CentOS 7.2
Installieren Sie Python3.4 unter CentOS 6.6
Implementieren Sie ESPnet auf einem Macbook
Entwickeln Sie .NET unter Linux
Installieren Sie mecab-python unter CentOS
Installieren Sie Python 2.7.3 unter CentOS 5.4
Installation auf der CentOS8 Virtual Box
Installieren Sie awscli auf centos7
Installieren Sie Chainer unter CentOS 6.7
Einrichten des Drehmoments unter CentOS 6
Grub unter CentOS 8 einrichten
Bis Docker-Compose auf CentOS7
Anaconda-Umgebungskonstruktion auf CentOS7
Installieren Sie die ImageMagick-6.2.x-Serie unter CentOS7.7
Installieren Sie Python 3.8 unter CentOS 7 (SCL)
Die Apache-Installation schlägt unter CentOS 8.2 fehl
Einfacher Verkehrsmonitor mit CentOS
Installieren Sie Chrome unter der CentOS 7-Serie
Installieren Sie Python 3.8 unter CentOS 8 (AppStream)
Hinweise zur Installation von Python unter CentOS
Schritte zum Bereitstellen von EMLauncher unter CentOS 8
Schritte zum Installieren von MySQL 8.0 unter CentOS 8.1
Himbeer Pi 4 Centos7 auf Docker installieren
Schritte zum Installieren von VirtualBox unter CentOS
Installieren Sie Java (Oracle JDK14) unter CentOS7
So installieren Sie PyPy unter CentOS
Richten Sie die Python-Umgebung unter CentOS ein
So installieren Sie TensorFlow unter CentOS 7
Installieren Sie pip unter CentOS7. Auch iPython.
Erstellen Sie eine Python-Umgebung in Centos
Installieren Sie VirtualBox unter CentOS 7 unter VirtualBox (Mac + Vagrant)
Installieren Sie Python unter CentOS mit Pyenv
So installieren Sie Maven unter CentOS
Erstellen Sie eine Python3-Umgebung unter CentOS7
Studienhinweis 9_Installieren Sie Jenkins unter CentOS7
Installieren Sie Python unter CentOS mit pyenv