-
-
Save steve21124/e77386e40c123f835dcc07850348324c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import the necessary packages | |
from PIL import Image | |
import turicreate as tc | |
import progressbar | |
import glob | |
import os | |
def pil_to_tc(pilImage): | |
# grab the PIL image dimensions, convert the data into a byte | |
# array, and then build the turicreate image | |
(W, H) = pilImage.size[:2] | |
data = bytearray([b for a in pilImage.getdata() for b in a]) | |
image = tc.Image(_image_data=data, _width=W, _height=H, | |
_channels=3, _format_enum=2, _image_data_size=len(data)) | |
# return the turicreate image | |
return image | |
def load_image(filename): | |
pilImage = Image.open(os.path.sep.join([INPUT_PATH,filename])) | |
image = pil_to_tc(pilImage) | |
return image | |
# initialize the input datasets | |
INPUT_PATH = "../vehicles" | |
# Load all the CSV files to a single SFrame | |
data = tc.SFrame.read_csv(os.path.sep.join([INPUT_PATH, "*.csv"])) | |
# Create the desired annotations in the format turicreate expects them - object's | |
# center coordinates plus height and width | |
data['x'] = (data['startX'] + data['endX']) / 2 | |
data['y'] = (data['startY'] + data['endY']) / 2 | |
data['width'] = data['endX'] - data['startX'] | |
data['height'] = data['endY'] - data['startY'] | |
# Pack the annotations into a dictionary | |
data = data.pack_columns(['x', 'y', 'width', 'height'], dtype=dict, new_column_name="coordinates") | |
data['type'] = 'rectangle' | |
data = data.pack_columns(['coordinates', 'type', 'label'], dtype=dict, new_column_name='annotations') | |
# Group all the annotation by the image path | |
final_data = data.groupby('imagePath', {'annotations': tc.aggregate.CONCAT('annotations')}) | |
# Load the images themselves from the path | |
final_data['image'] = final_data['imagePath'].apply(load_image) | |
final_data = final_data.remove_column('imagePath') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment