 Thanks everyone for joining this seminar, this CSDMS seminar systems, as it's brilliantly known. If you're not aware of CSDMS already, then I strongly encourage you to get involved in that group, especially if you like computers and especially if you like modeling, or modeling is something that you do as part of your wider research. This invitation actually to give this talk actually came off of the clinic that I gave at the last system Daniel meeting, which was super fun. This is my first plug of the talk. I'm going to be giving a clinic on deep learning methods for landscape classification, mixed systems meeting in May of 2020, so get that on the calendars. If you're interested in that sort of thing. My name is Daniel Baskin, I'm at Northern Arizona University and I work on many topics, one of which is the application of machine learning to, I guess, lots of different problems. In this particular example is coastal hydrodynamics, apologies if you tuned in or you signed up for this talk and you were sort of hooked by the stream flow aspect. Originally, I had intended to talk a little bit about stream flow, but for various reasons, some of which are bureaucratic, I'm not able to give that talk. So I've modified things slightly, I'm going to give a longer talk about continuous wave monitoring from timelapse cameras using deep neural networks, but a lot of what I have to say has actually direct relevance to a similar application to stream flow. So what I'm actually going to be talking about today is continuous monitoring of near shore waves. In the surf zone, waves are actually relatively rarely measured, they are often modeled. Measurement in the surf zone is logistically very difficult and can be very dangerous, especially during storms. And so therefore, deployments such as in the photo here at the sand motor, they tend to be short lived, discreet in location, et cetera, et cetera. And so more often waves in the surf zone, at least the outer surf zone, through to the break point, and the squash, they're modeled, but the boundary conditions to those models, those numerical wave models and the circulation models that drive sediment transport, morphological change predictions, is a continuous input of wave height and period in particular. They are the two fundamental quantities of waves that drive near shore numerical models. And those models are used obviously for management operations and decision making. There's three big areas that those models are used in an operational sense, of course there's risks the beach goes, dangerous surf conditions such as rip currents, safe navigation is another big one, boating, water quality is another big one. The surf zone tends to retain very nasty things that can make you very ill. So for lots of reasons, continuous monitoring of near shore waves is operationally and for research purposes an extremely important quantity to get a handle on and to measure basically as often and as frequently and as in as many places as you possibly can. So what I'm going to be talking about today is a proof of concept technique that I've developed with my collaborators over the last year or so that I'm calling optical wave paging. It's a prototype technique for basic monitoring of coastal hydroponics. So far it's been tested on wave height and period, which is what I'm going to be showing you today. I've done some preliminary work with wave direction and also tide, which seems to be promising, which I'm not going to show you today. And all of this from relatively inexpensive time lapse cameras. What I'm after is a technique that is not so sensitive to the camera itself, the treatment of data, the camera geometry. I want something simple and relatively inexpensive. So I want to develop a method that is able to use consumer grade cameras. I wanted to be configurable for estimating a number of different quantities from the near shore, especially those ones that have been traditionally very difficult to estimate such as wave height. And I wanted to be able to take as inputs arbitrary images, things that necessarily don't have a regular spatial footprint, not necessarily always looking at the same scene, the same vantage, et cetera. And I'll talk a lot about that in this talk, about my vision of how we might get there. Very strange talking to a silent and anonymous room, let's say. So my talk outline, first I'm going to talk a little bit about what I call data informed, physically based monitoring of near shore waves. Coastal imaging, video imaging of the coast has been a thing for several decades now in many, many groups who've been working actively on measuring a whole suite of relevant near shore information, both hydrodynamic and bathymetric. I'm going to talk a little bit about data driven approach to the same problem, which is what optical wave gauging is. I'll define the problem as estimating wave height or period from a single image and then chaining those images or those estimates together to form time series. I'll talk a little bit about the model design. This isn't the low level computer science talk. This is very much the high level coastal science talk. But I will talk a bit about the model, how it was implemented, how we trained it, and its relative advantages and disadvantages. The data sets, I've got three different data sets that I initially tried this model on, the results and the implications for coastal monitoring is something I really want to talk about a lot. I'll make a plug for the software that I've developed to implement this technique, which is an open source. And I'll talk about the journal article, which was published, is now in press in coastal engineering. And in the end, I'll talk a little bit about where this research is going and how interested folks might be able to collaborate with me. My co-conspirators on this project have been Sean Harrison, who formerly at the USGS Coastal Marine Science Center, and now at Naval Research Laboratory, Sanis, Mississippi. John Warwick, who's at the USGS Pacific Coastal Marine Science Center in Santa Cruz, California. Roxanne Perini, who I started this work with. She was at the applied physics lab, University of Washington, now at the marine mammal conservation. Group, and Chris Checkadel, who's at the applied physics lab, University of Washington, almost Roxanne's PhD advisor. Thanks especially to Chris Sherwood, who has been very supportive and helpful during the development of this technique. I got funding from the Earth Science Information Partners and the other funding mechanisms that I'm going to show up there for my project partners. So data-informed monitored initial waves. This has been the dominant paradigm in coastal remote sensing for a while now, since at least the early 90s. This approach says, if I can obtain enough examples of data of remotely sensed waves and design an algorithm to extract the information I need to inform a physically-based model, I extract information from the images that then directly go into a physics-based model or a parametric model that's informed by physics. Then you can essentially make measurements from those images. Oops, sorry. So this cartoon really shows that process. You have your imagery. You extract features from that imagery, which usually requires that that imagery is set up to collect in a very structured way. And you combine those extracted features with theory to generate time series of the quantity that are interested in it. This is very much the case for remote sensing of niche or with video. Imagery is very structured in its collection. The camera doesn't move. Typically, the geometry of those cameras and the scene is modeled heavily in order to get a rectified image. You measure a physical quantity from that image or from a time series of that image that you can either directly measure from the scaled image, like a propagating wave. Or you infer its physical properties from a statistical analysis. But it's, again, it's sort of a statistical physics problem. Natural surface zones are very complex. Lighting is variation in lighting is a huge problem and variation of image features with respect to that scene can vary enormously. And so designing an algorithm that is robust to noise, that can really capture the image features that relate to the physics of the problem. That can be a very time consuming exercise. But it has been used with success repeatedly in the coastal zone, but with some important failings. Here's an example of what I'm talking about. Stockton and Holman 2000 is a great example of using physics and statistics together to come up with a way to measure the nature. It focuses on initial wave speed. It took a time series of Augusta images of the surf zone, cut a line through and then stack that line, the intensity of the image along that line. They stack that in time. So you get a cross shore image intensity map that looks like that. It's a spatiotemporal map of the intensity of the image associated with the propagating waves. And you can see the diagonal streaks in there as associated with those waves that are propagating it. You conduct a Fourier analysis on that data. You're able to tease out the amplitude and the phase as a function of cross shore position. And with principal component analysis, you take those, the first complex eigenvector associated with the ordination. And you can relate the phase of the waves to the wave number and then to wave speed using physics. However, there's a number of different aspects to this. And I'm not picking on this method. This is very typical of many methods in the initial zone that are essentially sensitive, very sensitive to image intensity and noise. First, you have imperfect basis functions. It's difficult to model real waves with quite signs and cosines without there being a lot of energy not associated in the spectrum with those propagating waves. In the PCA analysis, you sort of have to assume that all of the relevant information is in the first eigenvector, which is not necessarily the case. And when you're computing, when you're relating phase to wave number, you have to compute spatial gradients which are very tiny and overly sensitive to noise. That's sort of typical of what I sort of taught called the data-informed approach or the physics-informed approach. So structured imagery seems to be a key for a lot of these methods. There should be some structure to the data collection and fixed cameras, therefore a fixed vantage or fixed perspective and a constant pixel size when you rectify the image. And various methods have been proposed for wave speed, wave height, wave direction, et cetera, et cetera. Using arrays, either looking at the intensity of one pixel over time, the intensity of pixels in groups and grids, in lines, et cetera. They all require some spatial and geometric transformation of the imagery. Optical wave gauging is a data-driven approach that takes the data and then analysis is informed by the data, not by the physics of the program. And that is essentially what machine learning is. It's a way to, at least in our field, it's a way to really circumnavigate or circumvent the necessity, let's say, of requiring a physical approach to the problem, which is, of course, necessary if you wish to gain any fundamental understanding of the problem. But I would argue it's not necessary if you simply want to just monitor the phenomenon that you're interested in. And machine learning is a way to map one type of data. In our case, instrumental observation of waves to another type of data, unstructured images of those waves or structured images of those waves. And a lot of the literature will tell us that this will work even if the relationships between the two data sets are extremely non-linear, if the data is noisy. So it seems like a good opportunity to test this out in the server. And what a data-driven approach does that a data-informed approach does not, is instead of optimizing the data itself, coming up with a way to manually filter the data or extract some spatial information from the data or some temporal information from the data in an organized and a structured way that relates to the physics of the problem. This time we don't do that. We don't optimize the data whatsoever. Instead, we're just optimizing the model. And in fact, all we're doing is facilitating the model to optimize itself. And that's what machine learning does. It's a way you set up the problem and it tries to figure out the answer on its own from the data by matching, by minimizing the discrepancies between the observations and the estimates of those. And all deep learning really is, is very large neural networks. Machine learning has a number of different methods that it employs as a sort of apparent classification of deep learning, one of which is simple neural networks of one layer, one hidden layer. Deep learning is, all it is, is just the expansion of those neural networks on a huge scale so that you have many, many, many hundreds of hidden layers or even thousands of hidden layers within the model that each need to be optimized to minimize the discrepancy between the inputs that you're giving it and the outputs that you expect. So in our case, we take an input image which is 2D or 3D and we flatten it into a 1D vector. And on the other side of the, as our inputs and on the other side of the network, we place the observed wave height or period or whatever the quantity is of interest. We use back propagation to adjust the weights and the biases of the whole network going back from the estimate all the way back to the input. By doing so, we put in our hidden layers, we place a number of different architectures that are designed to extract automatically the features from the images that are going to minimize the discrepancy between the observation and the estimate. Those layers are typically called convolutional layers and I'll talk a little bit about what they are. So a data-driven approach to monitoring the initial wave says, if I can obtain enough clear instance examples of actual wave measurements and imagery together at the same place, then I can teach a model to teach itself how to make those measurements from the imagery by first simulating those measurements. So the previous scenario of extracting features and then informing theory is now replaced by a simpler extraction of features that informs a model that is able to correct itself. So it's a slightly different philosophy but I wanted to draw some parallels between the traditional data-informed approach and the emerging machine learning approach. So a data-informed approach needs data to develop it and to validate it but it might only need a small amount of data to develop the methods and typically would use a large amount of data to validate the method. Features are manually or semi-automatically or in some cases automatically extracted from those data but the feature extraction is strongly related and obviously tailored to the physical quantity of interest. So it is obviously a physically interpretable solution that can be used for both monitoring and understanding the fundamentals of the problem, I think. Whereas a data-driven approach likewise needs a lot of data to develop the method, a lot of data to validate the method and probably a lot more data in general but those features are automatically extracted this time and a lot of the work then becomes into designing the architecture that is going to do that automatic extraction rather than designing a statistical or physical technique that will do the extraction. And this time, the model itself doesn't care about the physical quantity, it's just numbers. And so the question is, are those models physically interpretable? I'm excited at the moment. I sort of feel like we're at the start of the age of coastal remote sensing. I've been out of the coastal world for a few years and I'm sort of slowly coming back into things because I'm excited about the new techniques that are out there and especially at the scale at which they're being applied. A couple of examples I'm gonna show you. One is by Warwick et al. this year in landslides that use the amazing four-dimensional time series of landslides in Big Sur to quantify that whole catastrophic event and then to directly inform the management of where to put the road. Here's a figure that I took from a proposal that really just illustrates how a lot of amazing geospatial technologies and remote sensing technologies are available to coastal researchers now. As well as initial video monitoring, there are ways to invert the signals from video to estimate the symmetry and break and wave dissipation. And now with drones and UAVs and other types of aerial and satellite platforms are able to get higher and higher DEM resolutions. Which at larger and larger scales. And at really large scales too, from space. Here's an example from Bishop Taylor which has mapped the entire intertidal zone of the Australian continent. Here's another brilliant example from Kylian Voss who's at UNSW in Australia, looking at how he might be able to extract shorelines from Landsat imagery going back decades anywhere on the planet. But wave height has always been a problem. The traditional philosophy of extracting wave height from remote sense data using geometric feature extraction combined with a physically based model hasn't tended to work very well. And no previous technique proposed for wave height has been suitable from estimates and processing image. They always require time series. Stereo imaging is of course a way to get at this in specific examples. But when you have two or more cameras with geometries it is possible to use feature matching to solve the stereo correspondence problem. But it tends to be very sensitive to lighting advantage. And it's also very computationally demanding. So it has so far tended to be applied in very small scales. I want to design a neural network that will automatically and simultaneously extract the features that best predict wave height period from a single image. And I'm interested in the application of this model to estimate an operational quantity such as significant wave height, the average of the top third of waves. But use a whole image in order to estimate that quantity even though that quantity might be varying over the image in time. So I'm interested in the problem of in this particular example that I'm showing here where the waves are measured way up short. I'm interested in how we might be able to use the entire image to provide clues that might better provide estimates of that quantity even though the spatial location is not going to be constrained to the area in which that quantity of interest I want, if that makes any sense. I'll go over that again in a better way later on. But I'm interested in the problem of using that entire image and not clipping it by any means whatsoever. I want to use the entire image from my prediction. And I think I can do that by combining that time series and images with a coincident and co-located instrument wave record like I've already said. Okay, so this is the part where I'm going to talk about the model itself. I've already said that I'm not going to go into too many of the details here, but the cartoon that you can see on the right explains the salient characteristics of model. The outputs of every layer are the inputs of the next. And each block that you can see in that cartoon on the screen is actually, it can be expanded out into its own neural network. That each block there, except a couple at the end, require lots and lots and lots of layers in itself. So the model itself gets to be very large and it's very difficult to show the models. So I've cartoonized things here a little bit. The main thing that the most important part of the model is the base model, which is the base feature extractor extractor. That through repeated application of convolutions and pooling is able to extract the features from the imagery. It is an existing deep learning architecture that has been designed for generic feature extraction from imagery. And I compare a number of different parts. Batch normalization is for regularizing the model. It takes a batch of images during training. That batch can, I had anywhere between 16 and 128 individual images per batch. And by subtracting the mean and dividing by the standard deviation of the batch, you randomly introduce variations in the model train because every image is scaled slightly differently. So it simulates a scenario where you have a very extreme lighting contrast and brightness changes. But by applying the different, by applying a different scaling to the model, the model has to do better at generalizing what it can see. And therefore, the tendency for that model to overfit is reduced. And that's what I call, that's what I mean by model regularization. The outputs of the base model are normalized and then they are pushed through what's called a max pooling layer. There's an error there. There's actually a four-dimensional stack that comes out of the previous layer and it returns a two-dimensional stack of what's called activations of the network. Then randomly half of the neurons, a bad activation are dropped. Again, in order to prevent overfitting, I don't want the model to just learn by memorizing. I want the model to learn by generalizing. And then finally, the fully connected layer, that's your standard multilayer perceptron that is connected to every neuron in the previous layer and that does the estimation. The model is set up such that when the features that arrive at that dense layer, sorry, the features that arrive at that dense layer are linearly scaled to the quantitative interest. The first data set comes from a place called Sunset State Beach near Watsonville in Monterey Bay near Santa Cruz. The time series here collected by Sean Harrison and John Warwick at USGS has been going on for several years. The data set that I used coincided with an ADCP deployment just offshore of the site, about 10 meters of water, over two months. The time series that you can see there I think is every image over that two months. The wave height increased from about 40 centimeters to about two and a half meters, peak wave period between about seven and 23 seconds and that was measured in about 10 meters of water just offshore. An image was collected every 30 minutes and the ADCP measurements were 20 minute bursts every hour so the ADCP data had to be interpolated over the image timestamp. And I just used the most oblique camera too. This is a two camera system. Okay, what you can see here from left to right are example images associated with increasing wave height on the top and increasing wave period on the bottom. You can see that for large wave heights you tend to get a wider surf zone. Of course, the waves start breaking further out. This is a dissipative beach. And for different periods you can see that you get a variation in the number and the spacing of the break point. And possibly more energetic breaking too. Data set two is actually the same data but this time I've combined the two oblique camera views and rectified them onto the horizontal plane and merged them together. So we have an ortho-mosaic of the scene. And this is, of course, covers a larger area. This is about one by one kilometers this time. And by putting the, by transforming the imagery into a regular footprint, you can see you can see very much the faces, the shadows that occur on the front face of the waves, more than you can in the oblique imagery but you still see the same energetic breaking associated with larger wave heights. And for longer wave periods, you do tend to see more organized crests as you'd expect, more regular spacing and of course a wider surf zone as well. So there is a diagnostic texture in these images that we're hoping that the computer can exploit. But why compare two sets of imagery from the same site? Well, that goes back to this question about whether or not the machine learning model really does need to know the physical dimensions of the pixel or the image or whether those dimensions need to be consistent. The computer science literature would definitely imply no but there are very few studies at this point in the application of deep learning in these sort of natural systems. So we made answering my question part of studying. The third data set comes from Roxanne Crini's infrared camera deployment at duck. The imagery comes from a close range thermal camera. So this time you can see that the relatively light portions of the image there are relatively warm but there's a great textual signature of the sea surface that's associated with different ranges of wave energy. This data set came from just two days during a storm that hit duck north Carolina. About a thousand of bleak images over 10 and a half hours were used and the LiDAR that intersected the field of view was used by Roxanne Crini and her PhD. She actually came up with a semi-automated method to estimate the individual wave height period from its wave. And the ranges there are therefore very large because this time we're not looking at a statistical quantity. We're looking at the individual waves themselves. So as the wave height increases, you get larger, sorry, decreasing patch sizes and as the wave period increases you get increasing sizes of patches of water to be more water. Okay, model implementation and training. As I said, I'm not going to talk too much about a lot of the sort of myriad of details that go into training a machine learning model like this. Other than to say that the paper goes into details, a lot more details, and that I use TensorFlow 2 with a Keras front end. Now TensorFlow is a model thing, is a Python software for implementing deep learning where Keras is essentially an easier to use functional API that sits on top of that. The imagery was cropped to very small dimensions because very large batches were used during training and we had to make sure that up to 128 training images and 128 validation images could be held in GPU memory which isn't tourist expensive. And instead of buying more memory we just downrated the size of the images. But subsequently we looked at larger images and it hasn't affected the results too much. But this brings in the question, can the model extrapolate beyond the range of the training data? So in order to answer that, and this was a suggestion of Chris Sherwood's actually, we excluded the top and bottom 5% of wave height and periods during model training to see how well the training model could do at predicting those images. And this of course is simulating a scenario where you're not able to collect enough images or the full range of variability of your wave height period which obviously necessitates sampling for longer in many cases. Of the remaining 90% of the data, 60% we used the training model and 40% we used the validating model. So about 54% of the entire data set was used to train the model in the end. Now I'm getting onto the results slides. I'm gonna show you a series of slides that look a little bit like this. We've got 16 plots. I tested the technique with four different models, base models and four different batch sizes, hence the 16. And each one of those plots shows the actual wave height or period versus the predicted. The black dots are the validation data set and the blues crosses are the extremes, the bottom and top 5% of the quantity of interest. Going from left to right is increasing batch sizes. So it's just a number of images that you give the training each epic. And going from top to bottom is increasing model size. Some of you will be familiar with those names. Those names don't really mean anything other than they are models that are sort of established in the computer science community and are being rapidly adopted by the earth science community. But those models actually have a very, very different numbers of parameters and their architectures are very different. The mobile model has about a million parameters that you can tune. Inception ResNet version two model have to think about a 60 million parameters you can change. And for each one of the data sets and the quantities, we looked at the best performing model just in terms of RMSC. The best performing in this particular case was I gave an RMSC of about 13 centimeters and about 18 centimeters in the out of calibration validation. So that was related to the blue crosses that you can see there. And you can obviously look at this in time series as well. This is a time series from the sunset state site. First week is shown there in set. And you can see that the model tracks fairly well. These are the validation images. And, but you can also see that because we left out examples of extreme waves, the model does tend to underestimate those peaks. This is the same site, but this time for wave period, the best performing RMS era was actually sub second, which we were pretty happy about. Not so good for the out of calibration validation. I'll talk a little bit about that. But again, you can see a large variation in accuracy as a function of model type, batch size, number of parameters. So part of the challenge in interpreting these results is making a determination of how big your model needs to be and how big your batch size needs to be. But there's a strong indication from these results that the batch size does not need to be very large. So for the author Mazebs, we're getting down to 10 centimeter RMS E, the wave period sub second once again. But again, each best model is a slightly different model, base model and batch size. And then for the infrared obliques, the wave hack tends to do really well, especially out of calibration, which is really surprising. And the wave period does really well within calibration, but the model does not generalize very well. So it's therefore not able to predict wave period with particularly good accuracy out of calibration. And I'll talk a little bit about why. But just to summarize all of the best models per data set and per variable, if you were to pick and choose, this is the accuracies that you could possibly attain between about nine and 14 centimeters on wave fight of these particular data, increasing to about 12 to 23 centimeters for out of calibration validation. And then for wave period, slightly worse, little bit more scatter in general, and but overall pretty good, reasonably good anyway, at least out of calibration. I wanted to draw attention to this scatter of points over here that you can see highlighted by the box. The wave mode of wave period, the infrared imagery did not do very well, likely because the field of view is very small. And we think that the, I'll explain in the next slide that, we think that the model was actually using wavelength to predict wave period. And because the field of view is actually smaller than the wavelength in this case, you know, to serve same, then that might explain the massive discrepancy system. Okay, so the accuracy take-homes is that the model is sensitive to choice of base model, but all base models work. Since the paper, we've actually explored several other base models. And one of those is implemented in your software. It's less sensitive to batch size, I think, than base model, but especially for wave period, there's a strong sensitivity of batch size. And the optimal wave bed prediction is reasonably good for out of calibration for wave height. And not so good for wave period. So going back to that research question that I proposed earlier, can the model be used to extrapolate the on the range of train data? It did actually work surprisingly well for wave height. Obviously those features that are scale, that it's able to extract, not so well for wave period, those features don't necessarily scale. But I think it's unreliable at this point. It needs a lot more work. Obviously there's the option of just recording more data to capture more storms or more quiescent periods. But in the end, I think it's gonna require some different approach in order to be able to reliably predict outside of its calibration. So going back to the research question, does the machine learning model need to know the scaling? It does need to know, sorry, it does not need to know, sorry, it does not require a regular pixel size. The oblique imagery worked just as well as the rectified parametric imagery. Also we found that the model, we kept the aspect ratio of the imagery constant. But when we tried playing with that, it didn't affect the model as much as we thought. But obviously that is preferable. But the model of course does require a consistent scene. When all the models are trained, the one model did not predict another site very well. Therefore the models were not transferable between sites. They were obviously dictated by data that they were trained on. Therefore the models are sensitive to very large changes in the scene, such as changing the zoom or the orientation. But the models are not sensitive to small changes in the scene, such as caused by vibrations, small vibrations from a road or from wind, et cetera. Are the models physically interpretable? And this is a question that's on everybody's lips when it comes to deep learning, not just mine. And there's a few different ways that you can get at this. One of which is called class activation map. And there's a way to visualize what neurons are being activated as a result of the model training. An activation map in this sense is just a two-dimensional raster of pixel values. It looks very much like the input image. Relatively bright pixels imply relatively important for estimation. The activation map that we arrived at as a result of model training is shown on the right. And the activation map that we started with is in the middle there. If you were to use that activation map, that would be called transfer learning. That would be essentially starting with a set of weights of the deep learning model that's been inherited by some other training process. And what we saw was that we thought that the model was physically interpretable in this case because we saw consistently when wave height increased, the surf zone width increased, that the pixels that were being highlighted by the, or activated by the network tend to be near the shoreline. This is a dissipative site, so the surf zone is saturated. Therefore, it makes physical sense that the surf zone width would scale to wave height because wave height is controlled by water depth. This time we're showing images of increasing wave period. This time the activations were relatively bright offshore. As the wave period increased, the, I'm getting computer issues here. As the wave height increased, there is more and more of the shoreline sort of masked out and more and more of the offshore period that are more important to the prediction. And that also makes physical sense. We think that if the model is able to estimate wave period from wave length, which you can see, that makes physical sense for this because it's in shallow water. Therefore, the wavelength is proportional to the wave period. But we think the biggest downside is the morphological variability. We think that because the model is used in shoreline areas so heavily, it could be very sensitive to the beach more dynamic state and therefore the relative shoreline position. Therefore, we're recommending that the optical wave gauges be trained using data from multiple seas as it is. And that's what we're looking at now. At the sunset site, we're lucky because we have a pretty good relationship between the measured waves at sunset and the operational wave forecast by the Sea Dip Mops model of for the whole California coast, the operational model of script, oceanography. And I wanted to make a plug for a recent master's thesis and that has documented how variable this site is over the course of about 18 months with the shoreline varying over about 50 meters over that time. And the sandbar, the offshore sandbar location varying about 100 meters. So these state data we're going to be incorporating into our model and training and retraining for different time periods and seeing if we can incorporate the morphological variability there. So just wrapping up now, the software is available online on my GitHub site. It replicates the journal article result and it does more. It does require a GPU to run and at least a train but no GPU is required to make predictions from an existing model. And I've made some Jupyter notebooks that can run in Google Colab if you don't have access to GPU. The coastal engineering paper is now in press and the link is there and I think will be sent around with the video afterwards. So we're happy about that. And the next steps, there's a number of next steps beyond looking at the model sensitivity to time and morphological variability. We're also interested in exploring whether or not this approach can be used with any consumer grade camera, which is the real hope. And whether or not we can make predictions in real time by uploading the model onto a camera system. And by having this model set up using TensorFlow, that makes things a little easier because there are existing technologies that allow us to, for example, port our model onto a smartphone or a single ball computer that might control the camera. It's called TensorFlow Lite. And another thing that allows us to serve our models through internet servers, TensorFlow.js. So there's potentially some interesting and some exciting things on the way. And I wanted to draw some parallels to some other work that's been done on the other side of the world by Mitch Harley and his group, a recent paper in, again, in coastal engineering, CoastNet. This is a citizen science speech monitoring, encouraging folks to put their cell phones within a frame there and take a picture and then give that to the scientists. And then over time, they can use that data to see how the beaches are changing. I wonder if optical wave gauging could be used to crowdsource wave monitoring. You can conceivably think of a situation where you have enough images from folks that contributed their imagery that might be a possibility and just exploring that more. And the reason why I talk so much about structured versus unstructured imagery is because we're in the age of drones. There's lots of coastal research and monitoring uses drones. And I wonder if it's possible to obtain science time series of wave properties from a stationary drone. Well, how about from space? I think these applications would obviously require quite a bit more work, especially developing something that wasn't so sensitive to the camera's specific scene, vantage pose. And I think those sort of generically applicable techniques, they're sort of towards the things that as popularly known as artificial intelligence, where the computer is able to do something a lot smarter than it's currently able to do and actually mimic the sort of behavior that we can get with our eyes and brains. Thank you very much for listening.