Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Model] Load SSD model #10

Open
hngskj opened this issue Oct 2, 2019 · 3 comments
Open

[Model] Load SSD model #10

hngskj opened this issue Oct 2, 2019 · 3 comments
Assignees
Labels

Comments

@hngskj
Copy link
Collaborator

hngskj commented Oct 2, 2019

Load SSD model

To-do list

  1. Run the pre-trained model with sample images
  2. Summarize the project repository
  3. Make a list of provided functions
@hngskj
Copy link
Collaborator Author

hngskj commented Oct 2, 2019

1. Run the pre-trained model with sample images

The trained model weights: PASCAL VOC models (07++12+COCO: SSD300)
Reference: ssd300_inference.ipynb

Notes on load functions

There are two ways to load the trained model: load_model() and load_weights().
As mentioned here, load_model() assumes that the model has whole information such as the architecture, weights, and optimizer state. To generate the whole model, the model should be saved with save() function.
On the other hand, load_weights() only needs the weights of the model excluding the architecture and optimizer state. It means that those two parts must be written in the code before load_weights() function.
It seems like ssd_keras only supports the trained model with weights. So, as I understand, load_weights() is the only option for now.

Below is the output image from this model :)
image

@MijeongJeon
Copy link
Member

@hngskj
That's a really good summary 👏🏻 I can follow all of your work well.

As you mentioned, if ssd_keras supports only weights, should we train the model with supported weights and save() the final model?

ps. cats are so cuuuute!! 🐱

@hngskj
Copy link
Collaborator Author

hngskj commented Oct 4, 2019

@MijeongJeon
At your suggestion, I saved the whole model containing weights as well as the architecture and optimizer state. Then I loaded that whole model using load_model() function and tested it out.

Interestingly, the outputs of the two models are slightly different. The classes and the confidence levels are the same, but as you can see below, the coordinate of bounding boxes are not exactly the same. Quite not sure why this issue happens, let me dive into this later on. However, the image looks almost the same, I guess?

😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭

load_weights(‘only_weights.h5’)
Predicted boxes:

class conf xmin ymin xmax ymax
8 0.94 54.61 135.11 133.66 303.04
8 0.9 249.14 104. 302.91 248.93
8 0.88 168.5 208.52 241.3 307.45
8 0.86 260.67 213.06 310.04 316.81
8 0.73 205.83 167.62 266.63 297.22
8 0.67 2.99 141.31 68.14 282.75
8 0.57 21.05 -1.43 58.17 97.75
8 0.56 98.68 51.69 148.25 155.53
8 0.53 236.5 1.19 302.14 93.76
8 0.52 28.37 56.95 78.25 162.82

load_model(‘whole_model.h5’)
Predicted boxes:

class conf xmin ymin xmax ymax
8 0.94 49.61 122.11 128.66 290.04
8 0.9 232.14 93. 285.91 237.94
8 0.88 165.86 205.05 238.67 303.97
8 0.86 256.99 209.59 306.36 313.34
8 0.73 190.83 152.62 251.63 282.22
8 0.67 -0.01 128.31 65.14 269.75
8 0.57 20.52 -2.16 57.65 97.02
8 0.56 97.1 50.32 146.67 154.16
8 0.53 233.03 0.66 298.67 93.23
8 0.52 27.64 55.58 77.51 161.45

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants