Random

Quartet

Hobby became dream.

People who cry while eating always survive.

https://github.com/aisingapore/PeekingDuck Problem: peeking duck is a opensource modular framework, built for Computer Vision inference. A need for training custom computer vision models with custom datasets. Task: To create a configurable training pipeline for Pytorch and Tensorflow framework for custom datasets for various tasks like classification and object detection.

Actions: We used the C4 diagram to blueprint the architecture and selected Hydra as the best configuration framework. The training pipeline was built using the SOLID principles for sustainable development.

Results: A highly configurable training pipeline for both Tensorflow and pytorch.

Peeking Duck is an open-source modular framework built for Computer Vision inference. The team created a configurable training pipeline for Pytorch and Tensorflow frameworks for custom datasets for various tasks like classification and object detection. They used the C4 diagram to blueprint the architecture and selected Hydra as the best configuration framework. The training pipeline was built using the SOLID principles for sustainable development. The result is a highly configurable training pipeline for both Tensorflow and Pytorch.

SOLID is an acronym for five design principles intended to make software designs more understandable, flexible and maintainable. The principles are Single Responsibility Principle (SRP), Open-Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP), and Dependency Inversion Principle (DIP).123

SRP: A class should have only one reason to change. OCP: Software entities should be open for extension but closed for modification. LSP: Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. ISP: A client should never be forced to implement an interface that it doesn’t use or clients shouldn’t be forced to depend on methods they do not use. DIP: High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions.