Algorithms 12 00115
Algorithms 12 00115
Article
Combining Background Subtraction
and Convolutional Neural Network for Anomaly
Detection in Pumping-Unit Surveillance
Tianming Yu , Jianhua Yang and Wei Lu *
School of Control Science and Engineering, Dalian University of Technology, Dalian 116024, China;
yxm2013@mail.dlut.edu.cn (T.Y.); jianhuay@dlut.edu.cn (J.Y.)
* Correspondence: luwei@dlut.edu.cn
Received: 17 April 2019; Accepted: 24 May 2019; Published: 29 May 2019
Abstract: Background subtraction plays a fundamental role for anomaly detection in video
surveillance, which is able to tell where moving objects are in the video scene. Regrettably, the regular
rotating pumping unit is treated as an abnormal object by the background-subtraction method in
pumping-unit surveillance. As an excellent classifier, a deep convolutional neural network is able
to tell what those objects are. Therefore, we combined background subtraction and a convolutional
neural network to perform anomaly detection for pumping-unit surveillance. In the proposed method,
background subtraction was applied to first extract moving objects. Then, a clustering method was
adopted for extracting different object types that had more movement-foreground objects but fewer
typical targets. Finally, nonpumping unit objects were identified as abnormal objects by the trained
classification network. The experimental results demonstrate that the proposed method can detect
abnormal objects in a pumping-unit scene with high accuracy.
1. Introduction
Anomaly detection in video surveillance has become a public focus. It is an unsupervised learning
task that refers to the problem of identifying abnormal patterns or motions in video data [1–3]. One of the
most effective and frequently used methods of anomaly detection is to adopt background-subtraction
methods in video surveillance. Over the past couple of decades, diverse background-subtraction
methods have been presented by researchers to identify foreground objects in the videos [4–6]. The main
idea of the background-subtraction algorithm is to build a background model [7], compare the current
frame against the background model, and then detect moving objects according to their differences.
There are some representative methods. For instance, Stauffer and Grimson proposed a Gaussian
mixture model (GMM) for background modeling in cases of dynamic scenes, illumination changes,
shaking trees, and so on [8]. Makantasis et al. estimated the thermal responses of each pixel of
thermal imagery as a mixture of Gaussians by a Bayesian approach [9]. Barnich et al. applied random
aggregation to background extraction and proposed the ViBe (visual background extractor) method [10].
In building a samples-based estimation of the background and updating the background models,
ViBe uses a novel random selection strategy that indicates that information between neighboring pixels
can propagate [11,12]. Elgammal et al. presented a nonparametric method based on kernel-density
estimation (KDE) [13]. In this method, it is not necessary to estimate the parameter because it depends
on previously observed pixel values, and there is no need to store the complete data. KDE has
been commonly applied to vision processing, especially in cases where the underlying density
is unknown. Hofmann et al. proposed the pixel-based adaptive segmenter (PBAS) in 2012 [14].
This algorithm, a nonparametric model based on pixels, combines the advantages of ViBe while making
some improvements. It has realized nonparameter moving-object detection, and it is robust to slow
illumination variation. St-Charles et al. proposed self-balanced sensitivity segmenter (SuBSENSE),
which uses the principle of sample consistency and a feedback mechanism, which means that this
background model can adapt to the diversity of complex backgrounds [15].
These existing background-subtraction methods are used to detect foreground objects in many
applications showing good performance. However, in pumping-unit surveillance, the rotating pumping
unit is judged as a foreground object when a traditional background-subtraction method is used
for anomaly detection. Because the traditional background-subtraction method cannot obviate the
interference of a rotating pumping unit, this results in losing the purpose of anomaly monitoring in
video surveillance. On the other hand, intelligent monitoring systems are capable to detect unknown
object types or unusual scenarios, whereas traditional background-subtraction methods can only
provide the regions of abnormal objects and not give their specific category. Thus, the regions
of interest, which are extracted from the image background by background-subtraction methods,
need further processing.
In recent years, deep learning has made remarkable achievements in the field of computer vision.
Deep learning is widely used in image recognition, object detection and classification [16,17]. This has
achieved state-of-the-art results in those fields. GoogLeNet [18] is a deep convolutional neural network
(CNN) [19]-based system that has been used in object recognition.
In this paper, we combined background subtraction and a CNN for anomaly detection in
pumping-unit surveillance. In the proposed method, the background-subtraction method is used to
extract motion objects in scenes, and a CNN identifies motion objects. A large quantity of samples is
needed to train a deep CNN, but in practical application, it is always hard to provide enough samples.
Therefore, a pretrained fine-tuned CNN was used in the proposed method.
The rest of this paper is organized as follows. Section 2 gives a brief introduction of pumping-unit
surveillance. Section 3 presents the details of the proposed method. Section 4 shows the experiments
on surveillance videos of the pumping unit to verify the validity and feasibility of the proposed method.
Finally, conclusions are given in Section 5.
(a) (b)
Figure 1. Anomaly detection of pumping unit by a background-subtraction method: (a)
pumping-unit
Figure scene;
1. Anomaly (b) foreground
detection objects.
of pumping unit by a background-subtraction method: (a) pumping-unit
scene; (b) foreground objects.
where i and j are the position coordinates of the pixels. After obtaining the foreground pixels,
the connected component-labeling method is used to locate and mark each connected region in the
image, so as to obtain foreground target O [21]:
where n is the least number of pixels in a connected region; in this paper, we set n = 150, namely,
only the connected regions with more than 150 pixels were regarded as foreground objects.
Algorithms 2019, 12, 115 5 of 13
d(oi , o j ) = oi − o j 2
(3)
where i, j = 1, 2 · · · k. Linkage criteria use the average distance between all pairs of objects in any
two clusters:
nr ns
1 XX
D(r, s) = d ori , osj , (4)
nr ns
i=1 j=1
where r and s are clusters and nr and ns are the number of objects in cluster r and s, respectively.
Similarly, ori and osj are the ith and jth object in cluster r and s, respectively.
(3) The pedestrian and vehicle categories in hierarchical clustering are selected separately, and the
other categories are classified as part of the pumping-unit category.
Figure 4 shows the clustering process of foreground objects.
where r and s are clusters and 𝑛 and 𝑛 are the number of objects in cluster r and s, respectively.
Similarly, 𝑜 and 𝑜 are the ith and jth object in cluster r and s, respectively.
(3) The pedestrian and vehicle categories in hierarchical clustering are selected separately, and
the other2019,
Algorithms categories
12, 115 are classified as part of the pumping-unit category. 6 of 13
Fine-tuning GoogLeNet.
Figure 5. Fine-tuning
Figure GoogLeNet.
4. Experiments
4. Experiments
In this
In this section,
section, four
foursurveillance
surveillancevideos
videosofofpumping
pumpingunits were
units used
were to to
used testtest
thethe
performance of the
performance of
proposed method. Table 1 shows the details of these video datasets.
the proposed method. Table 1 shows the details of these video datasets.
Table 1. Details of video datasets.
Table 1. Details of video datasets.
Data Frame Dimension FPS Number of Frames Objects
Data Frame Dimension FPS Number of Frames Objects
video 1 320 × 240 24 1677 Pumping unit, person
video 1video 2 320 × 240352 × 288 24 24 1677 1708 Pumping
Pumping unit, person
unit, person, vehicle
640 × 480
video 2video 3 352 × 288 24 24
1708 1643 Pumping unit, person
Pumping unit, person, vehicle
video 4 640 × 480 24 4031 Pumping unit, person, vehicle
video 3 640 × 480 24 1643 Pumping unit, person
video 4 640 × 480 24 4031 Pumping unit, person, vehicle
There are several performance indicators used to quantificationally evaluate the performance of
the classification modelperformance
There are several [29]: indicators used to quantificationally evaluate the performance
of the classification model [29]: TP+TN
Accuracy = TP+TN +FP+FN ,
TP
𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 =Recall = TP+FNTP, ,
Precision = TP+FP ,
Speci f icity = TNTN
+FP ,
𝑅𝑒𝑐𝑎𝑙𝑙 = , F1 = 2 × Precision × Recall
,
Precision + Recall
where TP is true positive, TN is true negative, FP is false positive, and FN is false negative. The higher
the value of these indicators, the better the performance of the classification model.
Figure 7. Foreground detection in light condition changes cases. Screenshots and corresponding
foreground detection results are illustrated from the first to the second rows, respectively. Numbers
in the third
Figure row are time.
7. Foreground detection in light condition changes cases. Screenshots and corresponding
Figure 7. Foreground detection in light condition
foreground detection results are illustrated changes
from the first to thecases.
secondScreenshots and corresponding
rows, respectively. Numbers in
4.2. the
Object Classifiction
foreground
third detection results
row are time. are illustrated from the first to the second rows, respectively. Numbers
in the third row are time.
Through
4.2. Object the clustering method mentioned in Section 3.2, these foreground objects were
Classifiction
classified
4.2. Object into three categories: pumping unit, person, and vehicle. In total, 1200 images were
Classifiction
Through the clustering method mentioned in Section 3.2, these foreground objects were classified
randomly selected as the image dataset to train and verify the performance of the classification
into three categories:
Through pumping method
the included
clustering unit, person, and vehicle. In total,3.2,
1200 images were randomly selected
network, which 500 imagesmentioned
of the pumpingin Section
unit, 500 thesepersonforeground
images, and objects were
200 vehicle
as the image
classified dataset tocategories:
train and verify the performance of and
the classification network, which included
images. In the monitoring video, there were a large number of foreground objects and a were
into three pumping unit, person, vehicle. In total, 1200 images small
500 imagesselected
randomly of the pumping unit, 500 persontoimages, andverify
200 vehicle images. In the of monitoring video,
number of typicalastargets,
the imagewhich dataset
means traineach
that and category theofperformance
targets appeared the repeatedly.
classification 30
there werewhich
network, a largeincluded
number of 500foreground
images ofobjects
the and a small
pumping number
unit, 500 of typical
person targets,
images, and which
200 means
vehicle
percent of images in the image dataset were randomly selected as the training set, and the
that eachIncategory
images. of targetsvideo,
appeared repeatedly. 30 percent of images in the objects
image dataset were
remaining the 70%monitoring
as the testing set.there were a large
The training number
process of theofclassification
foreground networkand a small
is shown in
randomly
number selected
of The
typical as the training
targets, set, and the remaining 70% as the testing set. The training process of
Figure 8. model tendswhich
to be means that each
convergent after category
50 training of iterations.
targets appeared repeatedly.
The trained model 30 can
the classification
percent network is showndataset
in Figure 8. The model tends to be asconvergent after 50 and
training
achieveof images
high accuracyin theand image
low loss. were randomly selected the training set, the
iterations. The trained model can achieve high accuracy and low loss.
remaining 70% as the testing set. The training process of the classification network is shown in
Figure 8. The model tends to be convergent after 50 training iterations. The trained model can
achieve high accuracy and 100 low loss.
Training
80
Validation
100
60
Training (a)
80
40 Validation
0 50 100 150 200 250
60
1 (a)
40
0 50 100 150 200 Training 250
Validation
0.5
1
Training
Validation(b)
0.5 0
0 50 100 150 200 250
Epochs
(b)
Figure8.08.Training
Figure Trainingprocess
processofofGoogLeNet.
GoogLeNet.(a)
(a)Accuracy
Accuracyand
and(b)
(b)loss
losscurves.
curves.
0 50 100 150 200 250
Epochs
The
Theclassification
classificationnetwork
networkobtained
obtainedby byretraining
retrainingGoogLeNet
GoogLeNetthrough throughthe
thefine-tuned
fine-tunedmethod
method
was
wasused
usedforformoving-object detection
Figure 8. Training
moving-object processinof
detection inthe
thepumping-unit
GoogLeNet. monitoring
(a) Accuracy
pumping-unit scene.
and (b) loss
monitoring Figure
Figure99shows
curves.
scene. showsthethe
classifications of moving objects in the scene identified by the classification network.
classifications of moving objects in the scene identified by the classification network. After moving After moving
Theare
objects
objects classification
are recognizednetwork
and obtained
and classified,
classified, the
the by retraining
pumping
pumping unitGoogLeNet
unit is not
is not through
regarded
regarded the
as anas fine-tuned
an abnormal
abnormal method
object,
object, while
was
whileused
persons for moving-object
persons
and and vehicles
vehicles were detection
were output
output in abnormal
as the pumping-unit
as abnormal objects.
objects. monitoring
If Ifthere
thereisisno scene. Figure
nomoving
moving pumping 9 shows
unit inthe
unit in the
the
classifications of moving objects in the scene identified by the classification network. After moving
objects are recognized and classified, the pumping unit is not regarded as an abnormal object, while
persons and vehicles were output as abnormal objects. If there is no moving pumping unit in the
Algorithms 2019, 12, x FOR PEER REVIEW 9 of 12
Figure 9. Classification
(a) of moving objects
(b) by retrained GoogLeNet.
(c) (a) Input images;
(d) (b) foreground;
(c) classification; (d) anomaly objects.
Figure 9. Classification of moving objects by retrained GoogLeNet. (a) Input images; (b) foreground;
Figure 9. Classification of moving objects by retrained GoogLeNet. (a) Input images; (b) foreground;
(c)To
classification;
evaluate the(d) anomaly
proposedobjects.
method, a histogram of oriented gradient (HOG) features and a
(c) classification; (d) anomaly objects.
multiclass support vector machine (SVM) classifier were used for comparative experiments. SVM is
To evaluate the proposed method, a histogram of oriented gradient (HOG) features and a multiclass
a classical
To evaluateclassification method,
the proposed while HOG
method, features are
a histogram a feature descriptor that features
is used for object
support vector machine (SVM) classifier were used forofcomparative
oriented gradient (HOG)
experiments. and
SVM is a classical a
detection
multiclass in
supportcomputer
vector vision
machine and image
(SVM) processing.
classifier were It forms
used the
for features
comparative by calculation
experiments. and statistics
SVM is
classification method, while HOG features are a feature descriptor that is used for object detection
of the HOG
ainclassical in local areas of the
classification image.
HOGHOG features a combined with SVM classifiers have been
computer vision andmethod, while
image processing. Itfeatures
forms the are features
featureby descriptor
calculation that is used
and for
statistics object
of the
widely
detection used in
in computer image recognition [31]. The confusion matrices of the retrained net and SVM are
HOG in local areas ofvision and image
the image. HOGprocessing. It forms the
features combined withfeatures by calculation
SVM classifiers haveand statistics
been widely
of presented
the inHOG in local
in Figures
areas10 ofand 11, respectively. The experiment classification results have
of thebeenthree
used image recognition [31].the image.
The HOGmatrices
confusion features ofcombined with
the retrained SVM
net and classifiers
SVM are presented in
classes
widely are
used in listed
image in Table
recognition2. To assure
[31]. The confidence
confusion in the
matrices experimental
of the results,
retrained net the
and experiment
SVM are
Figures 10 and 11, respectively. The experiment classification results of the three classes are listed in
process wasFigures
presented repeated 1010and
times. The average values of each metric are reported. The overall accuracy
Table 2. Toin assure confidence in11,
therespectively.
experimental The experiment
results, classification
the experiment process wasresults of the
repeated 10three
times.
of the
classes areproposed
listed in method
Table 2. was
To 0.9988,confidence
assure while of in thetheSVM was 0.9500.
experimental In the
results, the application
experiment of
The average values of each metric are reported. The overall accuracy of the proposed method was
pumping-unit
process was repeated monitoring,
10 times. the performance
The average of the
values of eachproposed method was
metric are reported. obviously better
The overall than
accuracy that
0.9988, while of the SVM was 0.9500. In the application of pumping-unit monitoring, the performance
of ofa the classical SVM withwasHOG0.9988,
features.
of the proposed method was obviously better than that ofa the classical SVM with HOG features. of
the proposed method while of the SVM was 0.9500. In the application
pumping-unit monitoring, the performance of the proposed method was obviously better than that
ofa the classical SVM with HOG features.
Algorithms 2019, 12, 115 Figure 10. Confusion matrix of retrained GoogLeNet. 11 of 13
Figure
Figure 11.11. Confusion
Confusion matrix
matrix of of support
support vector
vector machine
machine (SVM).
(SVM).
Table 2. Experimental
Table results.
2. Experimental results.
Classes Methods Accuracy Recall Precision Specificity F1
Classes Methods Accuracy Recall Precision Specificity F1
person proposed 0.9988 1.0000 0.9972 0.9980 0.9986
proposed 0.9607
SVM 0.9988 1.0000
0.9486 0.9972
0.9568 0.9980
0.9694 0.9986
0.9527
person
SVM
proposed 0.9607
1.0000 0.9486
1.0000 0.9568
1.0000 0.9694
1.0000 0.9527
1.0000
pumping unit
SVM
proposed 0.9548
1.0000 0.9686
1.0000 0.9262
1.0000 0.9449
1.0000 0.9469
1.0000
pumping unitproposed 0.9988 0.9929 1.0000 1.0000 0.9964
vehicle
SVM
SVM 0.9548
0.9845
0.9686
0.9071
0.9262
1.0000
0.9449
1.0000
0.9469
0.9513
proposed 0.9988 0.9929 1.0000 1.0000 0.9964
vehicle
SVM 0.9845 0.9071 1.0000 1.0000 0.9513
5. Conclusions
On-site monitoring of pumping units is a typical monitoring scene, that is, there is interference of
5. Conclusions
periodic moving objects in the scene. The traditional background-subtraction method cannot satisfy the
On-site monitoring of pumping units is a typical monitoring scene, that is, there is interference
requirements of anomaly monitoring in this scenario. In the proposed method, background subtraction
of periodic moving objects in the scene. The traditional background-subtraction method cannot
can extract possible abnormal targets. The pretrained CNN has a strong generalization and
satisfy the requirements of anomaly monitoring in this scenario. In the proposed method,
transplantation ability, which only needs a small number of samples and computing resources
background subtraction can extract possible abnormal targets. The pretrained CNN has a strong
for retraining. After being trained by transfer learning, the network can be used to detect abnormal
generalization and transplantation ability, which only needs a small number of samples and
targets in a pumping-unit scene. The experimental results show that the proposed method can identify
computing resources for retraining. After being trained by transfer learning, the network can be
real foreground objects with high accuracy.
used to detect abnormal targets in a pumping-unit scene. The experimental results show that the
proposed
Author method can
Contributions: identify real foreground
Writing—original objects with high
draft, T.Y.; Writing—review accuracy.
& editing, J.Y. and W.L.
Author This
Funding: research was
Contributions: supported by thedraft,
Writing—original Natural
T.Y.;Science Foundation&ofediting,
Writing—review China (61876029).
J.Y. and W.L.
Conflicts
Funding:of This
Interest: The authors
research declare by
was supported no the
conflict of interest.
Natural Science Foundation of China (61876029).
7. Babacan, S.D.; Pappas, T.N. Spatiotemporal algorithm for background subtraction. In Proceedings of the
2007 IEEE International Conference on Acoustics, Speech and Signal Processing—ICASSP ’07, Honolulu, HI,
USA, 15–20 April 2007; pp. 1065–1068.
8. Stauffer, C.; Grimson, W.E.L. Adaptive background mixture models for real-time tracking. IEEE Comput. Soc.
Conf. Comput. Vis. Pattern Recognit. 1999, 2, 246–252.
9. Makantasis, K.; Nikitakis, A.; Doulamis, A.D.; Doulamis, N.D.; Papaefstathiou, I. Data-driven background
subtraction algorithm for in-camera acceleration in thermal imagery. IEEE Trans. Circuits Syst. Video Technol.
2018, 28, 2090–2104. [CrossRef]
10. Barnich, O.; Droogenbroeck, M.V. ViBe: A powerful random technique to estimate the background in video
sequences. In Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing,
Taipei, Taiwan, 19–24 April 2009; pp. 945–948.
11. Barnich, O.; Droogenbroeck, M.V. ViBe: A universal background subtraction algorithm for video sequences.
IEEE Trans. Image Process. 2011, 20, 1709–1724. [CrossRef]
12. Droogenbroeck, M.V.; Paquot, O. Background subtraction: Experiments and improvements for ViBe.
Comput. Vis. Pattern Recognit. Workshops 2012, 71, 32–37.
13. Elgammal, A.; Harwood, D.; Davis, L. Non-parametric model for background subtraction. Eur. Conf.
Comput. Vis. 2000, 1843, 751–767.
14. Hofmann, M.; Tiefenbacher, P.; Rigoll, G. Background segmentation with feedback: The pixel-based adaptive
segmenter. In Proceedings of the IEEE Computer Vision and Pattern Recognition Workshops, Providence,
RI, USA, 16–21 June 2012; pp. 38–43.
15. St-Charles, P.-L.; Bilodeau, G.-A.; Bergevin, R. Flexible background subtraction with self-balanced
local sensitivity. In Proceedings of the IEEE Computer Vision and Pattern Recognition Workshops,
Montreal, QC, Canada, 23–28 June 2014; pp. 408–413.
16. Krizhevsky, A.; Sutskever, I.; Hinton, G.E. ImageNet classification with deep convolutional neural networks.
Adv. Neural Inf. Process. Syst. 2012, 1, 1097–1105. [CrossRef]
17. Simonyan, K.; Zisserman, A. Very deep convolutional networks for large-scale image recognition. arXiv
2014, arXiv:1409.1556.
18. Christian, C.; Liu, W.; Jia, Y.Q.; Sermanet, P.; Reed, S.; Anguelov, D.; Erhan, D.; Vanhoucke, V.; Rabinovich, A.
Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern
Recognition, Boston, MA, USA, 7–12 June 2015; pp. 1–9.
19. Lecun, Y.; Bottou, L.; Bengio, Y.; Haffner, P. Gradient-based learning applied to document recognition.
Proc. IEEE 1998, 86, 2278–2324. [CrossRef]
20. St-Charles, P.-L.; Bilodeau, G.-A.; Bergevin, R. Subsense: A universal change detection method with local
adaptive sensitivity. IEEE Trans. Image Process. 2015, 24, 359–373. [CrossRef] [PubMed]
21. Haralick, R.M.; Shapiro, L.G. Computer and Robot Vision; Addison-Wesley: Readimg, Boston, MA, USA, 1992;
Volume 1, pp. 28–48.
22. Xu, D.; Tian, Y. A comprehensive survey of clustering algorithms. Ann. Data Sci. 2015, 2, 165–193. [CrossRef]
23. Protopapadakis, E.; Voulodimos, A.; Doulamis, A.; Doulamis, N.; Dres, D.; Bimpas, M. Stacked autoencoders
for outlier detection in over-the-horizon radar signals. Comput. Intell. Neurosci. 2017. [CrossRef] [PubMed]
24. Protopapadakis, E.; Niklis, D.; Doumpos, M.; Doulamis, A.; Zopounidis, C. Sample selection algorithms for
credit risk modelling through data mining techniques. Int. J. Data Min. Model. Manag. 2019, 11, 103–128.
[CrossRef]
25. Lior, R.; Maimon, O. Clustering methods. In Data Mining and Knowledge Discovery Handbook; Springer:
New York, NY, USA, 2005; pp. 321–352.
26. Patel, V.M.; Gopalan, R.; Li, R.; Chellappa, R. Visual domain adaptation: A survey of recent advances.
IEEE Signal Process. Mag. 2015, 32, 53–69. [CrossRef]
27. Zhang, L. Transfer Adaptation Learning: A Decade Survey. arXiv 2019, arXiv:1903.04687.
28. Russakovsky, O.; Deng, J.; Su, H.; Krause, J.; Satheesh, S.; Ma, S.; Huang, Z.; Karpathy, A.; Khosla, A.; Bernstein, M.;
et al. ImageNet large scale visual recognition challenge. Int. J. Comput. Vis. (IJCV) 2015, 115, 211–252. [CrossRef]
29. Powers, D.M. Evaluation: From precision, recall and F-measure to ROC, informedness, markedness and
correlation. J. Mach. Learn. Technol. 2011, 2, 37–63.
Algorithms 2019, 12, 115 13 of 13
30. Wang, Y.; Jodoin, P.-M.; Porikli, F.; Janusz, K.; Benezeth, Y.; Ishwar, P. CDnet 2014: An expanded change
detection benchmark dataset. In Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern
Recognition Workshops, Columbus, OH, USA, 23–28 June 2014; pp. 387–394.
31. Dalal, N.; Triggs, B. Histograms of oriented gradients for human detection. Proc. IEEE Conf. Comput. Vis.
Pattern Recognit. 2005, 1, 886–893.
© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access
article distributed under the terms and conditions of the Creative Commons Attribution
(CC BY) license (http://creativecommons.org/licenses/by/4.0/).