Inspiration

3 out of 4 teens lack knowledge and confidence in personal finance, while 73% also want to increase their understanding of money matters. And experts in financial literacy say that hands-on money management experience is key, and particularly savings accounts help children learn about saving and spending. But, how do you get a child interested in finance? How do you make the learning process fun? There are many financial literacy apps for kids, but they lack connecting to what pre-teens and teens are interested in. Therefore, it makes learning about finance just feel like you’re in the classroom again. Pixel aims to connect finance to things that kids are ACTUALLY interested in – games (especially video games)! Pixel gamifies financial literacy to truly make learning about finance fun – in fact, you may even forget you're learning when you’re using Pixel.

“The beauty of starting with a savings account is, it’s teaching them to make deposits and watch that balance go up” -Bill Hensley, Senior Director of Education for the National Endowment for Financial Education

What it does

Pixel is an application designed to promote and gamify financial literacy for the pre-teens and teens. As children learn to save and manage their money, NFTs are unlocked when savings goals are met.

Children can browse their NFT collection and swap them on the open marketplace, learning the core fundamentals of market making. Furthermore, as these NFTs are stored in their Ethereum wallet address, they can be imported and used in various metaverse and decentralized games popular among teens, incentivizing kids to continue to save so they can unlock more great NFTs.

Pixel integrates with any bank’s mobile digital banking application. Parent’s can link Pixel to their children’s checking and savings accounts so that children can learn to save while having fun. Parents have full visibility and control over their children’s accounts, and Pixel, to help monitor and encourage their children to save.

How we built it

Built with Python, we used two state-of-the-art (SOTA) deep learning models from generative modeling to create new and unique NFTs. Specifically, we used a PyTorch implementation of Deep Convolutional Generative Adversarial Networks (DCGANs) and OpenAI’s GPT-2 text generation model, modified to work with images. DCGANs combine GANs, which are SOTA for generative modeling, and deep convolutional networks, which are SOTA for image classification making them well suited for novel image synthesis. GPT-2 is another SOTA model typically used for automatic speech and text generation, but what’s exciting is that we were able to modify it so that it can work with image generation as well. To do that, we encoded the original CryptoPunk images as sequences of RGB values from their pixels and then used the sequences to finetune the existing GPT-2 model. Finetuning is a popular technique to adapt an existing model to one’s application of interest without going through the long and arduous training process. GPT-2 was then able to generate unique sequences that were similar to the original ones, which were converted back into an image format.

The NFTs were pre-processed and post-processed using the Open-CV and Pillow packages. Other packages which were used were Glob to obtain the dataset of images, Tensorflow and PyTorch for the model infrastructure, Numpy for basic mathematical operations, and Pickle for saving and checkpointing our models during training.

While a generative model is creating thousands of unique NFT’s, a smart contract is uniquely publishing each digital asset to the blockchain and then transfers ownership to the recipient's crypto wallet address. The smart contract was built in solidity, a programming language for implementing smart contracts on blockchains. Our Smart Contract imports libraries that implement ERC-721 standards, called ‘OpenZeppelin’, and provides pre-tested contracts that allows us to securely interact with blockchains like Ethereum. Our Smart Contract takes in the recipient's wallet address and the URI token of the NFT’s metadata. Each NFT image and metadata file are stored into a decentralized system called IPFS, where we can use the URI token to call it publicly. Our smart contract is powering our react.js application which uses truffle and ganache for deploying and developing our smart contract onto the Ethereum blockchain as well as web3.js which allows us to interact with local Ethereum nodes.

Challenges we ran into

  • Finding a good dataset for NFT image generation was difficult. There are not many sources available, but we were able to find 10,000 CryptoPunks NFT images to use for training.
  • Due to limited computing resources and a tight timeframe, we were only able to utilize the smallest pre-trained models.
  • Obtaining an API key from Open Sea is not a straightforward process.
  • OpenZeppelin library documentation was a bit outdated.

Accomplishments that we're proud of

  • With the two deep learning models mentioned above, we were able to generate unique CryptoPunks NFTs that resembled the original collection.
  • We are now able to mint and transfer NFT’s using our own smart contract.
  • Great teamwork and collaboration between teammates with many different skill sets

What we learned

  • Smart Contracts: How to create a smart contract to exchange NFTs between two addresses
  • GANs: Understanding and implementing the deep convolutional generative adversarial network architecture
  • Image Data: Experience working with unstructured image data opposed to strictly tabular data which we leverage in Finance
  • GPT-2: Exposure to fine-tuning GPT-2

What's next for Pixel

  • Keep experimenting with model architectures to improve NFT image generation
  • Find alternate datasets to offer more variability with generated NFT images
  • Add marketplace functionality to react application
  • Allow for different blockchains to connect to our react application
  • Find alternate gaming providers where our NFTs could be plugged in
  • R&D with NFT mutation to enhance application "stickiness"

Built With

Share this project:

Updates