|
|
- # Copyright 2017 The TensorFlow Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ==============================================================================
-
- """Functions for importing/exporting Object Detection categories."""
- import csv
-
- import tensorflow as tf
-
-
- def load_categories_from_csv_file(csv_path):
- """Loads categories from a csv file.
-
- The CSV file should have one comma delimited numeric category id and string
- category name pair per line. For example:
-
- 0,"cat"
- 1,"dog"
- 2,"bird"
- ...
-
- Args:
- csv_path: Path to the csv file to be parsed into categories.
- Returns:
- categories: A list of dictionaries representing all possible categories.
- The categories will contain an integer 'id' field and a string
- 'name' field.
- Raises:
- ValueError: If the csv file is incorrectly formatted.
- """
- categories = []
-
- with tf.gfile.Open(csv_path, 'r') as csvfile:
- reader = csv.reader(csvfile, delimiter=',', quotechar='"')
- for row in reader:
- if not row:
- continue
-
- if len(row) != 2:
- raise ValueError('Expected 2 fields per row in csv: %s' % ','.join(row))
-
- category_id = int(row[0])
- category_name = row[1]
- categories.append({'id': category_id, 'name': category_name})
-
- return categories
-
-
- def save_categories_to_csv_file(categories, csv_path):
- """Saves categories to a csv file.
-
- Args:
- categories: A list of dictionaries representing categories to save to file.
- Each category must contain an 'id' and 'name' field.
- csv_path: Path to the csv file to be parsed into categories.
- """
- categories.sort(key=lambda x: x['id'])
- with tf.gfile.Open(csv_path, 'w') as csvfile:
- writer = csv.writer(csvfile, delimiter=',', quotechar='"')
- for category in categories:
- writer.writerow([category['id'], category['name']])
|