flaport / inverse_design

https://flaport.github.io/inverse_design
Apache License 2.0
16 stars 5 forks source link

Rust Initial Touches #17

Closed jan-david-fischbach closed 1 year ago

jan-david-fischbach commented 1 year ago

To handle the border between design region and waveguide nicely, it would be great if we could pass initial touches to the generator, to initialize the design with. This is already possible for the local_generator written in python. It would be great to have a similar possibility with the rust based generator.

flaport commented 1 year ago

Wouldn't that be easier to implement by artificially adding fixed maximum values in the transformed latent space?

lucasgrjn commented 1 year ago

To handle the border between design region and waveguide nicely, it would be great if we could pass initial touches to the generator, to initialize the design with. This is already possible for the local_generator written in python. It would be great to have a similar possibility with the rust based generator.

Actually, it will rather be initial pixels. Touches would be a little too hard I think.

Wouldn't that be easier to implement by artificially adding fixed maximum values in the transformed latent space?

Good idea! We should take a try when the obtained solutions are close enough from those on the paper.

jan-david-fischbach commented 1 year ago

I have actually given it a try! I think it works quite well also... just setting one line of pixels at the border of the transformed latent space to a high magnitude (e.g. 100) of the desired material. At interfaces one needs to be a bit carefull how the generator decides which touch to put. To stabilize it I have blurred the border values with a gaussian, which seems to do a quite decent job. (One could also erode the values away from the interface)

jan-david-fischbach commented 1 year ago

Ok, I take that back: It works well to eliminate drc violations. But at the same time it disturbs the optimization

flaport commented 1 year ago

I'm not a 100% sure how you implemented it, but you have to make sure that setting fixed pixels happens within the generator function, i.e. the fixed pixels should be ignored during optimization when using the straight thru estimator.

jan-david-fischbach commented 1 year ago

Jep, I tried that, the optimization went wandering off into nirvana. My optimization loop has other problems still, so probably those should be fixed first :)

jan-david-fischbach commented 1 year ago

Will close this issue, as we do not need initial touches to condition the border, as it can also be done in the transformed latent space representation