Added Weeks 4-8
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
10
content/posts/week-4.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
title: "Week 4"
|
||||||
|
date: 2022-02-27T12:46:59Z
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.[^1][^2]
|
||||||
|
[^1]: deeplizard. "Convolutional Neural Networks (CNNs) explained." (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube.com/watch?v=YRhxdVk_sIs
|
||||||
|
[^2]: A Rosebrock. "PyTorch: Training your first Convolutional Neural Network (CNN)". pyimagesearch.com. https://pyimagesearch.com/2021/07/19/pytorch-training-your-first-convolutional-neural-network-cnn/ (accessed Feb. 22, 2022.)
|
||||||
|
|
||||||
|
I also set up and created this blog with [Hugo](https://gohugo.io/) to document my progress and setup [Woodpecker CI](https://woodpecker-ci.org/) to do continuous testing and integration.
|
12
content/posts/week-5.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
title: "Week 5"
|
||||||
|
date: 2022-03-06T12:40:14+01:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
# Starting to write a CNN
|
||||||
|
This week I started to implement what I had learnt about CNNs in [Week 4](../week-4/). At this point I hadn't designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task. While reading I saw that nearly all research papers on the topic used transfer learning instead of creating their own CNNs from scratch. At this point I stopped writing a CNN from scratch and decided to solve my problem using transfer learning instead. I followed a guide[^1] on implementing transfer learning in pytorch and another guide[^2][^3] on creating a regressive CNN model.
|
||||||
|
[^1]:A Rosebrock. "PyTorch: Transfer Learning and Image Classification". pyimagesearch.com. https://pyimagesearch.com/2021/10/11/pytorch-transfer-learning-and-image-classification/ (accessed Mar. 1, 2022.)
|
||||||
|
[^2]:A Rosebrock. "Regression with Keras". pyimagesearch.com. https://pyimagesearch.com/2019/01/21/regression-with-keras/ (accessed Feb. 22, 2022.)
|
||||||
|
[^3]:A Rosebrock. "Keras, Regression, and CNNs". pyimagesearch.com. https://pyimagesearch.com/2019/01/28/keras-regression-and-cnns/ (accessed Feb. 22, 2022.)
|
16
content/posts/week-6.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
title: "Week 6"
|
||||||
|
date: 2022-03-13T12:40:17+01:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren't any runtime errors in my code. As I don't own an Nvidia GPU (I have an AMD GPU), I couldn't make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs[^1] but RocM isn't as mature as CUDA and only officially supports a small subset of Linux distributions. Therefore, for this model I trained on the COU for only 20 epochs just to make sure it ran successfully before trying to find some Nvidia compute.
|
||||||
|
[^1]: https://pytorch.org/blog/pytorch-for-amd-rocm-platform-now-available-as-python-package/
|
||||||
|
|
||||||
|
## Transfer learning model architecture
|
||||||
|
### Full
|
||||||
|
![Transfer learning architecture](/transfer-cnn-arch.svg)
|
||||||
|
### Simplified
|
||||||
|
![Simplified Transfer learning architecture](/transfer-cnn-arch-simpl.svg)
|
||||||
|
## Validation and train loss over 20 epochs
|
||||||
|
![plot of training and validation loss over 20 epochs](/20-epoch-plot.png)
|
16
content/posts/week-7.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
title: "Week 7"
|
||||||
|
date: 2022-03-20T12:40:18+01:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn't want to use these as I didn't want my code to be dependent on the specific ways cloud platforms want the code in. Instead, I wanted to get a general VM with an attached GPU where I could run my workloads manually. I had already written docker images that contained all the depencies of my code that I could deploy to these VMs to ensure a reproducible and portable environment.
|
||||||
|
|
||||||
|
First place I looked was [Linode](https://www.linode.com/products/gpu/). Although, after I contacted their support about it they said I needed at least $100 of transactions on my account in order to request access to their GPU instances. They also noted I could make a deposit of $100 to start using them straight away. I wasn't sure if my model was going to use up $100 to train yet so I didn't want to risk it.
|
||||||
|
|
||||||
|
I then looked to [Microsoft's Azure](https://azure.microsoft.com). I had used Azure during my industrial year and had previously passed the fundamentals and associate administrator exams for the platform so felt fairly confident in using it for my project. I ran into some issues I couldn't quite explain at the start of the week. For some reason no services were available for me to use. I couldn't use any VMs, create any networks or drives etc... Turns out I noticed that my UK account was defaulting to trying to create resources in the US which I didn't have access to. So I had to manually set my location to the UK in order to create any resources.
|
||||||
|
|
||||||
|
While I was trying to work out the issue with Azure, I looked at using [GCP](https://cloud.google.com). GCP automatically sets new accounts to have a quota of 0 for GPUs. Meaning you can't attach one to any VM. You can increase the quota which requires getting in contact with customer support. Within 10 minutes I got a response and my quota was increases by 1. I wrote [Terraform](https://www.terraform.io/) IaC (Infrastructure as Code) to automatically spin up and spin down cloud resources quickly.
|
||||||
|
|
||||||
|
At this point I realised my code wasn't very portable as it included hard-coded absolute paths among other things. I refactored a lot of my code in order to run it on any machine. I was also granted access to the university's GPU compute servers which allowed me to train my model without paying for cloud fees. To make sure my refactoring worked and that the GPU was actually being utilised during training, I rain the training script on the uni's GPU compute server for 20 epochs. It successfully finished in ~13 minutes.
|
30
content/posts/week-8.md
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
title: "Week 8"
|
||||||
|
date: 2022-03-27T13:13:48+01:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
# Monday
|
||||||
|
Towards the end of last week ([Week 7](../week-7)), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni's GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.
|
||||||
|
|
||||||
|
# Tuesday
|
||||||
|
Tuesday afternoon the training had finished and I had a model that was trained on 2000 epochs. This gave me a day to analyse the results and do some rough predictions before my mid-project demo on the Wednesday.
|
||||||
|
## Training and validation loss graphs
|
||||||
|
![training and validation loss 20 epochs](/20-epoch-plot.png)
|
||||||
|
![training and validation loss 2000 epochs](/2000-epoch-plot.png)
|
||||||
|
|
||||||
|
As we can see from the 2000 Epochs graph, the loss seems to plateau at around 60 epochs. The training loss seems to even out with more accuracy than the validation loss. This means that our data isn't fully learning what I want it to. Also it's overfitting slightly as it's better at predicting the training set than the validation set. The variance in the validation set shows that the features it's decided to learn aren't the right features to confidently predict aesthetics in this dataset.
|
||||||
|
|
||||||
|
For the rest of the day I worked on my prediction script so I could use the model to predict new pictures. I also worked on my architecture diagrams and slides for the mid-project demo.
|
||||||
|
|
||||||
|
![images with prediction scores](/predictions.png)
|
||||||
|
|
||||||
|
Due to the nature of how I processed my images (resizing them to 32x32 and then saving them to a tensor then saving them to disk), my prediction script also displayed those down-sized images. This may have also effected the performance of the model.
|
||||||
|
|
||||||
|
# Wednesday
|
||||||
|
I spent most of Wednesday morning finishing my slides, diagrams and making example predictions using the prediction script.
|
||||||
|
|
||||||
|
![overall project architecture](/project-model.svg)
|
||||||
|
|
||||||
|
# Rest of week
|
||||||
|
I spent the rest of the week looking at the project's overall pipeline including the non-machine learning filtering. I also started to implement basic focus detection by looking at blur detection using the Laplacian operator[^1].
|
||||||
|
[^1]:https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/
|
BIN
public/20-epoch-plot.png
(Stored with Git LFS)
Normal file
BIN
public/2000-epoch-plot.png
(Stored with Git LFS)
Normal file
|
@ -14,7 +14,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/categories/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/categories/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1,10 @@
|
||||||
<!DOCTYPE html><html><head><title>https://mmp.oscar.blue/categories/</title><link rel="canonical" href="https://mmp.oscar.blue/categories/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/categories/" /></head></html>
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>https://mmp.oscar.blue/categories/</title>
|
||||||
|
<link rel="canonical" href="https://mmp.oscar.blue/categories/">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/categories/">
|
||||||
|
</head>
|
||||||
|
</html>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This is the developer documentation. (Work-in-progress)">
|
<meta name="description" content="This is the developer documentation. (Work-in-progress)">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/developer/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/developer/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This is the user documentation. (Work-in-progress)">
|
<meta name="description" content="This is the user documentation. (Work-in-progress)">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/user/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/docs/user/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
'use strict';(function(){const e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",i);function i(t){if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!a(n))return;e.focus(),t.preventDefault()}function a(t){const n=e.getAttribute("data-hotkeys")||'';return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,o("/flexsearch.min.js"),o("/en.search-data.min.7fa160935458996a6e342c79dcaee4fd59e7c35b67e065778352b0d790f6b7e6.js",function(){e.required=!1,s()})}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value,10);n.forEach(function(e){const n=r("<li><a href></a><small></small></li>"),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.href,s.textContent=e.title,o.textContent=e.section,t.appendChild(n)})}function o(t,n){const e=document.createElement("script");e.defer=!0,e.async=!1,e.src=t,e.onload=n,document.head.appendChild(e)}function r(t){const e=document.createElement("div");return e.innerHTML=t,e.firstChild}})()
|
|
@ -0,0 +1 @@
|
||||||
|
'use strict';(function(){const e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",i);function i(t){if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!a(n))return;e.focus(),t.preventDefault()}function a(t){const n=e.getAttribute("data-hotkeys")||'';return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,o("/flexsearch.min.js"),o("/en.search-data.min.3cdd632708ab5b87a1949e77a4e8038d26de63339156f8be996cb82fdd8a42dd.js",function(){e.required=!1,s()})}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value,10);n.forEach(function(e){const n=r("<li><a href></a><small></small></li>"),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.href,s.textContent=e.title,o.textContent=e.section,t.appendChild(n)})}function o(t,n){const e=document.createElement("script");e.defer=!0,e.async=!1,e.src=t,e.onload=n,document.head.appendChild(e)}function r(t){const e=document.createElement("div");return e.innerHTML=t,e.firstChild}})()
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 128 B |
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Autophotographer # This project aims to automate the process of selecting “aesthetic” images from a video feed.">
|
<meta name="description" content="Autophotographer # This project aims to automate the process of selecting “aesthetic” images from a video feed.">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,15 +5,54 @@
|
||||||
<link>https://mmp.oscar.blue/</link>
|
<link>https://mmp.oscar.blue/</link>
|
||||||
<description>Recent content in Homepage on MMP | Oscar Pocock</description>
|
<description>Recent content in Homepage on MMP | Oscar Pocock</description>
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
<lastBuildDate>Wed, 23 Feb 2022 12:46:59 +0000</lastBuildDate><atom:link href="https://mmp.oscar.blue/index.xml" rel="self" type="application/rss+xml" />
|
<lastBuildDate>Sun, 27 Mar 2022 13:13:48 +0100</lastBuildDate><atom:link href="https://mmp.oscar.blue/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
<item>
|
||||||
|
<title>Week 8</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-8/</link>
|
||||||
|
<pubDate>Sun, 27 Mar 2022 13:13:48 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-8/</guid>
|
||||||
|
<description>Monday # Towards the end of last week ( Week 7), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni&rsquo;s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 7</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-7/</link>
|
||||||
|
<pubDate>Sun, 20 Mar 2022 12:40:18 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-7/</guid>
|
||||||
|
<description>Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn&rsquo;t want to use these as I didn&rsquo;t want my code to be dependent on the specific ways cloud platforms want the code in.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 6</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-6/</link>
|
||||||
|
<pubDate>Sun, 13 Mar 2022 12:40:17 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-6/</guid>
|
||||||
|
<description>This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren&rsquo;t any runtime errors in my code. As I don&rsquo;t own an Nvidia GPU (I have an AMD GPU), I couldn&rsquo;t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs1 but RocM isn&rsquo;t as mature as CUDA and only officially supports a small subset of Linux distributions.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 5</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-5/</link>
|
||||||
|
<pubDate>Sun, 06 Mar 2022 12:40:14 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-5/</guid>
|
||||||
|
<description>Starting to write a CNN # This week I started to implement what I had learnt about CNNs in Week 4. At this point I hadn&rsquo;t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Week 4</title>
|
<title>Week 4</title>
|
||||||
<link>https://mmp.oscar.blue/posts/week-4/</link>
|
<link>https://mmp.oscar.blue/posts/week-4/</link>
|
||||||
<pubDate>Wed, 23 Feb 2022 12:46:59 +0000</pubDate>
|
<pubDate>Sun, 27 Feb 2022 12:46:59 +0000</pubDate>
|
||||||
|
|
||||||
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
|
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
|
||||||
<description>This week&hellip;
|
<description>This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.12
|
||||||
Work # Created blog Weekly 1:1 meeting # </description>
|
I also set up and created this blog with Hugo to document my progress and setup Woodpecker CI to do continuous testing and integration.
|
||||||
|
deeplizard. &ldquo;Convolutional Neural Networks (CNNs) explained.&rdquo; (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/posts/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/posts/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -206,12 +206,102 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="markdown book-post">
|
||||||
|
<h2>
|
||||||
|
<a href="/posts/week-8/">Week 8</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<h5>March 27, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Monday # Towards the end of last week ( Week 7), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni’s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.
|
||||||
|
<a href="/posts/week-8/">...</a>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article class="markdown book-post">
|
||||||
|
<h2>
|
||||||
|
<a href="/posts/week-7/">Week 7</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<h5>March 20, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn’t want to use these as I didn’t want my code to be dependent on the specific ways cloud platforms want the code in.
|
||||||
|
<a href="/posts/week-7/">...</a>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article class="markdown book-post">
|
||||||
|
<h2>
|
||||||
|
<a href="/posts/week-6/">Week 6</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<h5>March 13, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren’t any runtime errors in my code. As I don’t own an Nvidia GPU (I have an AMD GPU), I couldn’t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs1 but RocM isn’t as mature as CUDA and only officially supports a small subset of Linux distributions.
|
||||||
|
<a href="/posts/week-6/">...</a>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article class="markdown book-post">
|
||||||
|
<h2>
|
||||||
|
<a href="/posts/week-5/">Week 5</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<h5>March 6, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Starting to write a CNN # This week I started to implement what I had learnt about CNNs in Week 4. At this point I hadn’t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task.
|
||||||
|
<a href="/posts/week-5/">...</a>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
<article class="markdown book-post">
|
<article class="markdown book-post">
|
||||||
<h2>
|
<h2>
|
||||||
<a href="/posts/week-4/">Week 4</a>
|
<a href="/posts/week-4/">Week 4</a>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<h5>February 23, 2022</h5>
|
<h5>February 27, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -222,8 +312,11 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p>This week…
|
<p>This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.12
|
||||||
Work # Created blog Weekly 1:1 meeting #
|
I also set up and created this blog with Hugo to document my progress and setup Woodpecker CI to do continuous testing and integration.
|
||||||
|
deeplizard. “Convolutional Neural Networks (CNNs) explained.” (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube.
|
||||||
|
<a href="/posts/week-4/">...</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
|
|
@ -5,15 +5,54 @@
|
||||||
<link>https://mmp.oscar.blue/posts/</link>
|
<link>https://mmp.oscar.blue/posts/</link>
|
||||||
<description>Recent content in Blog on MMP | Oscar Pocock</description>
|
<description>Recent content in Blog on MMP | Oscar Pocock</description>
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
<lastBuildDate>Wed, 23 Feb 2022 12:46:59 +0000</lastBuildDate><atom:link href="https://mmp.oscar.blue/posts/index.xml" rel="self" type="application/rss+xml" />
|
<lastBuildDate>Sun, 27 Mar 2022 13:13:48 +0100</lastBuildDate><atom:link href="https://mmp.oscar.blue/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
<item>
|
||||||
|
<title>Week 8</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-8/</link>
|
||||||
|
<pubDate>Sun, 27 Mar 2022 13:13:48 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-8/</guid>
|
||||||
|
<description>Monday # Towards the end of last week ( Week 7), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni&rsquo;s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 7</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-7/</link>
|
||||||
|
<pubDate>Sun, 20 Mar 2022 12:40:18 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-7/</guid>
|
||||||
|
<description>Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn&rsquo;t want to use these as I didn&rsquo;t want my code to be dependent on the specific ways cloud platforms want the code in.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 6</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-6/</link>
|
||||||
|
<pubDate>Sun, 13 Mar 2022 12:40:17 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-6/</guid>
|
||||||
|
<description>This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren&rsquo;t any runtime errors in my code. As I don&rsquo;t own an Nvidia GPU (I have an AMD GPU), I couldn&rsquo;t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs1 but RocM isn&rsquo;t as mature as CUDA and only officially supports a small subset of Linux distributions.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Week 5</title>
|
||||||
|
<link>https://mmp.oscar.blue/posts/week-5/</link>
|
||||||
|
<pubDate>Sun, 06 Mar 2022 12:40:14 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://mmp.oscar.blue/posts/week-5/</guid>
|
||||||
|
<description>Starting to write a CNN # This week I started to implement what I had learnt about CNNs in Week 4. At this point I hadn&rsquo;t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Week 4</title>
|
<title>Week 4</title>
|
||||||
<link>https://mmp.oscar.blue/posts/week-4/</link>
|
<link>https://mmp.oscar.blue/posts/week-4/</link>
|
||||||
<pubDate>Wed, 23 Feb 2022 12:46:59 +0000</pubDate>
|
<pubDate>Sun, 27 Feb 2022 12:46:59 +0000</pubDate>
|
||||||
|
|
||||||
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
|
<guid>https://mmp.oscar.blue/posts/week-4/</guid>
|
||||||
<description>This week&hellip;
|
<description>This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.12
|
||||||
Work # Created blog Weekly 1:1 meeting # </description>
|
I also set up and created this blog with Hugo to document my progress and setup Woodpecker CI to do continuous testing and integration.
|
||||||
|
deeplizard. &ldquo;Convolutional Neural Networks (CNNs) explained.&rdquo; (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -1 +1,10 @@
|
||||||
<!DOCTYPE html><html><head><title>https://mmp.oscar.blue/posts/</title><link rel="canonical" href="https://mmp.oscar.blue/posts/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/posts/" /></head></html>
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>https://mmp.oscar.blue/posts/</title>
|
||||||
|
<link rel="canonical" href="https://mmp.oscar.blue/posts/">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/posts/">
|
||||||
|
</head>
|
||||||
|
</html>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
|
<meta name="description" content="This week is the first week of the project. I researched academic papers, existing code and dataset relating to the topic of determining aesthetics.
|
||||||
|
@ -23,7 +23,7 @@ Code # Image Quality Assessment - Convolutional Neural Networks to predict the
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<!--
|
<!--
|
||||||
|
@ -152,7 +152,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This week I set up my repositories and starting writing some basic code.
|
<meta name="description" content="This week I set up my repositories and starting writing some basic code.
|
||||||
|
@ -19,7 +19,7 @@ Set up # Before starting any coding, I wanted to set up my remote git repositor
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<!--
|
<!--
|
||||||
|
@ -148,7 +148,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -227,59 +227,59 @@ https://github.com/alex-shpak/hugo-book
|
||||||
</h1>
|
</h1>
|
||||||
<p>Towards the end of the week I put together some simple code to reduce the frame set. I used the OpenCV Python module to export the frames of a given video to an <code>output/</code> folder. The path of this folder is also stored in the <code>outputfolder</code> variable we see used on line 7.</p>
|
<p>Towards the end of the week I put together some simple code to reduce the frame set. I used the OpenCV Python module to export the frames of a given video to an <code>output/</code> folder. The path of this folder is also stored in the <code>outputfolder</code> variable we see used on line 7.</p>
|
||||||
<p>Although this code is a first step at reducing the frames set - it doesn’t give us much feedback about the frames that have been deleted or kept.</p>
|
<p>Although this code is a first step at reducing the frames set - it doesn’t give us much feedback about the frames that have been deleted or kept.</p>
|
||||||
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
|
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
|
||||||
<table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
|
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
|
||||||
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
|
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">18
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">19
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">20
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">21
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">22
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">23
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">24
|
||||||
</span></code></pre></td>
|
</span></code></pre></td>
|
||||||
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
|
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
|
||||||
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-python" data-lang="python"><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">display_file_sizes</span>():
|
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">display_file_sizes</span>():
|
||||||
<span style="color:#e6db74">"""Calculates the average frame filesize and deletes the frames lower
|
</span></span><span style="display:flex;"><span><span style="color:#e6db74">"""Calculates the average frame filesize and deletes the frames lower
|
||||||
</span><span style="color:#e6db74">than the average
|
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">than the average
|
||||||
</span><span style="color:#e6db74">"""</span>
|
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">"""</span>
|
||||||
<span style="color:#75715e"># create an array storing the filesize of each frame</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># create an array storing the filesize of each frame</span>
|
||||||
filesizes <span style="color:#f92672">=</span> []
|
</span></span><span style="display:flex;"><span> filesizes <span style="color:#f92672">=</span> []
|
||||||
<span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
|
||||||
filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">"/"</span> <span style="color:#f92672">+</span> filename
|
</span></span><span style="display:flex;"><span> filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">"/"</span> <span style="color:#f92672">+</span> filename
|
||||||
filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>getsize(filepath)
|
</span></span><span style="display:flex;"><span> filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>getsize(filepath)
|
||||||
print(filepath <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize))
|
</span></span><span style="display:flex;"><span> print(filepath <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize))
|
||||||
filesizes<span style="color:#f92672">.</span>append(filesize)
|
</span></span><span style="display:flex;"><span> filesizes<span style="color:#f92672">.</span>append(filesize)
|
||||||
|
</span></span><span style="display:flex;"><span>
|
||||||
<span style="color:#75715e"># work out average</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># work out average</span>
|
||||||
average <span style="color:#f92672">=</span> sum(filesizes)<span style="color:#f92672">/</span>len(filesizes)
|
</span></span><span style="display:flex;"><span> average <span style="color:#f92672">=</span> sum(filesizes)<span style="color:#f92672">/</span>len(filesizes)
|
||||||
print (<span style="color:#e6db74">"Average is: "</span> <span style="color:#f92672">+</span> str(average))
|
</span></span><span style="display:flex;"><span> print (<span style="color:#e6db74">"Average is: "</span> <span style="color:#f92672">+</span> str(average))
|
||||||
|
</span></span><span style="display:flex;"><span>
|
||||||
<span style="color:#75715e"># delete files below average</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># delete files below average</span>
|
||||||
count <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
|
</span></span><span style="display:flex;"><span> count <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
|
||||||
<span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> filename <span style="color:#f92672">in</span> os<span style="color:#f92672">.</span>listdir(outputfolder):
|
||||||
filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">"/"</span> <span style="color:#f92672">+</span> filename
|
</span></span><span style="display:flex;"><span> filepath <span style="color:#f92672">=</span> outputfolder <span style="color:#f92672">+</span> <span style="color:#e6db74">"/"</span> <span style="color:#f92672">+</span> filename
|
||||||
<span style="color:#66d9ef">if</span> filesizes[count] <span style="color:#f92672"><</span> average:
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> filesizes[count] <span style="color:#f92672"><</span> average:
|
||||||
<span style="color:#75715e"># print(filepath + ": " + str(filesizes[count]))</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># print(filepath + ": " + str(filesizes[count]))</span>
|
||||||
os<span style="color:#f92672">.</span>remove(filepath)
|
</span></span><span style="display:flex;"><span> os<span style="color:#f92672">.</span>remove(filepath)
|
||||||
count <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
|
</span></span><span style="display:flex;"><span> count <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
|
||||||
</code></pre></td></tr></table>
|
</span></span></code></pre></td></tr></table>
|
||||||
</div>
|
</div>
|
||||||
</div><p>I didn’t end up doing as much as I would have liked this week. I found myself preoccupied in other areas of my life and not putting enough emphasis on this project.</p>
|
</div><p>I didn’t end up doing as much as I would have liked this week. I found myself preoccupied in other areas of my life and not putting enough emphasis on this project.</p>
|
||||||
<h1 id="11-weekly-meeting">
|
<h1 id="11-weekly-meeting">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
|
<meta name="description" content="Filming footage # At the start of the week I went into town to film some practise footage to work with later (up until this point I had been experimenting with footage limited by my bedroom walls). I took some basic vertical and horizontal footage of the town - no nature or breach footage yet.
|
||||||
|
@ -19,7 +19,7 @@ Gaining more useful information # I used the footage I had recorded at the star
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<!--
|
<!--
|
||||||
|
@ -148,7 +148,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -220,43 +220,43 @@ https://github.com/alex-shpak/hugo-book
|
||||||
<a class="anchor" href="#gaining-more-useful-information">#</a>
|
<a class="anchor" href="#gaining-more-useful-information">#</a>
|
||||||
</h1>
|
</h1>
|
||||||
<p>I used the footage I had recorded at the start of the week and revised my “filesize” code. I made a new function <code>order_frames_by_filesize()</code> which orders the frames by the filesize and prints the name of size of each frame in order.</p>
|
<p>I used the footage I had recorded at the start of the week and revised my “filesize” code. I made a new function <code>order_frames_by_filesize()</code> which orders the frames by the filesize and prints the name of size of each frame in order.</p>
|
||||||
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4">
|
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
|
||||||
<table style="border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
|
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
|
||||||
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
|
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
|
||||||
</span><span style="margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
|
</span><span style="white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
|
||||||
</span></code></pre></td>
|
</span></code></pre></td>
|
||||||
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
|
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
|
||||||
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-python" data-lang="python"><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">order_frames_by_filesize</span>():
|
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">order_frames_by_filesize</span>():
|
||||||
<span style="color:#e6db74">"""Order the frames by filesize and print the filenames and their sizes"""</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#e6db74">"""Order the frames by filesize and print the filenames and their sizes"""</span>
|
||||||
frames <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>listdir(outputfolder)
|
</span></span><span style="display:flex;"><span> frames <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>listdir(outputfolder)
|
||||||
|
</span></span><span style="display:flex;"><span>
|
||||||
<span style="color:#75715e"># sort the frames by their filesize</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># sort the frames by their filesize</span>
|
||||||
frames <span style="color:#f92672">=</span> sorted(frames,
|
</span></span><span style="display:flex;"><span> frames <span style="color:#f92672">=</span> sorted(frames,
|
||||||
key <span style="color:#f92672">=</span> <span style="color:#66d9ef">lambda</span> x: os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, x))<span style="color:#f92672">.</span>st_size, reverse <span style="color:#f92672">=</span> <span style="color:#66d9ef">True</span>)
|
</span></span><span style="display:flex;"><span> key <span style="color:#f92672">=</span> <span style="color:#66d9ef">lambda</span> x: os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, x))<span style="color:#f92672">.</span>st_size, reverse <span style="color:#f92672">=</span> <span style="color:#66d9ef">True</span>)
|
||||||
|
</span></span><span style="display:flex;"><span>
|
||||||
<span style="color:#75715e"># print every frame and it's size in a human readable format</span>
|
</span></span><span style="display:flex;"><span> <span style="color:#75715e"># print every frame and it's size in a human readable format</span>
|
||||||
<span style="color:#66d9ef">for</span> frame <span style="color:#f92672">in</span> frames:
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> frame <span style="color:#f92672">in</span> frames:
|
||||||
filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, frame))<span style="color:#f92672">.</span>st_size
|
</span></span><span style="display:flex;"><span> filesize <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>stat(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(outputfolder, frame))<span style="color:#f92672">.</span>st_size
|
||||||
<span style="color:#66d9ef">if</span> filesize <span style="color:#f92672">></span> <span style="color:#ae81ff">1024</span>:
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> filesize <span style="color:#f92672">></span> <span style="color:#ae81ff">1024</span>:
|
||||||
filesize <span style="color:#f92672">=</span> filesize <span style="color:#f92672">/</span> <span style="color:#ae81ff">1024</span>
|
</span></span><span style="display:flex;"><span> filesize <span style="color:#f92672">=</span> filesize <span style="color:#f92672">/</span> <span style="color:#ae81ff">1024</span>
|
||||||
print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize) <span style="color:#f92672">+</span> <span style="color:#e6db74">" KB"</span>)
|
</span></span><span style="display:flex;"><span> print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize) <span style="color:#f92672">+</span> <span style="color:#e6db74">" KB"</span>)
|
||||||
<span style="color:#66d9ef">else</span>:
|
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">else</span>:
|
||||||
print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize))
|
</span></span><span style="display:flex;"><span> print(frame <span style="color:#f92672">+</span> <span style="color:#e6db74">": "</span> <span style="color:#f92672">+</span> str(filesize))
|
||||||
</code></pre></td></tr></table>
|
</span></span></code></pre></td></tr></table>
|
||||||
</div>
|
</div>
|
||||||
</div><h1 id="analysing-datasets">
|
</div><h1 id="analysing-datasets">
|
||||||
Analysing datasets
|
Analysing datasets
|
||||||
|
|
|
@ -2,24 +2,26 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This week…
|
<meta name="description" content="This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.12
|
||||||
Work # Created blog Weekly 1:1 meeting # ">
|
I also set up and created this blog with Hugo to document my progress and setup Woodpecker CI to do continuous testing and integration.
|
||||||
|
deeplizard. “Convolutional Neural Networks (CNNs) explained.” (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube.">
|
||||||
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 4" />
|
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 4" />
|
||||||
<meta property="og:description" content="This week…
|
<meta property="og:description" content="This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.12
|
||||||
Work # Created blog Weekly 1:1 meeting # " />
|
I also set up and created this blog with Hugo to document my progress and setup Woodpecker CI to do continuous testing and integration.
|
||||||
|
deeplizard. “Convolutional Neural Networks (CNNs) explained.” (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available: https://youtube." />
|
||||||
<meta property="og:type" content="article" />
|
<meta property="og:type" content="article" />
|
||||||
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-4/" /><meta property="article:section" content="posts" />
|
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-4/" /><meta property="article:section" content="posts" />
|
||||||
<meta property="article:published_time" content="2022-02-23T12:46:59+00:00" />
|
<meta property="article:published_time" content="2022-02-27T12:46:59+00:00" />
|
||||||
<meta property="article:modified_time" content="2022-02-23T12:46:59+00:00" />
|
<meta property="article:modified_time" content="2022-02-27T12:46:59+00:00" />
|
||||||
|
|
||||||
<title>Week 4 | MMP | Oscar Pocock</title>
|
<title>Week 4 | MMP | Oscar Pocock</title>
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<!--
|
<!--
|
||||||
|
@ -148,7 +150,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,12 +179,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
<aside class="hidden clearfix">
|
<aside class="hidden clearfix">
|
||||||
|
|
||||||
|
|
||||||
<nav id="TableOfContents">
|
<nav id="TableOfContents"></nav>
|
||||||
<ul>
|
|
||||||
<li><a href="#work">Work</a></li>
|
|
||||||
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -198,7 +195,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
<a href="/posts/week-4/">Week 4</a>
|
<a href="/posts/week-4/">Week 4</a>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<h5>February 23, 2022</h5>
|
<h5>February 27, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,18 +205,23 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p>This week…</p>
|
<p>This week I did some research into how to build a CNN from scratch, including the different type of layers, loss functions, learning rates, epochs and other core concepts.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
|
||||||
<h1 id="work">
|
<p>I also set up and created this blog with
|
||||||
Work
|
<a href="https://gohugo.io/">Hugo</a> to document my progress and setup
|
||||||
<a class="anchor" href="#work">#</a>
|
<a href="https://woodpecker-ci.org/">Woodpecker CI</a> to do continuous testing and integration.</p>
|
||||||
</h1>
|
<section class="footnotes" role="doc-endnotes">
|
||||||
<ul>
|
<hr>
|
||||||
<li>Created blog</li>
|
<ol>
|
||||||
</ul>
|
<li id="fn:1" role="doc-endnote">
|
||||||
<h1 id="weekly-11-meeting">
|
<p>deeplizard. “Convolutional Neural Networks (CNNs) explained.” (Dec. 9, 2017). Accessed: Feb. 22, 2022. [Online Video]. Available:
|
||||||
Weekly 1:1 meeting
|
<a href="https://youtube.com/watch?v=YRhxdVk_sIs">https://youtube.com/watch?v=YRhxdVk_sIs</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
<a class="anchor" href="#weekly-11-meeting">#</a>
|
</li>
|
||||||
</h1>
|
<li id="fn:2" role="doc-endnote">
|
||||||
|
<p>A Rosebrock. “PyTorch: Training your first Convolutional Neural Network (CNN)”. pyimagesearch.com.
|
||||||
|
<a href="https://pyimagesearch.com/2021/07/19/pytorch-training-your-first-convolutional-neural-network-cnn/">https://pyimagesearch.com/2021/07/19/pytorch-training-your-first-convolutional-neural-network-cnn/</a> (accessed Feb. 22, 2022.) <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
@ -254,12 +256,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
<div class="book-toc-content">
|
<div class="book-toc-content">
|
||||||
|
|
||||||
|
|
||||||
<nav id="TableOfContents">
|
<nav id="TableOfContents"></nav>
|
||||||
<ul>
|
|
||||||
<li><a href="#work">Work</a></li>
|
|
||||||
<li><a href="#weekly-11-meeting">Weekly 1:1 meeting</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
296
public/posts/week-5/index.html
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Starting to write a CNN # This week I started to implement what I had learnt about CNNs in Week 4. At this point I hadn’t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task.">
|
||||||
|
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 5" />
|
||||||
|
<meta property="og:description" content="Starting to write a CNN # This week I started to implement what I had learnt about CNNs in Week 4. At this point I hadn’t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.
|
||||||
|
Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task." />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-5/" /><meta property="article:section" content="posts" />
|
||||||
|
<meta property="article:published_time" content="2022-03-06T12:40:14+01:00" />
|
||||||
|
<meta property="article:modified_time" content="2022-03-06T12:40:14+01:00" />
|
||||||
|
|
||||||
|
<title>Week 5 | MMP | Oscar Pocock</title>
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
|
<!--
|
||||||
|
Made with Book Theme
|
||||||
|
https://github.com/alex-shpak/hugo-book
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body dir="ltr">
|
||||||
|
<input type="checkbox" class="hidden toggle" id="menu-control" />
|
||||||
|
<input type="checkbox" class="hidden toggle" id="toc-control" />
|
||||||
|
<main class="container flex">
|
||||||
|
<aside class="book-menu">
|
||||||
|
<div class="book-menu-content">
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<h2 class="book-brand">
|
||||||
|
<a href="/"><span>MMP | Oscar Pocock</span>
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-search">
|
||||||
|
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
|
||||||
|
<div class="book-search-spinner hidden"></div>
|
||||||
|
<ul id="book-search-results"></ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/posts/" >
|
||||||
|
Blog
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
|
||||||
|
Aberystwyth MMP Site
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
|
||||||
|
Source Code
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div class="book-page">
|
||||||
|
<header class="book-header">
|
||||||
|
|
||||||
|
<div class="flex align-center justify-between">
|
||||||
|
<label for="menu-control">
|
||||||
|
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<strong>Week 5</strong>
|
||||||
|
|
||||||
|
<label for="toc-control">
|
||||||
|
|
||||||
|
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
|
||||||
|
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="hidden clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#starting-to-write-a-cnn">Starting to write a CNN</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="markdown">
|
||||||
|
<h1>
|
||||||
|
<a href="/posts/week-5/">Week 5</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h5>March 6, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="starting-to-write-a-cnn">
|
||||||
|
Starting to write a CNN
|
||||||
|
<a class="anchor" href="#starting-to-write-a-cnn">#</a>
|
||||||
|
</h1>
|
||||||
|
<p>This week I started to implement what I had learnt about CNNs in
|
||||||
|
<a href="../week-4/">Week 4</a>. At this point I hadn’t designed a CNN architecture to implement, instead I wanted to have a running model regardless of performance just to see if I could implement one and understand it.</p>
|
||||||
|
<p>Half way through implementation, I decided to look back at the existing research papers on judging aesthetic judgement to see which aspects of their system and CNN were important to the task. While reading I saw that nearly all research papers on the topic used transfer learning instead of creating their own CNNs from scratch. At this point I stopped writing a CNN from scratch and decided to solve my problem using transfer learning instead. I followed a guide<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> on implementing transfer learning in pytorch and another guide<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> on creating a regressive CNN model.</p>
|
||||||
|
<section class="footnotes" role="doc-endnotes">
|
||||||
|
<hr>
|
||||||
|
<ol>
|
||||||
|
<li id="fn:1" role="doc-endnote">
|
||||||
|
<p>A Rosebrock. “PyTorch: Transfer Learning and Image Classification”. pyimagesearch.com.
|
||||||
|
<a href="https://pyimagesearch.com/2021/10/11/pytorch-transfer-learning-and-image-classification/">https://pyimagesearch.com/2021/10/11/pytorch-transfer-learning-and-image-classification/</a> (accessed Mar. 1, 2022.) <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
<li id="fn:2" role="doc-endnote">
|
||||||
|
<p>A Rosebrock. “Regression with Keras”. pyimagesearch.com.
|
||||||
|
<a href="https://pyimagesearch.com/2019/01/21/regression-with-keras/">https://pyimagesearch.com/2019/01/21/regression-with-keras/</a> (accessed Feb. 22, 2022.) <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
<li id="fn:3" role="doc-endnote">
|
||||||
|
<p>A Rosebrock. “Keras, Regression, and CNNs”. pyimagesearch.com.
|
||||||
|
<a href="https://pyimagesearch.com/2019/01/28/keras-regression-and-cnns/">https://pyimagesearch.com/2019/01/28/keras-regression-and-cnns/</a> (accessed Feb. 22, 2022.) <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="book-footer">
|
||||||
|
|
||||||
|
<div class="flex flex-wrap justify-between">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-comments">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label for="menu-control" class="hidden book-menu-overlay"></label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="book-toc">
|
||||||
|
<div class="book-toc-content">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#starting-to-write-a-cnn">Starting to write a CNN</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
322
public/posts/week-6/index.html
Normal file
|
@ -0,0 +1,322 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren’t any runtime errors in my code. As I don’t own an Nvidia GPU (I have an AMD GPU), I couldn’t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs1 but RocM isn’t as mature as CUDA and only officially supports a small subset of Linux distributions.">
|
||||||
|
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 6" />
|
||||||
|
<meta property="og:description" content="This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren’t any runtime errors in my code. As I don’t own an Nvidia GPU (I have an AMD GPU), I couldn’t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs1 but RocM isn’t as mature as CUDA and only officially supports a small subset of Linux distributions." />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-6/" /><meta property="article:section" content="posts" />
|
||||||
|
<meta property="article:published_time" content="2022-03-13T12:40:17+01:00" />
|
||||||
|
<meta property="article:modified_time" content="2022-03-13T12:40:17+01:00" />
|
||||||
|
|
||||||
|
<title>Week 6 | MMP | Oscar Pocock</title>
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
|
<!--
|
||||||
|
Made with Book Theme
|
||||||
|
https://github.com/alex-shpak/hugo-book
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body dir="ltr">
|
||||||
|
<input type="checkbox" class="hidden toggle" id="menu-control" />
|
||||||
|
<input type="checkbox" class="hidden toggle" id="toc-control" />
|
||||||
|
<main class="container flex">
|
||||||
|
<aside class="book-menu">
|
||||||
|
<div class="book-menu-content">
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<h2 class="book-brand">
|
||||||
|
<a href="/"><span>MMP | Oscar Pocock</span>
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-search">
|
||||||
|
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
|
||||||
|
<div class="book-search-spinner hidden"></div>
|
||||||
|
<ul id="book-search-results"></ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/posts/" >
|
||||||
|
Blog
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
|
||||||
|
Aberystwyth MMP Site
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
|
||||||
|
Source Code
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div class="book-page">
|
||||||
|
<header class="book-header">
|
||||||
|
|
||||||
|
<div class="flex align-center justify-between">
|
||||||
|
<label for="menu-control">
|
||||||
|
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<strong>Week 6</strong>
|
||||||
|
|
||||||
|
<label for="toc-control">
|
||||||
|
|
||||||
|
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
|
||||||
|
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="hidden clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#transfer-learning-model-architecture">Transfer learning model architecture</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#full">Full</a></li>
|
||||||
|
<li><a href="#simplified">Simplified</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#validation-and-train-loss-over-20-epochs">Validation and train loss over 20 epochs</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="markdown">
|
||||||
|
<h1>
|
||||||
|
<a href="/posts/week-6/">Week 6</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h5>March 13, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>This week I finished programming the basic CNN model using transfer learning. I decided to train it for 20 epochs to make sure there weren’t any runtime errors in my code. As I don’t own an Nvidia GPU (I have an AMD GPU), I couldn’t make use of the pytorch version that utilised CUDA to speed up processing. There is a RocM version of pytorch for AMD GPUs<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> but RocM isn’t as mature as CUDA and only officially supports a small subset of Linux distributions. Therefore, for this model I trained on the COU for only 20 epochs just to make sure it ran successfully before trying to find some Nvidia compute.</p>
|
||||||
|
<h2 id="transfer-learning-model-architecture">
|
||||||
|
Transfer learning model architecture
|
||||||
|
<a class="anchor" href="#transfer-learning-model-architecture">#</a>
|
||||||
|
</h2>
|
||||||
|
<h3 id="full">
|
||||||
|
Full
|
||||||
|
<a class="anchor" href="#full">#</a>
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
<img src="/transfer-cnn-arch.svg" alt="Transfer learning architecture" /></p>
|
||||||
|
<h3 id="simplified">
|
||||||
|
Simplified
|
||||||
|
<a class="anchor" href="#simplified">#</a>
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
<img src="/transfer-cnn-arch-simpl.svg" alt="Simplified Transfer learning architecture" /></p>
|
||||||
|
<h2 id="validation-and-train-loss-over-20-epochs">
|
||||||
|
Validation and train loss over 20 epochs
|
||||||
|
<a class="anchor" href="#validation-and-train-loss-over-20-epochs">#</a>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
<img src="/20-epoch-plot.png" alt="plot of training and validation loss over 20 epochs" /></p>
|
||||||
|
<section class="footnotes" role="doc-endnotes">
|
||||||
|
<hr>
|
||||||
|
<ol>
|
||||||
|
<li id="fn:1" role="doc-endnote">
|
||||||
|
<p>
|
||||||
|
<a href="https://pytorch.org/blog/pytorch-for-amd-rocm-platform-now-available-as-python-package/">https://pytorch.org/blog/pytorch-for-amd-rocm-platform-now-available-as-python-package/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="book-footer">
|
||||||
|
|
||||||
|
<div class="flex flex-wrap justify-between">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-comments">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label for="menu-control" class="hidden book-menu-overlay"></label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="book-toc">
|
||||||
|
<div class="book-toc-content">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#transfer-learning-model-architecture">Transfer learning model architecture</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#full">Full</a></li>
|
||||||
|
<li><a href="#simplified">Simplified</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#validation-and-train-loss-over-20-epochs">Validation and train loss over 20 epochs</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
274
public/posts/week-7/index.html
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn’t want to use these as I didn’t want my code to be dependent on the specific ways cloud platforms want the code in.">
|
||||||
|
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 7" />
|
||||||
|
<meta property="og:description" content="Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.
|
||||||
|
My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn’t want to use these as I didn’t want my code to be dependent on the specific ways cloud platforms want the code in." />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-7/" /><meta property="article:section" content="posts" />
|
||||||
|
<meta property="article:published_time" content="2022-03-20T12:40:18+01:00" />
|
||||||
|
<meta property="article:modified_time" content="2022-03-20T12:40:18+01:00" />
|
||||||
|
|
||||||
|
<title>Week 7 | MMP | Oscar Pocock</title>
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
|
<!--
|
||||||
|
Made with Book Theme
|
||||||
|
https://github.com/alex-shpak/hugo-book
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body dir="ltr">
|
||||||
|
<input type="checkbox" class="hidden toggle" id="menu-control" />
|
||||||
|
<input type="checkbox" class="hidden toggle" id="toc-control" />
|
||||||
|
<main class="container flex">
|
||||||
|
<aside class="book-menu">
|
||||||
|
<div class="book-menu-content">
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<h2 class="book-brand">
|
||||||
|
<a href="/"><span>MMP | Oscar Pocock</span>
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-search">
|
||||||
|
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
|
||||||
|
<div class="book-search-spinner hidden"></div>
|
||||||
|
<ul id="book-search-results"></ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/posts/" >
|
||||||
|
Blog
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
|
||||||
|
Aberystwyth MMP Site
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
|
||||||
|
Source Code
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div class="book-page">
|
||||||
|
<header class="book-header">
|
||||||
|
|
||||||
|
<div class="flex align-center justify-between">
|
||||||
|
<label for="menu-control">
|
||||||
|
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<strong>Week 7</strong>
|
||||||
|
|
||||||
|
<label for="toc-control">
|
||||||
|
|
||||||
|
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
|
||||||
|
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="hidden clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents"></nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="markdown">
|
||||||
|
<h1>
|
||||||
|
<a href="/posts/week-7/">Week 7</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h5>March 20, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Now that I had successfully run my model without any runtime errors, the next step this week was finding some GPU compute so I can train my model on much more powerful hardware to accelerate the training.</p>
|
||||||
|
<p>My first idea was to use cloud computing. There are machine learning specific cloud technologies, but I didn’t want to use these as I didn’t want my code to be dependent on the specific ways cloud platforms want the code in. Instead, I wanted to get a general VM with an attached GPU where I could run my workloads manually. I had already written docker images that contained all the depencies of my code that I could deploy to these VMs to ensure a reproducible and portable environment.</p>
|
||||||
|
<p>First place I looked was
|
||||||
|
<a href="https://www.linode.com/products/gpu/">Linode</a>. Although, after I contacted their support about it they said I needed at least $100 of transactions on my account in order to request access to their GPU instances. They also noted I could make a deposit of $100 to start using them straight away. I wasn’t sure if my model was going to use up $100 to train yet so I didn’t want to risk it.</p>
|
||||||
|
<p>I then looked to
|
||||||
|
<a href="https://azure.microsoft.com">Microsoft’s Azure</a>. I had used Azure during my industrial year and had previously passed the fundamentals and associate administrator exams for the platform so felt fairly confident in using it for my project. I ran into some issues I couldn’t quite explain at the start of the week. For some reason no services were available for me to use. I couldn’t use any VMs, create any networks or drives etc… Turns out I noticed that my UK account was defaulting to trying to create resources in the US which I didn’t have access to. So I had to manually set my location to the UK in order to create any resources.</p>
|
||||||
|
<p>While I was trying to work out the issue with Azure, I looked at using
|
||||||
|
<a href="https://cloud.google.com">GCP</a>. GCP automatically sets new accounts to have a quota of 0 for GPUs. Meaning you can’t attach one to any VM. You can increase the quota which requires getting in contact with customer support. Within 10 minutes I got a response and my quota was increases by 1. I wrote
|
||||||
|
<a href="https://www.terraform.io/">Terraform</a> IaC (Infrastructure as Code) to automatically spin up and spin down cloud resources quickly.</p>
|
||||||
|
<p>At this point I realised my code wasn’t very portable as it included hard-coded absolute paths among other things. I refactored a lot of my code in order to run it on any machine. I was also granted access to the university’s GPU compute servers which allowed me to train my model without paying for cloud fees. To make sure my refactoring worked and that the GPU was actually being utilised during training, I rain the training script on the uni’s GPU compute server for 20 epochs. It successfully finished in ~13 minutes.</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="book-footer">
|
||||||
|
|
||||||
|
<div class="flex flex-wrap justify-between">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-comments">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label for="menu-control" class="hidden book-menu-overlay"></label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="book-toc">
|
||||||
|
<div class="book-toc-content">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents"></nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
329
public/posts/week-8/index.html
Normal file
|
@ -0,0 +1,329 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Monday # Towards the end of last week ( Week 7), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni’s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.">
|
||||||
|
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Week 8" />
|
||||||
|
<meta property="og:description" content="Monday # Towards the end of last week ( Week 7), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni’s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead." />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://mmp.oscar.blue/posts/week-8/" /><meta property="article:section" content="posts" />
|
||||||
|
<meta property="article:published_time" content="2022-03-27T13:13:48+01:00" />
|
||||||
|
<meta property="article:modified_time" content="2022-03-27T13:13:48+01:00" />
|
||||||
|
|
||||||
|
<title>Week 8 | MMP | Oscar Pocock</title>
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
|
<!--
|
||||||
|
Made with Book Theme
|
||||||
|
https://github.com/alex-shpak/hugo-book
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body dir="ltr">
|
||||||
|
<input type="checkbox" class="hidden toggle" id="menu-control" />
|
||||||
|
<input type="checkbox" class="hidden toggle" id="toc-control" />
|
||||||
|
<main class="container flex">
|
||||||
|
<aside class="book-menu">
|
||||||
|
<div class="book-menu-content">
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<h2 class="book-brand">
|
||||||
|
<a href="/"><span>MMP | Oscar Pocock</span>
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-search">
|
||||||
|
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
|
||||||
|
<div class="book-search-spinner hidden"></div>
|
||||||
|
<ul id="book-search-results"></ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/developer/" class="">Developer Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="book-section-flat" >
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://mmp.oscar.blue/docs/user/" class="">User Documentation</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/posts/" >
|
||||||
|
Blog
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://teaching.dcs.aber.ac.uk/mmp" target="_blank" rel="noopener">
|
||||||
|
Aberystwyth MMP Site
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="https://git.oscar.blue" target="_blank" rel="noopener">
|
||||||
|
Source Code
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div class="book-page">
|
||||||
|
<header class="book-header">
|
||||||
|
|
||||||
|
<div class="flex align-center justify-between">
|
||||||
|
<label for="menu-control">
|
||||||
|
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<strong>Week 8</strong>
|
||||||
|
|
||||||
|
<label for="toc-control">
|
||||||
|
|
||||||
|
<img src="/svg/toc.svg" class="book-icon" alt="Table of Contents" />
|
||||||
|
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="hidden clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#monday">Monday</a></li>
|
||||||
|
<li><a href="#tuesday">Tuesday</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#training-and-validation-loss-graphs">Training and validation loss graphs</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#wednesday">Wednesday</a></li>
|
||||||
|
<li><a href="#rest-of-week">Rest of week</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="markdown">
|
||||||
|
<h1>
|
||||||
|
<a href="/posts/week-8/">Week 8</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h5>March 27, 2022</h5>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="monday">
|
||||||
|
Monday
|
||||||
|
<a class="anchor" href="#monday">#</a>
|
||||||
|
</h1>
|
||||||
|
<p>Towards the end of last week (
|
||||||
|
<a href="../week-7">Week 7</a>), I managed to refactor my code in order to make it more portable. This allowed me to train my model on different machines. I ran my training script on the uni’s GPU compute successfully for 20 epochs. The next stage was to train it for longer and analyse the results. On the Monday morning I adjusted the parameters of my training script to train for 2000 epochs instead.</p>
|
||||||
|
<h1 id="tuesday">
|
||||||
|
Tuesday
|
||||||
|
<a class="anchor" href="#tuesday">#</a>
|
||||||
|
</h1>
|
||||||
|
<p>Tuesday afternoon the training had finished and I had a model that was trained on 2000 epochs. This gave me a day to analyse the results and do some rough predictions before my mid-project demo on the Wednesday.</p>
|
||||||
|
<h2 id="training-and-validation-loss-graphs">
|
||||||
|
Training and validation loss graphs
|
||||||
|
<a class="anchor" href="#training-and-validation-loss-graphs">#</a>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
<img src="/20-epoch-plot.png" alt="training and validation loss 20 epochs" />
|
||||||
|
|
||||||
|
<img src="/2000-epoch-plot.png" alt="training and validation loss 2000 epochs" /></p>
|
||||||
|
<p>As we can see from the 2000 Epochs graph, the loss seems to plateau at around 60 epochs. The training loss seems to even out with more accuracy than the validation loss. This means that our data isn’t fully learning what I want it to. Also it’s overfitting slightly as it’s better at predicting the training set than the validation set. The variance in the validation set shows that the features it’s decided to learn aren’t the right features to confidently predict aesthetics in this dataset.</p>
|
||||||
|
<p>For the rest of the day I worked on my prediction script so I could use the model to predict new pictures. I also worked on my architecture diagrams and slides for the mid-project demo.</p>
|
||||||
|
<p>
|
||||||
|
<img src="/predictions.png" alt="images with prediction scores" /></p>
|
||||||
|
<p>Due to the nature of how I processed my images (resizing them to 32x32 and then saving them to a tensor then saving them to disk), my prediction script also displayed those down-sized images. This may have also effected the performance of the model.</p>
|
||||||
|
<h1 id="wednesday">
|
||||||
|
Wednesday
|
||||||
|
<a class="anchor" href="#wednesday">#</a>
|
||||||
|
</h1>
|
||||||
|
<p>I spent most of Wednesday morning finishing my slides, diagrams and making example predictions using the prediction script.</p>
|
||||||
|
<p>
|
||||||
|
<img src="/project-model.svg" alt="overall project architecture" /></p>
|
||||||
|
<h1 id="rest-of-week">
|
||||||
|
Rest of week
|
||||||
|
<a class="anchor" href="#rest-of-week">#</a>
|
||||||
|
</h1>
|
||||||
|
<p>I spent the rest of the week looking at the project’s overall pipeline including the non-machine learning filtering. I also started to implement basic focus detection by looking at blur detection using the Laplacian operator<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
|
||||||
|
<section class="footnotes" role="doc-endnotes">
|
||||||
|
<hr>
|
||||||
|
<ol>
|
||||||
|
<li id="fn:1" role="doc-endnote">
|
||||||
|
<p>
|
||||||
|
<a href="https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/">https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/</a> <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="book-footer">
|
||||||
|
|
||||||
|
<div class="flex flex-wrap justify-between">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="book-comments">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label for="menu-control" class="hidden book-menu-overlay"></label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="book-toc">
|
||||||
|
<div class="book-toc-content">
|
||||||
|
|
||||||
|
|
||||||
|
<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#monday">Monday</a></li>
|
||||||
|
<li><a href="#tuesday">Tuesday</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#training-and-validation-loss-graphs">Training and validation loss graphs</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#wednesday">Wednesday</a></li>
|
||||||
|
<li><a href="#rest-of-week">Rest of week</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
public/predictions.png
(Stored with Git LFS)
Normal file
3962
public/project-model.svg
Normal file
After Width: | Height: | Size: 140 KiB |
|
@ -7,13 +7,25 @@
|
||||||
<loc>https://mmp.oscar.blue/docs/user/</loc>
|
<loc>https://mmp.oscar.blue/docs/user/</loc>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://mmp.oscar.blue/posts/</loc>
|
<loc>https://mmp.oscar.blue/posts/</loc>
|
||||||
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
|
<lastmod>2022-03-27T13:13:48+01:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://mmp.oscar.blue/</loc>
|
<loc>https://mmp.oscar.blue/</loc>
|
||||||
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
|
<lastmod>2022-03-27T13:13:48+01:00</lastmod>
|
||||||
|
</url><url>
|
||||||
|
<loc>https://mmp.oscar.blue/posts/week-8/</loc>
|
||||||
|
<lastmod>2022-03-27T13:13:48+01:00</lastmod>
|
||||||
|
</url><url>
|
||||||
|
<loc>https://mmp.oscar.blue/posts/week-7/</loc>
|
||||||
|
<lastmod>2022-03-20T12:40:18+01:00</lastmod>
|
||||||
|
</url><url>
|
||||||
|
<loc>https://mmp.oscar.blue/posts/week-6/</loc>
|
||||||
|
<lastmod>2022-03-13T12:40:17+01:00</lastmod>
|
||||||
|
</url><url>
|
||||||
|
<loc>https://mmp.oscar.blue/posts/week-5/</loc>
|
||||||
|
<lastmod>2022-03-06T12:40:14+01:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://mmp.oscar.blue/posts/week-4/</loc>
|
<loc>https://mmp.oscar.blue/posts/week-4/</loc>
|
||||||
<lastmod>2022-02-23T12:46:59+00:00</lastmod>
|
<lastmod>2022-02-27T12:46:59+00:00</lastmod>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>https://mmp.oscar.blue/posts/week-3/</loc>
|
<loc>https://mmp.oscar.blue/posts/week-3/</loc>
|
||||||
<lastmod>2022-02-20T12:46:55+00:00</lastmod>
|
<lastmod>2022-02-20T12:46:55+00:00</lastmod>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="en" dir="ltr">
|
<html lang="en" dir="ltr">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="generator" content="Hugo 0.92.2" />
|
<meta name="generator" content="Hugo 0.95.0" />
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
<link rel="icon" href="/favicon.png" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
<link rel="stylesheet" href="/book.min.68be0b7a9674f2a612ce0e9b2e9447ff4b7ac96546e06b642bfd3ded0ca490ef.css" integrity="sha256-aL4LepZ08qYSzg6bLpRH/0t6yWVG4GtkK/097QykkO8=">
|
||||||
<script defer src="/en.search.min.80be17279d14dad4bbcfd127989995f2186e0298e7d5efb2330c1ffbda3a4044.js" integrity="sha256-gL4XJ50U2tS7z9EnmJmV8hhuApjn1e+yMwwf+9o6QEQ="></script>
|
<script defer src="/en.search.min.6bd18a0f048eff9ca273fd5ac40fe7159f145a30edf28a0847cab90265bd241a.js" integrity="sha256-a9GKDwSO/5yic/1axA/nFZ8UWjDt8ooIR8q5AmW9JBo="></script>
|
||||||
|
|
||||||
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
<script defer src="/sw.min.6f6f90fcb8eb1c49ec389838e6b801d0de19430b8e516902f8d75c3c8bd98739.js" integrity="sha256-b2+Q/LjrHEnsOJg45rgB0N4ZQwuOUWkC+NdcPIvZhzk="></script>
|
||||||
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/tags/index.xml" title="MMP | Oscar Pocock" />
|
<link rel="alternate" type="application/rss+xml" href="https://mmp.oscar.blue/tags/index.xml" title="MMP | Oscar Pocock" />
|
||||||
|
@ -145,7 +145,7 @@ https://github.com/alex-shpak/hugo-book
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script>(function(){var a=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
<script>(function(){var e=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1,10 @@
|
||||||
<!DOCTYPE html><html><head><title>https://mmp.oscar.blue/tags/</title><link rel="canonical" href="https://mmp.oscar.blue/tags/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/tags/" /></head></html>
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>https://mmp.oscar.blue/tags/</title>
|
||||||
|
<link rel="canonical" href="https://mmp.oscar.blue/tags/">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="refresh" content="0; url=https://mmp.oscar.blue/tags/">
|
||||||
|
</head>
|
||||||
|
</html>
|
||||||
|
|
2761
public/transfer-cnn-arch-simpl.svg
Normal file
After Width: | Height: | Size: 112 KiB |
6675
public/transfer-cnn-arch.svg
Normal file
After Width: | Height: | Size: 272 KiB |
BIN
static/20-epoch-plot.png
(Stored with Git LFS)
Normal file
BIN
static/2000-epoch-plot.png
(Stored with Git LFS)
Normal file
BIN
static/predictions.png
(Stored with Git LFS)
Normal file
3962
static/project-model.svg
Normal file
After Width: | Height: | Size: 140 KiB |
2761
static/transfer-cnn-arch-simpl.svg
Normal file
After Width: | Height: | Size: 112 KiB |
6675
static/transfer-cnn-arch.svg
Normal file
After Width: | Height: | Size: 272 KiB |