Skip to content

Commit 81841b2

Browse files
committed
0.0.2.1 debug
1 parent ceef252 commit 81841b2

8 files changed

+41
-34
lines changed

commandline.txt

Whitespace-only changes.

config.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
DATASET_ROOT_PATH = "/home/akio/PycharmProjects/rat-detect/data"
2-
2+
TRAIN_IMAGES_PATH="/home/akio/PycharmProjects/rat-detect/data/train_images.txt"
3+
TRAIN_XMLS_PATH = "/home/akio/PycharmProjects/rat-detect/data/train_xmls.txt"
4+
VAL_IMAGES_PATH = "/home/akio/PycharmProjects/rat-detect/data/val_images.txt"
5+
VAL_XMLS_PATH = "/home/akio/PycharmProjects/rat-detect/data/val_xmls.txt"

models/ssd/datasets/generate_data_path.py

+1-8
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,10 @@ def main(root):
1111
sys.exit(1)
1212

1313
images = glob.glob(f"{root}/*/*.jpg")
14-
xmls = glob.glob(f"{root}/*/*.xml")
15-
16-
def map_f(x):
17-
return root + x[1:]
18-
19-
map(map_f, images)
20-
map(map_f, xmls)
2114

15+
xmls = [image[:-3] + 'xml' for image in images]
2216
images = np.array(images)
2317
xmls = np.array(xmls)
24-
assert len(images) == len(xmls)
2518
total_size = len(images)
2619

2720
train_size = int(0.7 * total_size)

models/ssd/datasets/rat_dataset.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,29 @@
99

1010
class RATDataset(Dataset):
1111
def __init__(self,
12-
root,
1312
images_path,
1413
xmls_path,
15-
1614
transform=None,
1715
target_transform=None,
1816
is_test=False):
19-
self.root = root
2017
self.transform = transform
2118
self.target_transform = target_transform
2219

2320
self.images = RATDataset._read_images_path(images_path)
2421
self.xmls = RATDataset._read_xmls_path(xmls_path)
22+
assert len(self.images) == len(self.xmls)
2523
self.class_names = ('BACKGROUND', 'rat')
2624

2725
self.class_dict = {class_name: i for i, class_name in enumerate(self.class_names)}
26+
self.num = 0
2827

2928
def __getitem__(self, index):
29+
self.num += 1
30+
3031
image_path = self.images[index]
32+
3133
xml_path = self.xmls[index]
34+
print('image_path:', image_path,'||xml_path:',xml_path)
3235
boxes, labels = self._get_annotation(xml_path)
3336
image = self._read_image(image_path)
3437
if self.transform:
@@ -38,18 +41,18 @@ def __getitem__(self, index):
3841
return image, boxes, labels
3942

4043
def __len__(self):
41-
return len(self.ids)
44+
return len(self.images)
4245

4346
def get_image(self, index):
44-
image_id = self.ids[index]
45-
image = self._read_image(image_id)
47+
image_path = self.images[index]
48+
image = self._read_image(image_path)
4649
if self.transform:
4750
image, _ = self.transform(image)
4851
return image
4952

5053
def get_annotation(self, index):
51-
image_id = self.ids[index]
52-
return image_id, self._get_annotation(image_id)
54+
image_path = self.images[index]
55+
return image_path, self._get_annotation(image_path)
5356

5457
def _get_annotation(self, xml_path):
5558
objects = ET.parse(xml_path).findall("object")
@@ -82,12 +85,12 @@ def _read_images_path(images_path):
8285
with open(images_path) as f:
8386
for line in f:
8487
images.append(line.rstrip())
85-
return images[:-1]
88+
return images
8689

8790
@staticmethod
8891
def _read_xmls_path(xmls_path):
8992
xmls = []
9093
with open(xmls_path) as f:
9194
for line in f:
9295
xmls.append(line.rstrip())
93-
return xmls[:-1]
96+
return xmls

models/transforms/transforms.py

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111

1212
def intersect(box_a, box_b):
13+
# print('box_a',box_a,'||box_b',box_b)
1314
max_xy = np.minimum(box_a[:, 2:], box_b[2:])
1415
min_xy = np.maximum(box_a[:, :2], box_b[:2])
1516
inter = np.clip((max_xy - min_xy), a_min=0, a_max=np.inf)
13.2 MB
Binary file not shown.
36.2 MB
Binary file not shown.

train.py

