Skip to content

EthanRCT/Projects

Repository files navigation

Ethan Crawford Projects

This is a repository containing projects and labs from my undergraduate studies at Brigham Young University as well as any personal projects I have made.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. All Projects
  2. Contact
  3. Acknowledgments

Projects

Each folder contains a Jypiter notebook containing the code and results for each project. Here is a list of the projects and their descriptions:


  • Objective: Wavelets are used to sparsely represent information. This makes them useful in a variety of applications. I explore both the one and two-dimensional discrete wavelet transforms using various types of wavelets. I then use a Python package called PyWavelets for further wavelet analysis including image cleaning and image compression.
  • Objective: Facial recognition algorithms attempt to match a person’s portrait to a database of many portraits. Facial recognition is becoming increasingly important in security, law enforcement, artificial intelligence, and other areas. Though humans can easily match pictures to people, computers are beginning to surpass humans at facial recognition. In this project, I implement a basic facial recognition system that relies on eigenvectors and the SVD to efficiently determine the difference between faces.
  • Objective: A Markov chain is a collection of states with specified probabilities for transitioning from one state to another. They are characterized by the fact that the future behavior of the system depends only on its current state. In this project I learn to construct, analyze, and interact with Markov chains, then use a Markov-based approach to simulate natural language.
  • Objective: The analysis of periodic functions has many applications in pure and applied mathematics, especially in settings dealing with sound waves. The Fourier transform provides a way to analyze such periodic functions. In this lab, I work with digital audio signals in Python, implement the discrete Fourier transform, and use the Fourier transform to detect the frequencies present in a given sound wave.

  • Objective: The Fourier transform reveals information in the frequency domain about signals and images that might not be apparent in the usual time (sound) or spatial (image) domain. In this project, I use the discrete Fourier transform to efficiently convolve sound signals and filter out some types of unwanted noise from both sounds and images.

Download this project to listen to the audio files
  • Objective: Most mathematical optimization problems involve estimating the minimizer(s) of a scalar-valued function. Many algorithms for optimizing functions with a high-dimensional domain depend on routines for optimizing functions of a single variable. There are many techniques for optimization in one dimension, each with varying degrees of precision and speed. In this project, I implement the golden section search method, Newton’s method, and the secant method, then apply them to the backtracking problem.
  • Objective: Create a pytorch radiologist using a U-Net DNN. In the notebook, I include a method of calculating accuracy and images that show the dense prediction produced by the network on an image the network has never seen before.
  • Objective: The condition number of a function measures how sensitive that function is to changes in the input. On the other hand, the stability of an algorithm measures how accurately that algorithm computes the value of a function from exact input. Both of these concepts are important for answering the crucial question, “is my computer telling the truth?” In this lab I examine the conditioning of common linear algebra problems, including computing polynomial roots and matrix eigenvalues. I also present an example to demonstrate how two different algorithms for the same problem may not have the same level of stability.
  • Objective: Use the MyFitnessPal API to create a weekly shopping list. If a user records their meals for the coming week into MyFitnessPal, the program will total the ammount of food needed for the week, create a shopping list, and email it to the user.
  • Objective: OpenGym AI is a module designed to learn and apply reinforcement learning. The purpose of this lab is to learn the variety of functionalities available in OpenGym AI, implement them in various environments, and apply basic reinforcement learning techniques.
  • Objective: The Simplex Method is a straightforward algorithm for finding optimal solutions to optimization problems with linear constraints and cost functions. Because of its simplicity and applicability, this algorithm has been named one of the most important algorithms invented within the last 100 years. In this lab I implement a standard Simplex solver for the primal problem.
  • Objective: Functions that map from the complex plane into the complex plane are difficult to fully visualize because the domain and range are both 2-dimensional. However, such functions can be visualized at the expense of partial information. In this lab I present methods for analyzing complex-valued functions visually, including locating their zeros and poles in the complex plane.
  • Objective: Graph theory has a variety of applications. A graph (or network) can be represented in many ways on a computer. In this lab I study a common matrix representation for graphs and show how certain properties of the matrix representation correspond to inherent properties of the original graph. I also use tools for working with images in Python, and conclude with an application of using graphs and linear algebra to segment images.
  • Objective: Style transfer is a technique for combining the content of one image with the style of another image. In this project, I use the Gram matrix to compute the style of an image, and use gradient descent to optimize the content of an image to match the content of one image and the style of another image.
  • Objective: In this lab, I implement several key parts of a State of the Art Stable Diffusion model. Specifically, I will work with the Stable Diffusion model pipeline. Due to hardware constraints (training this model is very memory intensive), I will not train the model, but will load pretrained weights from the Stable Diffusion repository on huggingface.co. Then, I run inference with the pipeline and generate images.

(back to top)


Built With

Python       Jupyter       Numpy

Scipy         Matplotlib     Sympy

PyTorch     TQDM           Pandas

Plotly      RegEx

(back to top)

Contact

Ethan Crawford - ethanrctaylor@gmail.com

LinkedIn GitHub Email

(back to top)

Acknowledgments

  • Brigham Young University, Applied and Computational Mathematics - About
  • Brigham Young University Volume 1, Volume 2 Labs - Lab Descriptions
  • Brigham Young University, CS 474 Deep Learning - Course Description

(back to top)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors