f.write(s)
    

#%% Generate preview, sanity-check labels
    
from visualization import visualize_db
viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 5000
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = True
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
viz_options.classes_to_exclude = ['test','empty']
# viz_options.classes_to_include = ['jackalblackbacked','bustardkori']
html_output_file, image_db = visualize_db.process_images(db_path=json_filename,
                                                         output_dir=output_preview_folder,
                                                         image_base_dir=output_public_folder,
                                                         options=viz_options)
os.startfile(html_output_file)


#%% Scrap

if False:
    
    pass

    #%% Find annotations for a particular image

    fn = missing_images[1000]
    id = fn.replace('.JPG','')
    im = im_id_to_image[id]
#%% Preview labels

from visualization import visualize_db

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 100
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = False
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
viz_options.include_filename_links = True

# viz_options.classes_to_exclude = ['test']
html_output_file, _ = visualize_db.process_images(db_path=output_json,
                                                         output_dir=os.path.join(
                                                         base_folder,'preview'),
                                                         image_base_dir=os.path.join(base_folder,'images'),
                                                         options=viz_options)
os.startfile(html_output_file)


#%% ############ Take two, from pre-iWildCam .json files created from IDFG .csv files ############ 

#%% Imports and constants

import json
import os

base_folder = r'h:\idaho-camera-traps'
input_json_sl = os.path.join(base_folder,'iWildCam_IDFG.json')
input_json = os.path.join(base_folder,'iWildCam_IDFG_ml.json')
Esempio n. 3
0
options = sanity_check_json_db.SanityCheckOptions()
options.baseDir = imageBaseDir
options.bCheckImageSizes = False
options.bFindUnusedImages = False
sanity_check_json_db.sanity_check_json_db(outputFile, options)


#%% Preview a few images to make sure labels were passed along sensibly

db_path = outputFile
output_dir = os.path.join(baseDir,'label_preview')
image_base_dir = imageBaseDir
options = visualize_db.DbVizOptions()
options.num_to_visualize = 100
htmlOutputFile = visualize_db.process_images(db_path,output_dir,image_base_dir,options)
    

#%% One-time processing step: copy images to a flat directory for annotation

if False:
    
    #%%
    
    from shutil import copyfile
    os.makedirs(imageFlatDir,exist_ok=True)
    
    for sourcePath in tqdm.tqdm(imageFullPaths):
        fn = ntpath.basename(sourcePath)
        targetPath = os.path.join(imageFlatDir,fn)
        assert not os.path.isfile(targetPath)
sortedCategories, data = sanity_check_json_db.sanity_check_json_db(output_json_file,options)


#%% Preview labels

from visualization import visualize_db
from data_management.databases import sanity_check_json_db

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 1000
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = True
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
html_output_file,image_db = visualize_db.process_images(db_path=output_json_file,
                                                        output_dir=os.path.join(output_base,'preview'),
                                                        image_base_dir=image_directory,
                                                        options=viz_options)
os.startfile(html_output_file)


#%% Scrap

if False:

    pass
    
    #%% Find unique photo types
    
    annotations = image_db['annotations']
    photo_types = set()
    for ann in tqdm(annotations):
Esempio n. 5
0
print('Finished writing .json file with {} images, {} annotations, and {} categories'.format(
        len(images),len(annotations),len(categories)))


#%% Validate output

fn = output_file
options = sanity_check_json_db.SanityCheckOptions()
options.baseDir = image_directory
options.bCheckImageSizes = False
options.bCheckImageExistence = True
options.bFindUnusedImages = True

sortedCategories, data = sanity_check_json_db.sanity_check_json_db(fn, options)


#%% Preview labels

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 1000
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = True
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
html_output_file, image_db = visualize_db.process_images(db_path=output_file,
                                                         output_dir='/home/gramener/previewB',
                                                         image_base_dir=image_directory,
                                                         options=viz_options)