+22-15
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@
1717
from models.ssd.config import mobilenetv1_ssd_config
1818
from models.ssd.data_preprocessing import TrainAugmentation, TestTransform
1919

20+
import config
21+
2022
parser = argparse.ArgumentParser(
2123
description='Single Shot MultiBox Detector Training With Pytorch')
2224

23-
parser.add_argument('--datasets', nargs='+', help='Dataset directory path')
24-
parser.add_argument('--validation_dataset', help='Dataset directory path')
25+
parser.add_argument('--train_images_path', default=config.TRAIN_IMAGES_PATH, help='train_images_path')
26+
parser.add_argument('--train_xmls_path', default=config.TRAIN_XMLS_PATH, help='train_xmls_path')
27+
parser.add_argument('--val_images_path', default=config.VAL_IMAGES_PATH, help='val_images_path')
28+
parser.add_argument('--val_xmls_path', default=config.VAL_XMLS_PATH, help='val_xmls_path')
2529

26-
parser.add_argument('--net', default='mb1-ssd',
30+
parser.add_argument('--net', default='mb1-ssd-lite',
2731
help='The network architecture')
2832
parser.add_argument('--freeze_base_net', action='store_true',
2933
help='Freeze base net layers.')
@@ -64,11 +68,11 @@
6468
help='T_max value for Cosine Annealing Scheduler.')
6569

6670
# Train params
67-
parser.add_argument('--batch_size', default=32, type=int,
71+
parser.add_argument('--batch_size', default=8, type=int,
6872
help='Batch size for training')
6973
parser.add_argument('--num_epochs', default=120, type=int,
7074
help='the number epochs')
71-
parser.add_argument('--num_workers', default=4, type=int,
75+
parser.add_argument('--num_workers', default=1, type=int,
7276
help='Number of workers used in dataloading')
7377
parser.add_argument('--validation_epochs', default=5, type=int,
7478
help='the number epochs')
@@ -96,6 +100,7 @@ def train(loader, net, criterion, optimizer, device, debug_steps=100, epoch=-1):
96100
running_regression_loss = 0.0
97101
running_classification_loss = 0.0
98102
for i, data in enumerate(loader):
103+
print(f"i:{i}")
99104
images, boxes, labels = data
100105
images = images.to(device)
101106
boxes = boxes.to(device)
@@ -168,20 +173,23 @@ def test(loader, net, criterion, device):
168173
test_transform = TestTransform(config.image_size, config.image_mean, config.image_std)
169174

170175
logging.info("Prepare training datasets.")
171-
datasets = []
172-
173-
for dataset_path in args.datasets:
174-
dataset = RATDataset(dataset_path, transform=train_transform, target_transform=target_transform)
175-
num_classes = len(dataset.class_names)
176-
datasets.append(dataset)
177-
train_datasets = ConcatDataset(datasets)
176+
# datasets = []
177+
178+
# for dataset_path in args.datasets:
179+
# dataset = RATDataset(dataset_path, transform=train_transform, target_transform=target_transform)
180+
# num_classes = len(dataset.class_names)
181+
# datasets.append(dataset)
182+
# train_datasets = ConcatDataset(datasets)
183+
train_datasets = RATDataset(args.train_images_path, args.train_xmls_path, transform=train_transform,
184+
target_transform=target_transform)
185+
num_classes = len(train_datasets.class_names)
178186
logging.info(f"Train dataset size :{len(train_datasets)}")
179187
logging.info(train_datasets)
180188
train_loader = DataLoader(train_datasets, args.batch_size,
181-
num_workers=args.num_workers, shuffle=True)
189+
num_workers=args.num_workers, shuffle=True)
182190

183191
logging.info("Prepare Validation datasets.")
184-
val_dataset = RATDataset(args.validation_dataset, transform=test_transform,
192+
val_dataset = RATDataset(args.val_images_path, args.val_xmls_path, transform=test_transform,
185193
target_transform=target_transform, is_test=True)
186194
logging.info(val_dataset)
187195
val_loader = DataLoader(val_dataset, args.batch_size,
@@ -279,4 +287,3 @@ def test(loader, net, criterion, device):
279287
model_path = os.path.join(args.checkpoint_folder, f"{args.net}-Epoch-{epoch}-Loss-{val_loss}.pth")
280288
net.save(model_path)
281289
logging.info(f"Saved model {model_path}")
282-

0 commit comments

Comments
 (0)