diff --git a/readme.md b/readme.md index e0a8675..daa2a34 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ # First-Break Picking Using Deep Learning This repository is used to implement first-break (FB) picking task using deep learning. -For this purpose, we used a U-net to segment the data as before and after first arrivals. +For this purpose, we use a U-net to segment the data as before and after first arrivals. - [First-Break Picking Using Deep Learning](#first-break-picking-using-deep-learning) - [1. Installation](#1-installation) @@ -12,7 +12,7 @@ For this purpose, we used a U-net to segment the data as before and after first - [2.3 Training for FB picking](#23-training-for-fb-picking) - [2.4 Predicting the first break of one seismic shot](#24-predicting-the-first-break-of-one-seismic-shot) -In a seismic shot record, the first arrival is usually the direct wave from the source followed by refractions (Figure 1). The travel time of a seismic wave from a source to a geophone is called first break. First breaks are invaluable source of information in near surface studies. We can employ first breaks to obtain a velocity model of the near surface. In addition to the importance of first breaks for refraction inversion and understanding the characteristics of the near surface, they can be employed to perform a successful reflection seismic processing and multi-channel analysis of surface waves (MASW). +In a seismic shot record, the first arrival is usually the direct wave from the source followed by refractions (Figure 1). The travel time of a seismic wave from a source to a geophone is called first break. First breaks are invaluable sources of information in near-surface studies. We can employ first breaks to obtain a velocity model of the near-surface. In addition to the importance of first breaks for refraction inversion and understanding the characteristics of the near-surface, they can be employed to perform a successful reflection seismic processing and multi-channel analysis of surface waves (MASW). ![Alt text](./readme_files/waves.png) @@ -23,7 +23,7 @@ pip install git+https://github.com/geo-stack/first_break_picking.git ``` ## 2. First-Break Picking -We solve the first-break picking as a segmentation problem. It means, we have two segments, +We solve the first-break picking as a segmentation problem. It means that we have two segments, 1. before FB, 2. after FB. @@ -33,7 +33,7 @@ In this way, FB can be picked as the interface between two segments. In the next sections, we see how to prepare the dataset and the processing steps that can be done to improve the accuracy of the results. ### 2.1 Initial data files -To use this package, user needs to prepare the dataset apropriately. +To use this package, a user needs to prepare the dataset appropriately. In one folder, we need to have the seismic data and corresponding FB (for training) in `.npy` and `.txt` format. An example of the first-break file can be seen in the following figure. @@ -46,15 +46,15 @@ After preparing the initial data files in `.npy` and `.txt` formats, we can perf ![data_preprocessing](./readme_files/fb_data_preparing.png) -- We have a great data imbalance which leads to decrease of the accuracy. To deal with this problem, we crop the data (a) to generate data presented in (b). For this purpose, `save_shots_fb` gets an argument called `time_window` which gets a list with two integer value showing the beginning and the end of cropping window (in terms of sample and NOT time). Basically, the first element of this list should be `0`. For example, I use `time_window = [0, 512]`. -- In the next step, we scale the data to increase the accuracy and ease of the learning. This step leads to the image (c). To do so, user can use two arguments, `scale` and `grayscale`, which are boolean and should be set on `True`. -- For data augmentation, we divide each seismic shot to some subimages with an specific overlap (e and d). For this purpose, `save_shots_fb` get `split_nt` to specify number of columns in each subimage and `overlap` which defines the overlap of subimages in terms of percentage, between `0.0` to `1.0`. I usually use `overlap = 0.15`. For shots with 48 traces, I use `split_nt = 22`, but in case of shots with more traces, we can use larger value for `split_nt`. -- It is really important to provide `save_shots_fb` with correct value for the sampling rate as `dt`. +- We have a great data imbalance which leads to a decrease in accuracy. To deal with this problem, we crop the data (a) to generate data presented in (b). For this purpose, `save_shots_fb` gets an argument called `time_window` which gets a list with two integer values showing the beginning and the end of the cropping window (in terms of sample and NOT time). Basically, the first element of this list should be `0`. For example, I use `time_window = [0, 512]`. +- In the next step, we scale the data to increase the accuracy and ease of learning. This step leads to the image (c). To do so, user can use two arguments, `scale` and `grayscale`, which are boolean and should be set to `True`. +- For data augmentation, we divide each seismic shot into some subimages with a specific overlap (e and d). For this purpose, `save_shots_fb` gets `split_nt` to specify the number of columns in each subimage and `overlap` which defines the overlap of subimages in terms of percentage, between `0.0` to `1.0`. I usually use `overlap = 0.15`. For shots with 48 traces, I use `split_nt = 22`, but in the case of shots with more traces, we can use a larger value for `split_nt`. +- It is really important to provide `save_shots_fb` with the correct value for the sampling rate as `dt`. - This function also gets two other arguments to specify the extension of shot and first-break files as `shot_ext` and `fb_ext`. This can be used to develop the code easily in case we want to load `.segy` or `.json` files. - `save_shots_fb` saves the processed data at `dir_to_save`. -So, here it is how to call this function, +So, here is how to call this function, ```Python from first_break_picking.data import save_shots_fb @@ -82,22 +82,22 @@ Here is an example of saved data for a project. ![files](./readme_files/fb_preprocessed_data.png)