os.startfile(html_output_file)
options.bCheckImageSizes = False
options.bCheckImageExistence = True
options.bFindUnusedImages = False

sortedCategories = sanity_check_json_db.sanity_check_json_db(
    indexedData.db, options)

#%% Label previews

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 500
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = True
viz_options.sort_by_filename = False
html_output_file, image_db = visualize_db.process_images(
    indexedData.db, os.path.join(output_base, 'preview'), image_base,
    viz_options)
os.startfile(html_output_file)

#%% Collect images to annotate

images_to_annotate = []

annotation_list = set(annotation_list)
n_humans = 0

for im in tqdm(indexedData.db['images']):

    class_names = indexedData.get_classes_for_image(im)
    b_human = False
    for cn in class_names:
Esempio n. 7
0
_, _, _ = integrity_check_json_db.integrity_check_json_db(
    output_json_filename, options)

#%% Preview labels

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 300
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = True
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
viz_options.include_filename_links = True

html_output_file, _ = visualize_db.process_images(db_path=output_json_filename,
                                                  output_dir=preview_base,
                                                  image_base_dir=image_base,
                                                  options=viz_options)
open_file(html_output_file)
# open_file(os.path.join(image_base,'2100703/1141a545-88d2-498b-a684-7431f7aeb324.jpg'))

#%%

if create_ordered_dataset:

    pass

    #%% Create ordered dataset

    # Because WI filenames are GUIDs, it's not practical to page through sequences in an
    # image viewer.  So we're going to create a copy of the data set where images are
    # ordered.
Esempio n. 8
0
data['categories'] = categoriesSet2
json.dump(data, open(outputJsonFilenameSet2, 'w'), indent=4)
print('Finished writing json to {}'.format(outputJsonFilenameSet2))

#%% Sanity-check final set 1 .json file

from data_management.databases import sanity_check_json_db
options = sanity_check_json_db.SanityCheckOptions()
sortedCategories, data = sanity_check_json_db.sanity_check_json_db(
    outputJsonFilenameSet1, options)
sortedCategories

# python sanity_check_json_db.py --bCheckImageSizes --baseDir "E:\wildlife_data\missouri_camera_traps" "E:\wildlife_data\missouri_camera_traps\missouri_camera_traps_set1.json"

#%% Generate previews

from visualization import visualize_db

output_dir = os.path.join(baseDir, 'preview')

options = visualize_db.DbVizOptions()
options.num_to_visualize = 1000
options.sort_by_filename = False
options.classes_to_exclude = None

htmlOutputFile, _ = visualize_db.process_images(outputJsonFilenameSet1,
                                                output_dir, baseDir, options)
os.startfile(htmlOutputFile)

# Generate previewse:\wildlife_data\missouri_camera_traps\missouri_camera_traps_set1.json" "e:\wildlife_data\missouri_camera_traps\preview" "e:\wildlife_data\missouri_camera_traps" --num_to_visualize 1000
Esempio n. 9
0
# im = images[0]
if n_threads == 1:
    for im in tqdm(data['images']):
        copy_image(im)
else:
    pool = ThreadPool(n_threads)
    with tqdm(total=len(data['images'])) as pbar:
        for i, _ in enumerate(pool.imap_unordered(copy_image, data['images'])):
            pbar.update()

#%% Preview labels

from visualization import visualize_db

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 100
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = False
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
viz_options.include_filename_links = True

# viz_options.classes_to_exclude = ['test']
html_output_file, _ = visualize_db.process_images(
    db_path=output_json_filename,
    output_dir=os.path.join(output_base, 'preview'),
    image_base_dir=os.path.join(output_image_base, 'public'),
    options=viz_options)
os.startfile(html_output_file)
Esempio n. 10
0
print(
    'Finished writing .json file with {} images, {} annotations, and {} categories'
    .format(len(images), len(annotations), len(categories)))

