Skip to content

Commit 451d738

Browse files
Bordawaleedka
authored andcommitted
refactor structure
* create package mrcnn * move notebooks to samples
1 parent 7920f6f commit 451d738

19 files changed

+73
-63
lines changed

README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,27 @@ The goal is to improve OpenStreetMap by adding high quality baseball, soccer, te
2626
[![Mask RCNN on 4K Video](assets/4k_video.gif)](https://www.youtube.com/watch?v=OOT3UIXZztE)
2727

2828
# Getting Started
29-
* [demo.ipynb](/demo.ipynb) Is the easiest way to start. It shows an example of using a model pre-trained on MS COCO to segment objects in your own images.
29+
* [demo.ipynb](samples/demo.ipynb) Is the easiest way to start. It shows an example of using a model pre-trained on MS COCO to segment objects in your own images.
3030
It includes code to run object detection and instance segmentation on arbitrary images.
3131

32-
* [train_shapes.ipynb](train_shapes.ipynb) shows how to train Mask R-CNN on your own dataset. This notebook introduces a toy dataset (Shapes) to demonstrate training on a new dataset.
32+
* [train_shapes.ipynb](samples/train_shapes.ipynb) shows how to train Mask R-CNN on your own dataset. This notebook introduces a toy dataset (Shapes) to demonstrate training on a new dataset.
3333

34-
* ([model.py](model.py), [utils.py](utils.py), [config.py](config.py)): These files contain the main Mask RCNN implementation.
34+
* ([model.py](mrcnn/model.py), [utils.py](mrcnn/utils.py), [config.py](mrcnn/config.py)): These files contain the main Mask RCNN implementation.
3535

3636

37-
* [inspect_data.ipynb](/inspect_data.ipynb). This notebook visualizes the different pre-processing steps
37+
* [inspect_data.ipynb](samples/inspect_data.ipynb). This notebook visualizes the different pre-processing steps
3838
to prepare the training data.
3939

40-
* [inspect_model.ipynb](/inspect_model.ipynb) This notebook goes in depth into the steps performed to detect and segment objects. It provides visualizations of every step of the pipeline.
40+
* [inspect_model.ipynb](samples/inspect_model.ipynb) This notebook goes in depth into the steps performed to detect and segment objects. It provides visualizations of every step of the pipeline.
4141

42-
* [inspect_weights.ipynb](/inspect_weights.ipynb)
42+
* [inspect_weights.ipynb](samples/inspect_weights.ipynb)
4343
This notebooks inspects the weights of a trained model and looks for anomalies and odd patterns.
4444

4545

4646
# Step by Step Detection
4747
To help with debugging and understanding the model, there are 3 notebooks
48-
([inspect_data.ipynb](inspect_data.ipynb), [inspect_model.ipynb](inspect_model.ipynb),
49-
[inspect_weights.ipynb](inspect_weights.ipynb)) that provide a lot of visualizations and allow running the model step by step to inspect the output at each point. Here are a few examples:
48+
([inspect_data.ipynb](samples/inspect_data.ipynb), [inspect_model.ipynb](samples/inspect_model.ipynb),
49+
[inspect_weights.ipynb](samples/inspect_weights.ipynb)) that provide a lot of visualizations and allow running the model step by step to inspect the output at each point. Here are a few examples:
5050

5151

5252

coco.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@
4646
import urllib.request
4747
import shutil
4848

49-
from config import Config
50-
import utils
51-
import model as modellib
49+
from mrcnn.config import Config
50+
from mrcnn import model as modellib, utils
5251

5352
# Root directory of the project
5453
ROOT_DIR = os.getcwd()

mrcnn/__init__.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
import logging
3+
4+
import matplotlib
5+
import numpy as np
6+
7+
# in case you are running on machine without display, e.g. server
8+
if os.environ.get('DISPLAY', '') == '' \
9+
and matplotlib.rcParams['backend'] != 'agg':
10+
logging.warning('No display found. Using non-interactive Agg backend')
11+
# https://matplotlib.org/faq/usage_faq.html
12+
matplotlib.use('Agg')
13+
14+
# parse the numpy versions
15+
np_version = [int(i) for i in np.version.full_version.split('.')]
16+
# comparing strings does not work for version lower 1.10
17+
if np_version >= [1, 14]:
18+
np.set_printoptions(legacy='1.13')

config.py mrcnn/config.py

File renamed without changes.

model.py mrcnn/model.py

+5-11
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,8 @@
88
"""
99

1010
import os
11-
import sys
12-
import glob
1311
import random
14-
import math
1512
import datetime
16-
import itertools
17-
import json
1813
import re
1914
import logging
2015
from collections import OrderedDict
@@ -25,11 +20,10 @@
2520
import keras
2621
import keras.backend as K
2722
import keras.layers as KL
28-
import keras.initializers as KI
2923
import keras.engine as KE
3024
import keras.models as KM
3125

32-
import utils
26+
from mrcnn import utils
3327

3428
# Requires TensorFlow 1.3+ and Keras 2.0.8+.
3529
from distutils.version import LooseVersion
@@ -1986,7 +1980,7 @@ def build(self, mode, config):
19861980
mrcnn_class_logits, mrcnn_class, mrcnn_bbox, mrcnn_mask,
19871981
rpn_rois, output_rois,
19881982
rpn_class_loss, rpn_bbox_loss, class_loss, bbox_loss, mask_loss]
1989-
model = KM.Model(inputs, outputs, name='mask_rcnn')
1983+
model = KM.Model(inputs, outputs, name='mrcnn')
19901984
else:
19911985
# Network Heads
19921986
# Proposal classifier and BBox regressor heads
@@ -2012,11 +2006,11 @@ def build(self, mode, config):
20122006
model = KM.Model([input_image, input_image_meta],
20132007
[detections, mrcnn_class, mrcnn_bbox,
20142008
mrcnn_mask, rpn_rois, rpn_class, rpn_bbox],
2015-
name='mask_rcnn')
2009+
name='mrcnn')
20162010

20172011
# Add multi-GPU support.
20182012
if config.GPU_COUNT > 1:
2019-
from parallel_model import ParallelModel
2013+
from mrcnn.parallel_model import ParallelModel
20202014
model = ParallelModel(model, config.GPU_COUNT)
20212015

20222016
return model
@@ -2039,7 +2033,7 @@ def find_last(self):
20392033
dir_name = os.path.join(self.model_dir, dir_names[-1])
20402034
# Find the last checkpoint
20412035
checkpoints = next(os.walk(dir_name))[2]
2042-
checkpoints = filter(lambda f: f.startswith("mask_rcnn"), checkpoints)
2036+
checkpoints = filter(lambda f: f.startswith("mrcnn"), checkpoints)
20432037
checkpoints = sorted(checkpoints)
20442038
if not checkpoints:
20452039
return dir_name, None
File renamed without changes.

shapes.py mrcnn/shapes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import numpy as np
1515
import cv2
1616

17-
from config import Config
18-
import utils
17+
from mrcnn.config import Config
18+
from mrcnn import utils
1919

2020

2121
class ShapesConfig(Config):

utils.py mrcnn/utils.py

File renamed without changes.

visualize.py mrcnn/visualize.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from matplotlib.patches import Polygon
1919
import IPython.display
2020

21-
import utils
21+
from mrcnn import utils
2222

2323

2424
############################################################

samples/__init__.py

Whitespace-only changes.

samples/balloon/__init__.py

Whitespace-only changes.

samples/balloon/balloon.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,8 @@
4242

4343
# Import Mask RCNN
4444
sys.path.append(ROOT_DIR)
45-
from config import Config
46-
import utils
47-
import model as modellib
45+
from mrcnn.config import Config
46+
from mrcnn import model as modellib, utils
4847

4948
# Path to trained weights file
5049
COCO_WEIGHTS_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")

samples/balloon/inspect_balloon_data.ipynb

+6-6
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@
4949
"\n",
5050
"# Import Mask RCNN\n",
5151
"sys.path.append(ROOT_DIR)\n",
52-
"import utils\n",
53-
"import visualize\n",
54-
"from visualize import display_images\n",
55-
"import model as modellib\n",
56-
"from model import log\n",
52+
"import mrcnn.utils\n",
53+
"import mrcnn.visualize\n",
54+
"from mrcnn.visualize import display_images\n",
55+
"import mrcnn.model as modellib\n",
56+
"from mrcnn.model import log\n",
5757
"\n",
58-
"import balloon\n",
58+
"from samples.balloon import balloon\n",
5959
"\n",
6060
"%matplotlib inline "
6161
]

samples/balloon/inspect_balloon_model.ipynb

+6-6
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@
4545
"\n",
4646
"# Import Mask RCNN\n",
4747
"sys.path.append(ROOT_DIR)\n",
48-
"import utils\n",
49-
"import visualize\n",
50-
"from visualize import display_images\n",
51-
"import model as modellib\n",
52-
"from model import log\n",
48+
"import mrcnn.utils\n",
49+
"import mrcnn.visualize\n",
50+
"from mrcnn.visualize import display_images\n",
51+
"import mrcnn.model as modellib\n",
52+
"from mrcnn.model import log\n",
5353
"\n",
54-
"import balloon\n",
54+
"from samples.balloon import balloon\n",
5555
"\n",
5656
"%matplotlib inline \n",
5757
"\n",

demo.ipynb samples/demo.ipynb

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
"import matplotlib.pyplot as plt\n",
3434
"\n",
3535
"import coco\n",
36-
"import utils\n",
37-
"import model as modellib\n",
38-
"import visualize\n",
36+
"import mrcnn.utils\n",
37+
"import mrcnn.model as modellib\n",
38+
"import mrcnn.visualize\n",
3939
"\n",
4040
"%matplotlib inline \n",
4141
"\n",

inspect_data.ipynb samples/inspect_data.ipynb

+5-5
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@
3939
"import matplotlib.lines as lines\n",
4040
"from matplotlib.patches import Polygon\n",
4141
"\n",
42-
"import utils\n",
43-
"import visualize\n",
44-
"from visualize import display_images\n",
45-
"import model as modellib\n",
46-
"from model import log\n",
42+
"import mrcnn.utils\n",
43+
"import mrcnn.visualize\n",
44+
"from mrcnn.visualize import display_images\n",
45+
"import mrcnn.model as modellib\n",
46+
"from mrcnn.model import log\n",
4747
"\n",
4848
"%matplotlib inline \n",
4949
"\n",

inspect_model.ipynb samples/inspect_model.ipynb

+5-5
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
"import matplotlib.pyplot as plt\n",
3636
"import matplotlib.patches as patches\n",
3737
"\n",
38-
"import utils\n",
39-
"import visualize\n",
40-
"from visualize import display_images\n",
41-
"import model as modellib\n",
42-
"from model import log\n",
38+
"import mrcnn.utils\n",
39+
"import mrcnn.visualize\n",
40+
"from mrcnn.visualize import display_images\n",
41+
"import mrcnn.model as modellib\n",
42+
"from mrcnn.model import log\n",
4343
"\n",
4444
"%matplotlib inline \n",
4545
"\n",

inspect_weights.ipynb samples/inspect_weights.ipynb

+5-5
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@
3131
"import matplotlib.pyplot as plt\n",
3232
"import keras\n",
3333
"\n",
34-
"import utils\n",
35-
"import model as modellib\n",
36-
"import visualize\n",
37-
"from model import log\n",
34+
"import mrcnn.utils\n",
35+
"import mrcnn.model as modellib\n",
36+
"import mrcnn.visualize\n",
37+
"from mrcnn.model import log\n",
3838
"\n",
3939
"%matplotlib inline \n",
4040
"\n",
@@ -179,7 +179,7 @@
179179
]
180180
},
181181
"metadata": {},
182-
"output_type": "display_data"
182+
"output_type": "execute_result"
183183
}
184184
],
185185
"source": [

train_shapes.ipynb samples/train_shapes.ipynb

+5-5
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
"import matplotlib\n",
3838
"import matplotlib.pyplot as plt\n",
3939
"\n",
40-
"from config import Config\n",
41-
"import utils\n",
42-
"import model as modellib\n",
43-
"import visualize\n",
44-
"from model import log\n",
40+
"from mrcnn.config import Config\n",
41+
"import mrcnn.utils\n",
42+
"import mrcnn.model as modellib\n",
43+
"import mrcnn.visualize\n",
44+
"from mrcnn.model import log\n",
4545
"\n",
4646
"%matplotlib inline \n",
4747
"\n",

0 commit comments

Comments
 (0)