-
Notifications
You must be signed in to change notification settings - Fork 9
/
extract_indoor.py
55 lines (46 loc) · 1.4 KB
/
extract_indoor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
Create a txt file with indoor pair of listing_id-photo_id
"""
from pathlib import Path
import csv
import base64
from multiprocessing import Pool
import sys
from glob import glob
from typing import List, Optional, Iterator, Dict, Union, Tuple, Any, Iterable
import pickle
import lmdb
import pickle
from tqdm.auto import tqdm
import argtyped
import numpy as np
from helpers import save_txt, get_key
csv.field_size_limit(sys.maxsize)
class Arguments(argtyped.Arguments):
output: str
detection: Path = Path("places365")
def load_outdoor(detection: Path) -> List[Tuple[int, int, bool]]:
is_indoor = []
for path in Path(detection).glob("*.tsv"):
with open(path) as fid:
reader = csv.DictReader(
fid,
delimiter="\t",
fieldnames=["listing_id", "photo_id", "cat", "attr", "outdoor"],
)
for row in reader:
outdoor = eval(row["outdoor"])[1]
is_indoor.append(
(
int(row["listing_id"]),
int(row["photo_id"]),
bool(outdoor),
)
)
return is_indoor
if __name__ == "__main__":
args = Arguments()
print(args.to_string())
is_indoor = load_outdoor(args.detection)
keys = [get_key(i[0], i[1]) for i in is_indoor if i[2]]
save_txt(keys, args.output)