#%% Sanity-check the database's integrity

json_data = json.load(open(output_file))
options = sanity_check_json_db.SanityCheckOptions()
sortedCategories, data = sanity_check_json_db.sanity_check_json_db(
    json_data, options)

#%% Render a bunch of images to make sure the labels got carried along correctly

output_dir = preview_base

options = visualize_db.DbVizOptions()
options.num_to_visualize = 100
options.sort_by_filename = False
# options.classes_to_exclude = ['unlabeled']
options.classes_to_exclude = None

htmlOutputFile, _ = visualize_db.process_images(json_data, output_dir,
                                                input_base, options)
os.startfile(htmlOutputFile)

#%% Write out a list of files to annotate

_, file_list = cct_json_to_filename_json.convertJsonToStringList(
    output_file, prepend="20190715/")
os.startfile(file_list)
options.bCheckImageExistence = False
options.bFindUnusedImages = False
sorted_categories, data, errors = sanity_check_json_db.sanity_check_json_db(
    fn, options)

#%% Preview animal labels

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 3000
viz_options.trim_to_images_with_bboxes = False
viz_options.add_search_links = False
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
html_output_file, image_db = visualize_db.process_images(
    db_path=output_json_file,
    output_dir=os.path.join(output_dir_base, 'preview_animals'),
    image_base_dir=image_base_folder,
    options=viz_options)
os.startfile(html_output_file)

#%% Preview empty labels

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 3000
viz_options.trim_to_images_with_bboxes = False
# viz_options.classes_to_exclude = ['empty','human']
viz_options.classes_to_include = ['empty']
viz_options.add_search_links = False
viz_options.sort_by_filename = False
viz_options.parallelize_rendering = True
html_output_file, image_db = visualize_db.process_images(
print('{} missing images in {} bounding boxes ({} found)'.format(
    len(missing_images), len(bbox_data['annotations']), len(found_images)))

#%% Sanity-check a few files to make sure bounding boxes are still sensible

# import sys; sys.path.append(r'C:\git\CameraTraps')
from visualization import visualize_db
output_base = r'E:\snapshot_temp'

viz_options = visualize_db.DbVizOptions()
viz_options.num_to_visualize = 500
viz_options.trim_to_images_with_bboxes = True
viz_options.add_search_links = True
viz_options.sort_by_filename = False
html_output_file, bbox_db = visualize_db.process_images(
    bbox_json_fn, os.path.join(output_base, 'preview2'), image_base,
    viz_options)
os.startfile(html_output_file)

#%% Check categories

json_fn_all = r"E:\snapshot_out\SnapshotSeregeti_v2.0.json"

with open(json_fn_all, 'r') as f:
    data_all = json.load(f)

data_by_season = []
data_10 = None
i_season = 9
fn = r'e:\snapshot_out\SnapshotSerengetiS{:0>2d}.json'.format(i_season + 1)
with open(fn, 'r') as f:
Esempio n. 13
0
#%% Write output

json_data = {}
json_data['images'] = images
json_data['annotations'] = annotations
json_data['categories'] = categories
json_data['info'] = info
json.dump(json_data, open(output_file, 'w'), indent=1)

print(
    'Finished writing .json file with {} images, {} annotations, and {} categories'
    .format(len(images), len(annotations), len(categories)))

#%% Sanity-check the database's integrity

options = sanity_check_json_db.SanityCheckOptions()
sortedCategories, data = sanity_check_json_db.sanity_check_json_db(
    output_file, options)

#%% Render a bunch of images to make sure the labels got carried along correctly

options = visualize_db.DbVizOptions()
options.num_to_visualize = 1000
options.parallelize_rendering = True
options.sort_by_filename = False
options.classes_to_exclude = ['unlabeled', 'empty', 'ambiguous']

html_output_file, data = visualize_db.process_images(output_file, preview_base,
                                                     file_base, options)
os.startfile(html_output_file)