text:
\section{INTRODUCTION}
Throughout the Covid-19 pandemic, we have seen that the use of masks has helped to prevent infection. The situation is improving, but a system to estimate the rate of mask use would be an important analysis tool for public health officials. Several studies~\cite{cats,face_mask_worker} have focused on developing a method for automatically estimating the mask-wearing ratio from images or videos, such as those captured by surveillance cameras. However, this task is very challenging due to the small face areas, severe occlusion, and cluttered background common in images and videos of congested streets. Furthermore, a large-scale and well-annotated dataset for measuring the performance of proposed methods is lacking.

The pioneering work~\cite{loey2021fighting,yadav2020deep,zhang2021novel} mostly focused on detecting masked and unmasked faces in images by using a face detector, such as Faster R-CNN or YOLO, followed by a masked/unmasked classifier. The obtained results can be further processed and used to compile statistics and issue warnings. Due to the lack of an established dataset, a small number of images crawled from the Internet were used to evaluate the performance of the proposed methods. The results demonstrated the potential application of these methods to practical systems, e.g., surveillance systems.

Unfortunately, to push the work forward, several problems need to be tackled. First, existing methods are based solely on face detection, with no consideration given to approaches for related tasks such as crowd counting. Further research comparing different approaches is necessary to identify the strengths and weaknesses of each. Second, since the images were crawled from the Internet, the faces generally had high resolution (larger than $32\times32$ pixels) and were in frontal view. They thus differed greatly from surveillance camera images in which the face areas are typically very small and unclear due to the distance between the camera and the subjects. It is thus necessary to investigate the performance of face mask estimation under real-world conditions.

In addition to the currently utilized face detection methods, it is also feasible to use other crowd-counting approaches~\cite{sindagi2018survey} to estimate the number of people wearing masks. Like the mask-wearing ratio estimation task, the crowd-counting task has to tackle congested scenes captured by street-view cameras. Recently introduced convolutional neural network (CNN)-based crowd-counting methods are especially efficient for congested pedestrian flows thanks to the utilization of density maps. Early crowd-counting efforts~\cite{lin2001estimation,li2008estimating} have taken a detection-based approach, using face or head detectors to count the number of people, but this is computationally demanding. More recent efforts~\cite{csrnet,decidenet} have taken a regression-based approach, using a CNN to accurately and quickly predict density maps. Detection-based methods are inefficient for handling tiny and occluded objects, which are common in street-view images, while regression-based ones can tackle them effectively. Regression-based methods predict the number of people without their localization in images. Therefore, several efforts have focused on aggregate regression-based counting and localizing using an end-to-end network~\cite{composition_counting,decidenet,point_couting}.

Although the regression-based methods have achieved good performance on crowd counting, their effectiveness on mask-wearing ratio estimation has not been investigated. We have evaluated and compared detection-based and regression-based methods on their ability to estimate the mask-wearing ratio. For the detection-based approach, we used an improved RetinaFace~\cite{retinaface} face detector enhanced with a bi-directional feature pyramid network (BiFPN)~\cite{bifpn} and trained using the focal loss function~\cite{focal_loss} to effectively classify masked/unmasked faces. For the regression-based approach, we used the Congested Scene Recognition Network (CSRNet)~\cite{csrnet}, an easily trained regression network. To compare these methods, we annotated approximately 580,000 face bounding boxes extracted from about 18,000 video frames from 17 street-view videos recorded in several Japanese cities, in both daytime and nighttime, before and during the Covid-19 pandemic.

The contributions of this paper are threefold:
\begin{itemize}
\item First, we present a comparative evaluation of two approaches to estimating the mask-wearing ratio: the detection-based approach and the regression-based approach.
\item Second, we introduce a large-scale dataset of images extracted from street-view videos for use in estimating the face mask ratio. Our dataset contains 18,088 video frames with more than 580,000 face annotations. To our best knowledge, this is the first face mask dataset containing images extracted from street-view videos.
\item Third, we present the results of comprehensive experiments to evaluate the detection- and regression-based approaches in terms of both accuracy and operation speed. Their advantages and disadvantages are also discussed.
\end{itemize}

The remainder of the paper is organized as follows. Section 2 summarizes related work. Sections 3 and 4 respectively introduce the RetinaFace- and CSRNet-based mask-wearing ratio estimation methods used, respectively, for the detection-based and regression-based approaches in the experiments. Section 5 presents our NFM dataset. The experimental results are given and discussed in Section 6. Finally, the key points are summarized and future work is mentioned in Section 7.

\section{Related Work}
\subsection{Detection-based Approach}
Methods using the detection-based approach estimate the mask-wearing ratio by detecting faces, classifying them as masked or unmasked, and tallying the number of each. Many methods have been proposed for the face detection part, such as Single Stage Headless (SSH)~\cite{ssh}, PyramidBox~\cite{pyramidbox}, and RetinaFace~\cite{retinaface}. However, traditional face detection methods face difficulties in working with faces wearing masks, especially in challenging situations (e.g., crowded areas at night and bad weather conditions).

In pioneering work, Ge \textit{et al.} created a dataset dubbed Masked Faces (MAFA)~\cite{ge2017detecting} to overcome the lack of datasets with images of masked faces. The MAFA dataset consists of 30,811 images crawled from the Internet with 35,806 masked faces (occluded by a face mask or another object). They used a locally linear embedding CNN (LLE-CNN) for detecting masked faces. Wang \textit{et al.} subsequently proposed a face attention network (FAN)~\cite{wang2017face} for leveraging context information. Experimental results on MAFA demonstrated that FAN outperforms the LLE-CNN by more than 10\% mean average precision (mAP).

Recently, with the spread of Covid-19, several efforts have been devoted to detecting face masks only. Loey \textit{et al.}~\cite{loey2021fighting} investigated the accuracy of a well-known object detector, YOLOv2~\cite{yolo9000} with a ResNet-50 backbone, for detecting only medical face masks. They collected images from two public datasets from the Kaggle community (the Medical Masks Dataset with 682 images and the Face Mask Dataset with 853 images) to create a dataset with 1415 images. The investigation showed that YOLOv2 outperformed the LLE-CNN method~\cite{ge2017detecting} (81.0\% vs 76.1\% mAP). Batagelj \textit{et al.}~\cite{batagelj2021correctly} investigated the effectiveness of off-the-shelf face detectors for masked and unmasked faces. He constructed a dataset from the MAFA and WiderFace datasets that consists of 41,934 images with 63,072 face annotations (face size at least $40\times40$ pixels). The results showed that RetinaFace achieved the highest accuracy among the evaluated detectors.

Furthermore, for computing the value of the safety impact on the community, Almalki \textit{et al.}~\cite{cats} presented a mask-wearing detection (MWD) system for estimating the percentage of people wearing a mask and the percentage of people not wearing one or wearing one incorrectly. The MWD system adds a layer at the end of the YOLOv3 detector~\cite{yolov3} to classify faces. The super-resolution CNN architecture is used to pre-process an image before it is input to the detector. For evaluation, a new MWD dataset containing 526 images was created using images from Google Images. The system detected masked/unmasked faces with 71\% mAP. Similarly, aiming to automatically detect violations of face mask-wearing and physical distancing protocols among construction workers, Razavi \textit{et al.}~\cite{face_mask_worker} created a face mask dataset containing 1853 images and used it and the Faster R-CNN~\cite{faster_rcnn} with the Inception ResNet-V2 network to detect face masks.

\begin{figure*}[t]
\centering
\includegraphics[width=1.0\textwidth]{Figs/RetinaFace_based_pipline.png}
\caption{Proposed face detection and classification pipeline based on RetinaFace.}
\label{fig:retinaface_based_pipeline}
\end{figure*}

\begin{figure*}[t]
\centering
\includegraphics[width=1.0\textwidth]{Figs/CSRNet_framework.png}
\caption{Visualization of CSRNet architecture.}
\label{fig:csrnet_framework}
\vspace{-5mm}
\end{figure*}

\subsection{Regression-based Approach}
Unlike the detection-based approach, methods using the regression-based approach directly predict the number of faces without detecting them. They have become mainstream methods for crowd counting thanks to the effectiveness of density maps. A CNN~\cite{csrnet,residual_regress} is typically used to predict a density map from which the count can be derived quickly. Several groups ~\cite{composition_counting,decidenet,point_couting} have recently proposed combining density map estimation and counting with detection in a unified network. Idrees \textit{et al.}~\cite{composition_counting} proved that count prediction, density maps, and detection are interrelated and can be efficiently solved by training a CNN with the proposed composition loss. Similarly, Liu \textit{et al.}~\cite{point_couting} presented a crowd-counting method that can detect human heads. This method can be trained with only point annotations.

For crowd counting, the question of which is the better approach, detection-based or regression-based, also comes. As compared by Liu \textit{et al.}~\cite{decidenet}, a detection-based method counts people accurately for low-density areas but is unreliable for congested areas. On the other hand, a regression-based method tends to overestimate the number of people in low-density areas. Gomez \textit{et al.}~\cite{gomez2021deep} compared regression- and detection-based methods for counting fruit and grains in an image. They concluded that the approaches are comparable when the density in the image is low and that regression is more accurate when the density is higher.

\section{RetinaFace-based Mask-wearing Ratio Estimation}
\subsection{Improved RetinaFace-based Detector}
The pipeline of the improved RetinaFace-based detector used for our evaluation is illustrated in Figure~\ref{fig:retinaface_based_pipeline}. It consists of three modules: a feature pyramid network for extracting features, a context module for integrating context information, and two prediction heads for bounding box regression and masked/unmasked face classification.

\subsubsection{Bi-directional Feature Pyramid Network}
We use a BiFPN~\cite{bifpn} for extracting multi-scale features at different resolutions. The architecture of the BiFPN is illustrated in Figure~\ref{fig:retinaface_based_pipeline}.

Given a list of input pyramid features $m^{\mathrm{in}} = (m^{\mathrm{in}}_{1}, m^{\mathrm{in}}_{2}, ...)$, where $m^{\mathrm{in}}_{i}$ represents the feature map at level $i$ in the pyramid, which has a resolution of $\frac{1}{2^i}$ that of the input images. The BiFPN fuses the different feature layers and then creates a list of better features: $m^{\mathrm{out}} = \mathcal{F}(m^{\mathrm{in}})$, where $\mathcal{F}$ denotes a transformation.

The conventional FPN~\cite{fpn} uses feature maps from level 3 to 7 in the input feature pyramid $m^{in} = (m^{\mathrm{in}}_3, ..., m^{\mathrm{in}}_7)$ and aggregates them in a top-down manner:
\begin{align}
m^{\mathrm{out}}_7 &= \mathrm{Conv} (m^{\mathrm{in}}_7) \\
m^{\mathrm{out}}_6 &= \mathrm{Conv}(m^{\mathrm{in}}_6 + \mathrm{Resize} (m^{\mathrm{out}}_7)) \\
\dots \nonumber \\
m^{\mathrm{out}}_3 &= \mathrm{Conv} (m^{\mathrm{in}}_3 + \mathrm{Resize} (m^{\mathrm{out}}_4)),
\end{align}
where $\mathrm{Resize}(\cdot)$ is usually an upsampling or downsampling operation for resolution matching, and $\mathrm{Conv}$ is usually a convolutional operation for feature processing.

Instead of fusion in a top-down manner, the BiFPN integrates feature layers in both directions: top-down and bottom-up. For example, feature layer $\widetilde{m}^{\mathrm{out}}_6$ is computed as
\begin{align}
m^\prime_6 &= \mathrm{Conv}\left( \frac{w_1 m^{\mathrm{in}}_6 + w_2 \mathrm{Resize} (m^{\mathrm{in}}_7)}{w_1+w_2+\epsilon} \right) \\
\widetilde{m}^{\mathrm{out}}_6 &= \mathrm{Conv} \left( \frac{w'_1 m^{\mathrm{in}}_6 + w'_2 m^\prime_6 + w'_3 \mathrm{Resize} (m^{\mathrm{out}}_5)}{w'_1+w'_2+w'_3+\epsilon} \right),
\end{align}
where $w_i$ and $w'_i$ are learnable weights.

\subsubsection{Context Module}
Inspired by SSH~\cite{ssh} and RetinaFace~\cite{retinaface}, we also apply independent context modules to the feature pyramid levels to increase the receptive field size and leverage the context information. The use of sequential $3\times3$ filters in the context module increases the size of the receptive field in proportion to the stride of the corresponding layer, which increases the target scale of each detection module.

\subsubsection{Prediction Heads}

\begin{comment}
\begin{figure*}
\includegraphics[width=1.0\textwidth]{Figs/DensityMapEstimation.png}
\caption{Density map estimation.}
\label{fig:DensityMapEstimation}
\end{figure*}
\end{comment}

\paragraph{Anchors} We use anchor boxes with different sizes on feature maps, similar to their use in RetinaFace~\cite{retinaface}. There are three aspect ratios (1:2, 1:1, 2:1) for each anchor box. A length $K$ one-hot vector and a 4-coordinate vector are assigned to each anchor. The one-hot vector is the classification target, and the 4-coordinate vector is the bounding box regression target. Specifically, $K=3$, corresponding to three labels: masked, unmasked, and background.

\begin{figure}
\centering
\includegraphics[width=1.0\columnwidth]{Figs/CSRNet_ratio_estimation.png}
\caption{CSRNet-based mask-wearing ratio estimation pipeline.}
\label{fig:csrnet_estimation_pipeline}
\vspace{-5mm}
\end{figure}

\paragraph{Masked/Unmasked Face Classification Head} We attached a fully convolutional network (FCN) subnet to each BiFPN level, similar to its use in RetinaFace~\cite{retinaface}, for predicting the probability of a masked/unmasked face at each anchor position. Each FCN (``face classification subnet") consists of four $3\times3$ convolutional layers, each with 256 filters, followed by ReLU activations and sigmoid activations.

\paragraph{Bounding Box Regression Head} To regress the offset from each anchor box to a nearby ground-truth face, another FCN is attached to each pyramid level in parallel with the face classification subnet. The architecture of this subnet is similar to that of the classification subnet except that it outputs four values corresponding to the relative offsets between the anchor and the ground-truth box.

\paragraph{Multi-task Loss} For any training anchor $i$, we minimize the multi-task loss:
\begin{equation}
\mathcal{L} = \sum_{^\forall i} \mathcal{L}_{\mathrm{obj}}(p_i, p_i^*) + p_i^*\mathcal{L}_{\mathrm{cls}}(\bar{p}_i, \bar{p}_i^{*}) + p_i^*\mathcal{L}_{\mathrm{box}}(t_i, t_i^*),
\end{equation}
where $\mathcal{L}_{\mathrm{obj}}(p_i, p_i^*)$ is the binary cross entropy in which $p_i$ is the predicted probability of anchor $i$ being a face: $p^*_i$ is 1 for a positive anchor and 0 for a negative anchor. A major element of $\mathcal{L}_{\mathrm{cls}}(\bar{p}_i, \bar{p}_i^{*})$ is an improved binary cross-entropy loss, the ``focal loss"~\cite{focal_loss}, where $\bar{p}_i$ is the predicted probability of anchor $i$ being a masked face, and $\bar{p}^*_i$ is 1 for a masked face anchor and 0 for an unmasked face anchor. The focal loss addresses the imbalance ratio between the number of masked and unmasked faces. The face box regression loss is represented by $\mathcal{L}_{\mathrm{box}}(t_i, t^*_i)$, where $t_i = (t_{x_i}, t_{y_i}, t_{w_i}, t_{h_i})$, and $t^*_i = (t^*_{x_i}, t^*_{y_i}, t^*_{w_i}, t^*_{h_i})$ denote the coordinates of the predicted boxes and ground-truth ones associated with the positive anchor, respectively.

\subsection{Ratio Estimation}
Given an input image, the improved RetinaFace-based detector detects both masked and unmasked faces. The detected faces are filtered using a confidence threshold (which was set to 0.5 in the experiments). The numbers of detected masked faces, unmasked faces, and all faces are then tallied. The mask-wearing ratio is simply calculated by dividing the number of masked faces by the total number of detected faces.

In detail, the improved RetinaFace-based detector is trained using the stochastic gradient descent (SGD) optimizer with the momentum and weight decay at 0.9 and 0.0005, respectively. The learning rate starts at 0.01 and is divided by 10 at 50 and 68 epochs. Our training process stops after 80 epochs.

\section{CSRNet-based Mask-wearing Ratio Estimation}
\subsection{Dilated Convolutional Neural Network - CSRNet}
Using CSRNet~\cite{csrnet} is an accurate way to count by regression. CSRNet uses a conventional CNN network for extracting features followed by several dilated convolution layers for predicting a density map. The CSRNet architecture is visualized in Figure~\ref{fig:csrnet_framework}. Given an input image, the network first extracts the image features using convolutional $3\times3$ and max-pooling layers (similar to the VGG-16 architecture). It then predicts the density map by using dilated convolutional $3\times3$ and $1\times1$ layers. The resolution of the output density map is 1/8th the original resolution. We can straightforwardly apply this method to mask-wearing estimation because it produces high-quality density maps while having a pure convolutional structure.

In the training stage, a ground-truth density map is generated for each image on the basis of the annotated faces. The computation is similar to that used by CSRNet in that geometry-adaptive kernels are used to handle highly crowded scenes. Conventional density maps are computed by convolving a Gaussian kernel, which is normalized to 1, to blur the face annotations. For each face annotation, a geometry-adaptive kernel estimates the appropriate standard deviation of the Gaussian kernel by considering the distance to the $k$ nearest face annotations. The geometry-adaptive kernel is defined as
\begin{equation}
    F(x) = \sum^{N}_{i=1}\delta(x-x_i)\times G_{\sigma_i}x, \: with \: \sigma_i=\beta d_i,
\end{equation}
where $\delta(x-x_i)$ is a function representing whether there is a face at pixel $x_i$ (1 or 0), and the ground truth (face locations) of an image with $N$ labeled faces (i.e., masked and unmasked) is represented as $\sum^{N}_{i=1}\delta(x-x_i)$. Note that $\sum^{N}_{i=1}\delta(x-x_i)$ is a discrete function. A density map (a continuous function) is generated by convolving $\delta(x-x_i)$ with a Gaussian kernel with parameter $\sigma_i=\beta d_i$ (standard deviation), where $d_i$ indicates the average distance to the $k$ nearest face annotations. In our experiments, we used the configuration used by Zhang \textit{et al.}~\cite{image-crowd-counting}, with $\beta = 0.3$ and $k = 3$.

For training CSRNet, the Euclidean distance is used to measure the distance between the estimated density map and the ground truth. The loss function is defined as
\begin{equation}
    \mathcal{L}(\Theta) = \frac{1}{2N}\sum_{i=1}^N{\lVert \mathcal{D}(X_i;\Theta) - \mathcal{D}_i^{\mathrm{GT}} \rVert}_2^2,
\end{equation}
where $X_i$ is the input image and $\Theta$ is the set of learnable parameters of CSRNet. The estimated density map of input image $X_i$ is denoted by $\mathcal{D}(X_i;\Theta)$, $\mathcal{D}_i^{\mathrm{GT}}$ is the ground-truth density map, and $N$ is the size of the training batch.

\subsection{Ratio Estimation}
To predict the mask-wearing ratio, we need to estimate the number of masked and unmasked faces. To this end, we train two CSRNet models to separately predict the numbers. After obtaining the numbers, we simply divide the number of unmasked faces by the total number of faces (masked and unmasked) to obtain the ratio. Visualization of the CSRNet-based mask-wearing ratio estimation pipeline is shown in Figure~\ref{fig:csrnet_estimation_pipeline}.

In detail, we first train a CSRNet model to estimate the number of faces. The obtained model is then fine-tuned to estimate the numbers of masked and unmasked faces separately. The SGD optimizer is applied with the momentum and weight decay set at 0.95 and 0.0005, respectively. In the experiments, we used a fixed learning rate of $\mathrm{10^{-6}}$ for the training and terminated the training after 45 epochs.

\section{NFM Dataset}
\label{sec:dataset}
\begin{table}
\caption{Details of videos obtained from Rambalac YouTube channel. 'DT': Daytime, 'NT': Nighttime, Note: Before/During Covid-19 pandemic.}
\label{table:rambalac_videos}
\begin{center}
\begin{tabular}{c|l|l|l|l}
\hline
\textbf{ID} & \textbf{Location} & \textbf{Time Recorded} & \textbf{Type} & \textbf{Note} \\ \hline
01 & Asakusa & Aug 15, 2017 & DT+NT & Before \\
02 & Shibuya & Nov 15, 2017 & NT & Before \\
03 & Kawasaki & Jul 18, 2019 & DT & Before \\
04 & Ginza & Aug 7, 2019 & DT & Before \\
05 & Kagurazaka & Oct 18, 2019 & DT & Before \\
06 & Shibuya & Oct 31, 2019 & NT & Before \\
\hline
07 & Aomori & Jan 3, 2020 & NT+Snow & During \\
08 & Kichijoji & Feb 16, 2020 & NT & During \\
09 & Saitama & Mar 15, 2020 & DT & During \\
10 & Tokyo & Mar 18, 2020 & DT+NT+Snow & During \\
11 & Koenji & Mar 29, 2020 & DT & During \\
12 & Shibuya & Apr 19, 2020 & DT & During \\
13 & \begin{tabular}[c]{@{}l@{}}Shinjuku\\ Yotsuya\\ Ichigaya\end{tabular} & Jul 22, 2020 & DT+NT & During \\
14 & \begin{tabular}[c]{@{}l@{}}Tokorozawa\\ Aviation\end{tabular} & Jun 24, 2020 & DT & During \\
15 & \begin{tabular}[c]{@{}l@{}}Shibuya\\ Yoyogi\\ Harajuku\end{tabular} & Jun 29, 2020 & DT+NT & During \\
16 & Hachiko & Aug 19, 2020 & NT & During \\
17 & Oimachi & Aug 26, 2020 & NT & During \\ \hline
\end{tabular}
\end{center}
\vspace{-5mm}
\end{table}

\begin{figure}[t!]
\centering
\begin{subfigure}[t]{0.24\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/annotations_number.png}
\caption{No. of face annotations}
\end{subfigure}
~
\begin{subfigure}[t]{0.22\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/annotations_size.png}
\caption{Size of face annotations}
\end{subfigure}\\
~
\begin{subfigure}[t]{0.225\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/annotations_ratio.png}
\caption{Mask-wearing ratio}
\end{subfigure}
~
\begin{subfigure}[t]{0.225\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/annotations_face_per_image.png}
\caption{No. of annotated faces per image}
\end{subfigure}
~
\vspace{-2mm}
\caption{Statistics on training and testing sets of NFM dataset.}
\label{fig:dataset_statistics}
\vspace{-3mm}
\end{figure}

\subsection{Dataset Creation}
We created a face mask dataset containing 581,108 face annotations extracted from 18,088 video frames in 17 street-view videos obtained from the Rambalac YouTube channel\footnote{\url{https://www.youtube.com/c/Rambalac/videos}}\footnote{The annotations (bounding boxes and labels), and pretrained models will be released with the publication of the paper.}. The details of the videos are summarized in Table~\ref{table:rambalac_videos}. The videos were taken in multiple places, at various times, before and during the Covid-19 pandemic. The total length of the videos is approximately 56 hours. As shown in the table, 6 videos were shot before the pandemic, and 11 were shot during the pandemic. The images in our dataset thus have various face mask ratios.

\begin{table}[t]
\caption{Number of annotated faces in NFM dataset.}
\label{table:dataset_number_of_label}
\begin{center}
\begin{tabular}{c|c|ccc}
\hline
 & \textbf{Images} & \textbf{Masked} & \textbf{Unmasked} & \textbf{Unknown} \\ \hline
Training set & 12,058 & 48,736 & 317,527 & 24,594 \\
Testing set & \phantom{0}6,030 & 23,971 & 154,973 & 11,307 \\
Total & 18,088 & 72,707 & 472,500 & 35,901 \\ \hline
\end{tabular}
\end{center}
\vspace{-5mm}
\end{table}

\begin{table}[t]
\caption{Average number of annotated faces per image in NFM dataset.}
\label{table:dataset_average_of_label}
\centering
\begin{tabular}{c|ccc}
\hline
 & \textbf{Masked} & \textbf{Unmasked} & \textbf{Unknown} \\ \hline
Training set & 4.0 & 26.3 & 2.0 \\
Testing set & 4.0 & 25.7 & 1.9 \\ \hline
\end{tabular}
\vspace{-5mm}
\end{table}

After creating our dataset, we extracted and selected frames for annotating. This process comprised three steps.
\begin{itemize}
\item Step 1 - Extract raw frames: for each video, we extracted a frame every 2 seconds.
\item Step 2 - Detect faces: we applied the RetinaFace detector with the Resnet-50 pretrained model~\footnote{\url{https://github.com/peteryuX/retinaface-tf2}}(WiderFace dataset~\cite{widerface}) to the extracted frames to count all faces.
\item Step 3 - Select frames containing faces: we excluded raw frames containing very few face samples from our dataset, leaving us with 18,088 video frames.
\end{itemize}

\begin{figure*}[t!]
\centering
\begin{subfigure}[t]{0.43\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Fig_7a_censored.jpg}
\caption{GT: 0.19, RetinaFace: 0.23, CSRNet: 0.22, faces: 26}
\end{subfigure}%
~
\begin{subfigure}[t]{0.43\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Fig_7b_censored.jpg}
\caption{GT: 0.06, RetinaFace: 0.04, CSRNet: 0.07, faces: 84}
\end{subfigure}
~
\begin{subfigure}[t]{0.43\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Fig_7c_censored.jpg}
\caption{GT: 0.55, RetinaFace: 0.60, CSRNet: 0.51, faces: 11}
\end{subfigure}
~
\begin{subfigure}[t]{0.43\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Fig_7d_censored.jpg}
\caption{GT: 0.93, RetinaFace: 0.95, CSRNet: 0.22, faces: 75}
\end{subfigure}
\caption{Mask-wearing ratios were estimated for four scenarios: a) a sparse scene with a low ratio; b) a dense scene with a low ratio; c) a sparse scene with a high ratio; and d) a dense scene with a high ratio. GT: ground-truth ratio. Images were extracted from videos on Rambalac channel (\url{https://www.youtube.com/c/Rambalac/videos}). Faces are blurred for anonymity.}
\label{fig:estimation_under_four_scenarios}
\vspace{-3mm}
\end{figure*}

\subsection{Image Annotation}
An image annotation comprises a bounding box and a label. Four coordinates (left, top, right, bottom) were used to denote a bounding box. The area of the face to which the bounding box was applied was the smallest square area surrounded by the hairline (upper forehead/hairline), lower jaw, and front of ears. In addition to annotating front-facing faces, we also annotated side-facing ones taken at an angle to confirm whether a mask was worn. The size of the quadrangle for an annotated face was assumed to be $10 \times 10$ pixels or more. For occluded faces, if the occlusion was judged to be more than half of the face area, annotation was not performed. For each annotated face, one of three labels was attached with a bounding box.
\begin{itemize}
\item ``Masked'': a face with a mask. The color and type of mask did not matter.
\item ``Unmasked'': a face without a mask.
\item ``Unknown'': a face for which it could not be determined whether a mask was worn due to image quality or environmental conditions.
\end{itemize}
If the mask was not properly worn, such as when the mask was stretched under the chin or hung on an ear, the "Unmasked" label was assigned. After the manual annotation, we performed verification on 20\% of the annotations (manually double-checked) to identify annotation mistakes.

\subsection{Dataset Statistics}
The statistics for our dataset are plotted in Figure~\ref{fig:dataset_statistics} and summarized in Table~\ref{table:dataset_number_of_label}. As expected, the number of masked faces is smaller than that of unmasked ones because Japanese residents were strongly encouraged to stay home during the pandemic period. On average, there are more than 30 annotated faces in each image, as shown in Table~\ref{table:dataset_average_of_label}.

\section{Experiments}
\subsection{Evaluation Metrics}
To evaluate prediction accuracy, we used the mean absolute error (MAE) and Pearson correlation metrics. The MAE metric is defined as $MAE = \frac{1}{N}\sum_{i=1}^N|c_i-c_i^{\mathrm{gt}}|$, where $N$ is the total number of images in the testing set, and $c_i$ and $c_i^{\mathrm{gt}}$ are the predicted and ground-truth counts, respectively, for image $i$. The Pearson correlation coefficient $\gamma$ is defined as
\begin{equation}
\label{eq:equation_pearson_counting}
\gamma = \frac{\sum_{i=1}^N(c_i - \overline{c})(c_i^{\mathrm{gt}} - \overline{c}^{\mathrm{gt}})}{\sqrt{\sum_{i=1}^N(c_i - \overline{c})^2}\sqrt{\sum_{i=1}^N(c_i^{\mathrm{gt}} - \overline{c}^{\mathrm{gt}})^2}},
\end{equation}
where $\overline{c}$ and $\overline{c}^{\mathrm{gt}}$ are the mean of $c$ and $c^{\mathrm{gt}}$, respectively.

Likewise, to evaluate the mask-wearing ratio, we computed the Pearson correlation coefficient using the estimated and ground-truth ratios.

\begin{table}[t]
\caption{Face detection results (average precision \%) for original RetinaFace detector~\cite{retinaface} and improved RetinaFace-based detector (RetinaFace$\star$) on NFM testing set.}
\label{table:face_detection_results}
\centering
\scriptsize
\begin{tabular}{l|ccc|ccc|c}
\hline
\multirow{2}{*}{Method} & \multicolumn{3}{c|}{AP: Masked Face} & \multicolumn{3}{c|}{AP: Unmasked Face} & \multirow{2}{*}{mAP} \\ \cline{2-7}
 & L & M & S & L & M & S & \\ \hline
RetinaFace & 86.1 & 69.0 & 26.8 & 89.6 & 74.2 & 28.2 & 61.6 \\
RetinaFace$\star$ & \textbf{86.5} & \textbf{69.3} & \textbf{28.2} & \textbf{91.2} & \textbf{77.1} & \textbf{31.7} & \textbf{64.2} \\ \hline
\end{tabular}
\vspace{-2mm}
\end{table}

\begin{table}[t]
\caption{Face mask ratio estimation results (MAE and Pearson correlation coefficients $\gamma$) on NFM testing set. MAE (number in decimal form) is mean absolute error. FPS is number of frames processed per second.}
\label{table:face_detection_mae_correlation}
\centering
\scriptsize
\begin{tabular}{l|ccc|ccc}
\hline
& \multicolumn{3}{c|}{RetinaFace$\star$} & \multicolumn{3}{c}{CSRNet} \\ \cline{2-7}
& MAE & $\gamma$ & FPS & MAE & $\gamma$ & FPS \\\hline
No. of Masked Faces & 2.41 & 0.81 & 0.81 & 3.42 & 0.38 & 6.50\\
No. of Unmasked Faces & 10.80 & 0.90 & 0.81 & 7.74 & 0.92 & 6.40\\
Total No. of Faces & 12.55 & 0.89 & 0.81 & 8.46 & 0.91 & 6.53 \\
Mask-wearing Ratio & -- & 0.94 & 0.81 & -- & 0.73 & 3.17 \\\hline
\end{tabular}
\vspace{-6mm}
\end{table}

\subsection{Results}
We first evaluated the ability of the improved RetinaFace-based detector (RetinaFace$\star$) to detect faces. We labeled each annotated face as ``L," ``M," or ``S." ``S" was assigned to a face for which both dimensions were from 8 to 16 pixels, ``L" was assigned to a face for which both dimensions were greater than 32 pixels, and ``M" was assigned to the remaining faces. We excluded faces for which any dimension was smaller than eight pixels.

The face detection results using the conventional object detection metric—average precision (AP)—are shown in Table~\ref{table:face_detection_results}. We set the IoU (intersection over union) threshold to 0.4 because the faces in our dataset were small. The improved RetinaFace-based detector detected ``L" faces with an accuracy of 91.2\% for unmasked faces and 86.5\% for masked faces in terms of AP. The accuracy was lower for smaller faces, especially for ``S" faces, but was nevertheless higher than with the original detector. The improved RetinaFace-based detector was effective for faces larger than 16 pixels and outperformed the original detector overall by 2.6\% mAP.

Next, we evaluated the mask-wearing ratio. To truncate the noise ratio of images containing very few faces, we set a threshold $k$ on the number of faces per image, meaning that images with fewer than $k$ faces were excluded. From observation of the images in the NFM dataset, we set $k=5$. Table~\ref{table:face_detection_mae_correlation} shows the results for the RetinaFace-based and CSRNet-based methods in terms of the MAE and correlation coefficient. The RetinaFace-based method produced good results for both metrics. The MAE scores for predicting the number of masked faces, unmasked faces, and all faces were 2.41, 10.80, and 12.55, respectively. All the estimations had correlation coefficients greater than 0.8. The correlation coefficient between the estimated mask-wearing ratio and the ground truth was 0.94.
\begin{figure}[t!]
\centering
\begin{subfigure}[t]{0.23\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Correlation_retinaface.png}
\caption{RetinaFace$\star$}
\end{subfigure}%
~
\begin{subfigure}[t]{0.23\textwidth}
\centering
\includegraphics[width=\textwidth]{Figs/Correlation_CSRNet.png}
\caption{CSRNet}
\end{subfigure}
\vspace{-2mm}
\caption{Scatter plots of predicted versus ground-truth mask-wearing ratios.}
\label{fig:ratio_estimation_visual}
\vspace{-6mm}
\end{figure}
As described above, two CSRNet models were used for the CSRNet-based method to predict the total number of faces and the number of unmasked faces. Although the CSRNet-based method estimated the total number of faces and unmasked faces with higher correlation coefficients than the RetinaFace-based one (0.91 and 0.92, respectively), the final estimated mask-wearing ratio was only 0.73. This is because CSRNet does not effectively work on classification tasks (e.g., masked/unmasked). As shown in Table~\ref{table:face_detection_results}, CSRNet did poorly on estimating the number of masked faces (0.38 correlation coefficient).

The estimation results for both methods are also shown in Figure~\ref{fig:estimation_under_four_scenarios}. The RetinaFace-based method accurately predicted the ratios for all four scenarios (sparse/dense scenes with low/high ratios) while the CSRNet-based one performed poorly for a dense scene with a high ratio. Again, this is because CSRNet does not handle the classification task effectively. It does not have a layer explicitly designed to infer the masked/unmasked probability. Furthermore, while RetinaFace leverages the FPN and SSH modules to create better features, CSRNet simply utilizes the conventional VGG-16 network, which lacks discriminative power. Hence, masked and unmasked faces cannot be distinguished, especially when the face areas are small. Visualization of the ratio estimation results for both methods on the entire testing set (Figure~\ref{fig:ratio_estimation_visual}) highlights the better performance of the improved RetinaFace-based method.

Furthermore, we computed the average mask-wearing ratio for each video in our NFM dataset to evaluate the applicability of the estimation methods used in our experiments. As shown in Table~\ref{table:ratio_estimation_videos}, the improved RetinaFace-based method produced accurate estimations for all videos—the estimated ratios are close to the actual ones. Taking a closer look at the effects of environmental conditions, we computed the accuracy of both methods on video frames extracted under daytime and nighttime conditions. As shown in Table~\ref{table:ratio_by_time}, both methods work better on video frames extracted in the daytime. This is because the camera can capture higher-quality images with clearer faces in the daytime. This enables better features to be, which enables the ratios to be estimated more precisely.
\begin{table}[t]
\caption{Average ground-truth and estimated mask-wearing ratios for each video.}
\label{table:ratio_estimation_videos}
\centering
\begin{tabular}{c|l|c|c|c|c}
\hline
\multirow{2}{*}{\textbf{ID}} & \multirow{2}{*}{\textbf{Location}} & \multirow{2}{*}{\textbf{Covid-19}} & \multirow{2}{*}{\textbf{GT Ratio}} & \multicolumn{2}{c}{\textbf{Estimated Ratio}} \\ \cline{5-6}
 & & & & \textbf{\begin{tabular}[c]{@{}c@{}}Retina-\\ Face$\star$\end{tabular}} & \textbf{CSRNet} \\ \hline
01 & Asakusa & Before & 0.00 & 0.01 & 0.14 \\
02 & Shibuya & Before & 0.05 & 0.04 & 0.06 \\
03 & Kawasaki & Before & 0.04 & 0.02 & 0.06 \\
04 & Ginza & Before & 0.01 & 0.01 & 0.14 \\
05 & Kagurazaka & Before & 0.02 & 0.02 & 0.11 \\
06 & Shibuya & Before & 0.05 & 0.03 & 0.05 \\ \hline
07 & Aomori & During & 0.14 & 0.12 & 0.12 \\
08 & Kichijoji & During & 0.28 & 0.28 & 0.32 \\
09 & Saitama & During & 0.76 & 0.64 & 0.38 \\
10 & Tokyo & During & 0.71 & 0.58 & 0.41 \\
11 & Koenji & During & 0.46 & 0.42 & 0.37 \\
12 & Shibuya & During & 0.44 & 0.41 & 0.31 \\
13 & \begin{tabular}[c]{@{}l@{}}Shinjuku\\ Yotsuya\\ Ichigaya\end{tabular} & During & 0.88 & 0.83 & 0.53 \\
14 & \begin{tabular}[c]{@{}l@{}}Tokorozawa\\ Aviation\end{tabular} & During & 0.98 & 0.91 & 0.54 \\
15 & \begin{tabular}[c]{@{}l@{}}Shibuya\\ Yoyogi\\ Harajuku\end{tabular} & During & 0.88 & 0.80 & 0.42 \\
16 & Hachiko & During & 0.92 & 0.85 & 0.42 \\
17 & Oimachi & During & 0.96 & 0.88 & 0.56 \\ \hline
\end{tabular}
\vspace{-2mm}
\end{table}

\begin{table}[t]
\caption{Face mask ratio estimation results (Pearson correlation coefficients $\gamma$) on NFM testing set by time captured.}
\label{table:ratio_by_time}
\centering
\begin{tabular}{l|c|c}
\hline
\textbf{Method} & \textbf{Daytime} & \textbf{Nighttime} \\ \hline
RetinaFace$\star$ & 0.95 & 0.90 \\
CSRNet & 0.80 & 0.63 \\ \hline
\end{tabular}
\vspace{-6mm}
\end{table}

\subsection{Operation speed}
We used the same machine (Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20 GHz with one Tesla V-100 GPU card) to calculate the operation speed of the proposed methods. As described above and shown in Table~\ref{table:face_detection_mae_correlation}, the improved RetinaFace-based estimation method clearly outperformed the CSRNet-based one in terms of both the MAE and correlation coefficient metrics. However, it was slower. While the CSRNet-based estimation method operated at 3.17 FPS, our the RetinaFace-based estimation methodone operated at 0.81 FPS (because RetinaFace is an one-stage object detector, it predicts the bounding boxes for masked faces and unmasked faces at the same time).

An advantage of the RetinaFace-based method is its ability to accurately estimate the mask-wearing ratio while a disadvantage is its low operation speed. In contrast, the CSRNet-based one can operate four times faster but with less accuracy. Furthermore, the CSRNet models are more compact \footnote{The numbers of learnable parameters of CSRNet and improved RetinaFace are 16.26M and 29.39M, respectively.}.

\section{CONCLUSION AND FUTURE WORK}
We have presented the first comparative evaluation of detection-based and regression-based approaches for estimating the mask-wearing ratio. For detection-based estimation, we used an improved RetinaFace-based face detector enhanced with a bi-directional feature pyramid network and trained using the Focal loss function. For regression-based estimation, we used two CSRNet models to estimate the total number of faces and the number of unmask faces in video images. Evaluation of these methods on our large-scale face mask dataset (581,108 annotations) revealed the advantages and disadvantages of each approachmethod. Future work includes integrating the two approaches into a unique framework that can be jointly trained. This framework should enable efficient switching between settings to achieve accurate estimations under different conditions.

 \section*{ACKNOWLEDGMENTS}
 This research was partly supported by JSPS KAKENHI Grants (JP16H06302, JP18H04120, JP21H04907, JP20K23355, JP21K18023), and JST CREST Grants (JPMJCR20D3, JPMJCR18A6), Japan.

{\small
\bibliographystyle{ieeetr}

redpajama_set_name: RedPajamaArXiv


... one of the world's largest museums, the most visited art museum in the world and a historic monument. A central landmark of Paris, it is located on the Right Bank of the Seine in the 1st arrondissement (district).
The museum is housed in the Louvre Palace (Palais du Louvre) which began as a fortress built in the late 12th century under Philip II. Remnants of the fortress are visible in the basement of the museum. The building was extended many times to form the present Louvre Palace.
In 1682, Louis XIV chose the Palace of Versailles for his household, leaving the Louvre primarily as a place to display the royal collection, including, from 1692, a collection of antique sculpture.
During the French Revolution [1789–1799], the National Assembly decreed that the Louvre should be used as a museum, to display the nation's masterpieces.
The size of the collection increased under Napoleon and the museum was renamed the Musée Napoléon. After the defeat of Napoléon at Waterloo, many works seized by his armies were returned to their original owners.
The Louvre Museum in Paris is laid out into four sections or wings, each of which serves its own purpose. The heart of the Louvre Museum is the Carrousel du Louvre which is where the famous glass pyramid... is located. This pyramid was designed by the American architect I.M. Pei [and finished in 1989].
The Dennon section of the Louvre Museum Paris is a 500 meter long hall with rooms branching off it that runs parallel to the river Seine. The Richelieu wing of the Louvre is situated adjacent to the Rue de Rivoli, while the Sully end of the Louvre Museum forms the eastern part of the museum.
The Louvre was created in several phases. Originally built as a 12th century fortress, it was converted into a royal palace in the 14th century.
Its current appearance goes back to the 15th century, when the original fortress was demolished and the wing along the Seine river was built. The palace was extended during the 16th century by architect Pierre Lescot, who expanded the palace into a complex with two courtyards. A decade later Catharina de Medici added the Tuileries palace to the west of the Louvre. Construction on the Louvre was halted for some time when King Louis XIV decided to move to the Versailles Palace.
In the 19th century, during the Second Empire, the Louvre was expanded again with the addition of the Richelieu wing.
The Louvre now had four symmetric wings surrounding a large courtyard. This would not last long, as the Communards burned the Tuileries palace in 1871, opening up the west side of the palace.
The collection of the Louvre Museum was first established in the 16th century by King Francis I. One of the works of art he purchased was the now famous "Mona Lisa" painting. The collection grew steadily thanks to donations and purchases by the kings. In 1793, during the French Revolution, the private royal collection opened to the public.
The most recent addition to the Louvre was the construction of the glass pyramid, which functions as the museum's main entrance. The pyramid was built in 1989 by the renowned American architect I.M. Pei. The glass pyramid allows the sunlight to come in on the underground floor.
The first Louvre was a fortress built at the beginning of the 13th century by Philip II Augustus to defend the Seine below Paris against the Normans and English. It consisted of a thick cylindrical donjon (dungeon) surrounded by towered walls. This château, enlarged and embellished by Charles V in the 14th century, was sacrificed in the 16th century at the end of the reign of Francis I in order to make room for a new Renaissance structure of the same size. Only the west wing and part of the south wing of the projected palace, conceived by the architect Pierre Lescot ... were finished.
In 1564 Catherine de Médicis had her architect, Philibert Delorme, build a little château in a neighboring field to the west called the Tuileries. It was then decided to create a grandiose royal residence by joining the Louvre and the Palais des Tuileries by a series of buildings. The most important is the Grande Galerie built along the Seine in the reign of Henry IV.
In the 17th century Louis XIII and his minister Richelieu extended Lescot's west wing northward by adding the majestically domed Pavillon de l'Horloge (clock pavillion) by Jacques Lemercier and recreating Lescot's building beyond it.
Under Louis XIV and his minister Colbert, the Cour Carrée, a great square court, was constructed by Louis Le Vau. The east façade of the east wing was later given a classical colonnade by Le Vau and Claude Perrault. The royal apartments were sumptuously decorated by Charles Le Brun and others, as the Galerie d'Apollon still bears witness. The Louvre was abandoned as a royal residence when Louis XIV moved the court to Versailles in 1682.
After the Revolution of 1789, Napoleon I, later kings, and Napoleon III lived in the Tuileries. The Louvre was used for offices and a museum. Along the Rue de Rivoli, Napoleon I began a wing parallel to that of Henry IV along the Seine. Napoleon III finished the wing, thus closing the great quadrilateral.
A few years later, during the uprising of the Paris Commune in 1871, the Tuileries was burned. Paradoxically, the disappearance of the Tuileries, which had originally brought about the extension of the Louvre, opened the admirable perspective that now stretches from the Arc du Carrousel west through the Tuileries Gardens and the Place de la Concorde to the Place Charles de Gaulle.


text:
Q: Unit testing a method with no observable state change (C#, Rhino Mocks, MbUnit).
I have a class called AccountManager that has a RegisterUser() method. This method returns void but does throw an exception for any errors. AccountManager calls into an IDataRepository calling its AddUser() method to do a database insert.
I'm mocking the IDataRepository using a Rhino Mock and throwing and exception for a given set of arguments simulating the exception being raised in the repository.
[Test]
    public void RegisterKnownUser()
    {
        MockRepository mocks = new MockRepository();
        IDataRepository dataRepository = mocks.StrictMock<IDataRepository>();

        using (mocks.Record())
        {
            Expect.Call(() => dataRepository.AddUser("abc", "abc", "abc@abc.com", "a", "bc")).Throw(
                new InvalidOperationException());
        }

        using (mocks.Playback())
        {
            AccountManager manager = new AccountManager(dataRepository);
            Assert.Throws(typeof (InvalidOperationException), () => manager.RegisterUser("abc", "abc", "abc@abc.com", "a", "bc"));
        }
    }

This test works fine.
My question is what to do about the situation where the args supplied to RegisterUser are correct and valid. The real IDataRepository would not return anything nor would it thrown any exceptions. So in short AccountManager's state would not have changed. Does this mean I don't need to test AccountManager.RegisterUser when it would result in nothing I can observe directly in the class and method under test. Testing against state in the mock smells a bit to me. I think as long as I test IDataRepository.AddUser seperately then I shouldn't need to test AccountManager.RegisterUser for inputs that would result in nothing observable in the class.
Thanks in advance.

A: If AccountManager calls into DataPrepository, then your test case still validates something.  The record/playback here validates that a call is made into it.  If the call is not made, the test case will fail.  If it is made twice/with the wrong args, it will fail.
This may be a very basic test case, but it is still a good one, and doesn't require you to place state in the mock object.

A: You may want to test the method with valid arguments to ensure it does not throw any exception. In other words, you cannot observe state change or use a return value (since it's void), but you can observe that the method ran without exceptions.
By the way, if the method does not return a value nor change AccountManager state, it does change something otherwise (if not, than you should probably remove from your code the method which does nothing at all).
For example, it may affect DataRepository. Or add a record in the database. In this case, you can test at least if the data is changed or if the record is added successfully. Or it may log an event saying that the new user was registered, so you will be able, in your tests, to check if the log event is here.

I think as long as I test IDataRepository.AddUser seperately then I shouldn't need to test AccountManager.RegisterUser for inputs that would result in nothing observable in the class

If AccountManager.RegisterUser adds nothing to IDataRepository.AddUser except arguments enforcement, than yes, you don't have to test it if you already tested IDataRepository.AddUser. If it checks arguments, calls AddUser and does something else, it will be good to check if what it does is correct.
Let's say you have:
public void AddUser(string userName, string userMail, string passwordHash)
{
    // [...] Add a user to the database.
}

public void RegisterUser(string userName, string userMail, string passwordHash)
{
    if (string.IsNullOrEmpty(userName)) throw new ArgumentNullException(...);
    if (string.IsNullOrEmpty(userMail)) throw new ArgumentNullException(...);
    if (string.IsNullOrEmpty(passwordHash)) throw new ArgumentNullException(...);
    if (!Checks.IsValidMail(userMail)) throw new ArgumentException(...);

    this.AddUser(userName, userMail, passwordHash);

    this.SaveToLog(LogEvent.UserRegistered, userName, this.IPAddress);
}

In RegisterUser, you test the first four lines by passing wrong arguments and expecting an exception. The fifth line must not be tested, since you already tested AddUser. Finally, the sixth line must be tested to ensure that when you call RegisterUser with valid arguments, the log entry is created.

redpajama_set_name: RedPajamaStackExchange


Al Jazeera (The Island) is a Qatari broadcaster owned by the Al Jazeera Media Network. It is headquartered in Doha, Qatar. Al jazeera is an Arabic news and. الجزيرة خدمة إعلامية عربية الانتماء عالمية التوجه شعارها الرأي والرأي الآخر وهي منبر تعددي ينشد الحقيقة Al Jazeera Arabic قناة الجزيرة All videos; Live streams. Fomny Box TV Watch Al Jazeera TV Channel Live Online Al-Jazeera tv live streaming from Doha Qatar news channel in arabic. fomny box arabic tv.
Now Playing. al-nakba. Four-part series on the history of Palestine and the events of – a year which the Palestinians refer to as the 'nakba', or catastrophe. Watch Al Jazeera Arabic live stream gjestegaarden.com Jazeera is an Arabic news and current affairs satellite TV channel broadcasting from Doha, Qatar; owned. Live TV stream of Al Jazeera Arabic broadcasting from Mideast. Channel description of Al Jazeera Arabic: News TV channel.
Al Jazeera Arabic Live TV is arabic. Al Jazeera (The Island), is a Qatari broadcaster owned by the Al Jazeera Media Network, also known as JSC ( Jazeera. غيرت قناة الجزيرة الفضائية – أولى قنوات شبكة الجزيرة – بصورة جذرية طريقة التغطية الصحافية لقضايا العالم العربي. وحظيت القناة تدريجيا بتفضيل المشاهد. Aljazeera arabic for iPhone allows you to watch live feed of aljazeera TV in Arabic If you are an Arabic person, you probably watch Aljazeera TV either using a. Al Jazeera also known as JSC (Jazeera Satellite Channel), is a state-funded broadcaster in Doha, Qatar, owned by the Al Jazeera Media Network. Initially launched as an Arabic news and current-affairs satellite TV channel. Download Al Jazeera English and enjoy it on your iPhone, iPad, and iPod touch. Al Jazeera English for iPhone and iPad brings you curated top stories, live and . It is little wonder they are hated by Arab and Western countries alike.
1 Jul Al-Jazeera was the first Arab channel to introduce proper investigative journalism and the first to entertain all kinds of previously off-limits. 1 Jul WERE it not for Saudi intolerance, there might never have been Al Jazeera, the Arab world's most popular news channel. In its formative days. 10 Jun For two whole minutes, the millions of viewers who tune in to Al Jazeera Arabic watched a highly-produced video of fighters from Jabhat. The Qatar-based Al Jazeera TV channel on Sunday urged Germany to release Ahmed Mansour, a senior Arabic service journalist who was arrested Saturday at .


Apart from hunting, observing and taking photos of animals and nature, Boscia is also an ideal place to relax and recuperate.
Once you have spent a few days between sunrise and sunset, you will have forgotten the stresses of everyday life in our world of pristine countryside as vast as the eye can see.
Encounters with the wildlife in this magnificent expanse and tranquillity are a true experience, especially in the morning and evening hours and offer incredible photo opportunities both for professional and amateur photographers.
The farmhouse is ideally situated on a hill and affords a unique panorama. Our guests sleep in five spacious and well-appointed double rooms. Every room has air-conditioning, a fridge and a bathroom, its own terrace, most with superb views of the savannah. The farmhouse also has a kitchen, a living and dining room. You will mostly eat outdoors under a large pergola next to the large open fire pit and a lawn with views of a well frequented waterhole, which is lit at night.
Of course we also look after your creature comforts: We provide full board consisting of typical local dishes, for which we use our own game, vegetables from the farm and enriched with products from the region. Experience pristine African wilderness coupled with European standards.
If you are looking for an exceptional and exclusive retreat, then the Eigner lodge is the perfect holiday home for you. This luxury African style villa is located about 4 km from the farmhouse. It offers three large double bedrooms incl. bathroom, panoramic windows and a private terrace, all the comforts of European luxury (German satellite TV, coffee machine, music system, cold storage room, etc.) surrounded by pristine grassland. A private gem that you are unlikely to find anywhere else. The large living and dining room, which is surrounded by a veranda, affords delightful views of the pristine, open African countryside, including a well frequented waterhole. You have your own beautiful pergola on a hill, with 360-degree views that create a feeling of space, tranquillity and freedom.
You have free access to WiFi in all rooms and on the grounds.
*Please register early to ensure availability.
Boscia has its own airfield with night lighting, suitable for Twin engine machines.
Pick-up: For your convenience, we can arrange for you to be collected from the airport; it only takes about 3 hours to get to the farm.
Arrival by car: From Windhoek along the B1 approx. 220 km south through Rehoboth, 10 km before Kalkrand you turn right into D1254 towards Schlipp, after 20 km you see the sign "Boscia Hunting and Guestfarm" on your left, and you see the main gate in another 800 m.
Arrival by plane: We have our own airport, the "Boscia Airstrip". It's about a 35-minute flight from Windhoek Eros Airport, flight time to Swakopmund is about 2 hours, and to Sossusvlei about 1 hour, depending on the aircraft.
Arrival by plane: We have our own airport, the "Boscia Airstrip". it's about a 35-minute flight from Windhoek Eros Airport, flight time to Swakopmund is about 2 hours, and to Sossusvlei about 2 hours.


In the study presented here, the problem of calculating deflection of statically indeterminate continuous beams and structural frames is addressed. The elastic line equation, taught in many standard courses in structural mechanics is used to determine the structure deflections.In the investigated method, the structure is divided into a simply supported members in which the elastic line equation is applied to calculate the deflection shape of the structure. The results are compared with the finite element method (FEM) and good agreement is obtained. Moreover, the advantage of this method is that it is simplified, general, not time-consuming, and it can be standardised to this type of structures.
Keywords: Elastic line equation, Statically indeterminate structures, Finite element method.


text:
2023: Tinubu will secure highest votes in Ebonyi – Lawmaker
Akelicious — December 27, 2022 1 comment
The lawmaker representing Ezza South/Ikwo federal constituency in the national assembly has assured that the presidential candidate of the All Progressives Congress, APC, Ahmed Bola Tinubu will secure the highest votes in the 2023 general election in Ebonyi State.
Ogah made this known at his hometown at Item Amegu community in Ikwo LGA of Ebonyi State during the Christmas celebration.
He charged the citizens of his constituency to vote for all candidates of the APC and threatened not to see any opposition political parties in Ikwo land.
According to him: "Everybody that came here must go home with a bag of rice. With this, everybody must vote for our incoming President, Ahmed Bola Tinubu because he is the one that will secure the highest votes in Ebonyi State come the 2023 general election.
When this is done, we will be able to stand firm in the national assembly to ask that we should be given more position by the President. We will vote for all the APC candidates starting from our governorship candidate, Ogbonnaya Nwifuru.
READ ALSO 2023: FCT Police Beef Up Security Ahead Of PDP Presidential Primary
"I stand with him (Nwifuru) and from today, I don't want to see any opposition political parties in Ikwo land. You cried for roads and I have given you roads. You cried for water and I have given you water. You cried for employment and I have given your sons and daughter employment. And so, you have to vote for APC candidates" he stated.
Pingback: 2023: Tinubu will secure highest votes in Ebonyi - Lawmaker Akelicious - powermeentrepreneurs

redpajama_set_name: RedPajamaCommonCrawl


text:
package fengfei.berain.server;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import models.RainModel;

import org.apache.commons.codec.digest.DigestUtils;

public class DbPersistence implements Persistence {

	/*
	 * (non-Javadoc)
	 *
	 * @see fengfei.berain.server.Persistence#addNode(long, java.lang.String,
	 * java.lang.String)
	 */
	@Override
	public RainModel addNode(String pid, String key, String value) {

		String path = SEPARATOR + key;
		RainModel pm = RainModel.findById(pid);
		if (pm != null) {
			path = pm.path + path;
		}
		RainModel model = new RainModel();
		model.pid = pid;
		model.key = key;
		model.path = path;
		model.value = value;
		model.updateAt = new Date(System.currentTimeMillis());
		model.md5 = DigestUtils.md5Hex(model.key + model.value);
		model.updateAt = new Date(System.currentTimeMillis());
		model.createAt = new Date(System.currentTimeMillis());
		model.save();
		RainModel another = RainModel.findById(pid);
		if (another != null) {
			long count = RainModel.count(" pid=?", pid);
			another.leaf = (int) count;
			another.save();
		}

		System.out.println(model);
		return model;

	}

	/*
	 * (non-Javadoc)
	 *
	 * @see fengfei.berain.server.Persistence#editNode(long, java.lang.String)
	 */
	@Override
	public RainModel editNode(String id, String value) {
		RainModel another = RainModel.findById(id);
		if (another != null) {
			another.updateAt = new Date(System.currentTimeMillis());
			another.value = value;
			another.md5 = DigestUtils.md5Hex(another.key + another.value);
			another.save();
			return another;
		}
		return null;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see fengfei.berain.server.Persistence#removeNode(long)
	 */
	@Override
	public RainModel removeNode(String id) {
		RainModel another = RainModel.findById(id);
		if (another == null) {
			return null;
		} else {
			recursionRemoveNode(id);
			another.delete();

			return another;
		}

	}

	private void recursionRemoveNode(String id) {
		List<RainModel> models = RainModel.find("pid", id).fetch();
		if (models != null && models.size() > 0) {
			for (RainModel model : models) {
				recursionRemoveNode(model.id);
				model.delete();
			}
		}

	}

	@Override
	public RainModel getNode(String id) throws Exception {

		return RainModel.findById(id);
	}

	@Override
	public boolean exists(String path) throws Exception {
		List<RainModel> models = RainModel.find("path=?", path).fetch();
		if (models != null && models.size() > 0) {
			return true;
		} else {
			return false;
		}

	}

	public RainModel getNodeByPath(String path) throws Exception {
		List<RainModel> models = RainModel.find("path=?", path).fetch();
		if (models != null && models.size() > 0) {
			return models.get(models.size() - 1);
		} else {
			return null;
		}
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see fengfei.berain.server.Persistence#nextNodes(long)
	 */
	@Override
	public List<RainModel> nextNodes(String id) {
		List<RainModel> models = null;
		if (START_ROOT_ID.equals(id)) {
			models = RainModel.find("path=?", Focus.namespace).fetch();
			if (models == null || models.size() == 0) {
				RainModel model = new RainModel();
				model.pid = "_";
				model.key = Focus.getKey(Focus.namespace);
				model.value = "Rain Root";
				model.path = Focus.namespace;
				model.updateAt = new Date(System.currentTimeMillis());
				model.md5 = DigestUtils.md5Hex(model.key + model.value);
				model.updateAt = new Date(System.currentTimeMillis());
				model.createAt = new Date(System.currentTimeMillis());
				model = model.merge();
				models = new ArrayList<>();
				models.add(model);
			}
			return models;
		} else {
			models = RainModel.find("byPid", id).fetch();
		}

		return models;
	}

	public void initNamespace() {
		Focus.namespace = Focus.removeLastSlash(Focus.namespace);
		List<RainModel> models = RainModel.find("path=?", Focus.namespace)
				.fetch();
		if (models == null || models.size() == 0) {
			RainModel model = new RainModel();
			String key = Focus.getKey(Focus.namespace);
			if (ROOT_PATH.equals(Focus.namespace)) {
				key = "root";
			}
			model.pid = "_";
			model.key = key;
			model.value = "Rain Root";
			model.path = Focus.namespace;
			model.updateAt = new Date(System.currentTimeMillis());
			model.md5 = DigestUtils.md5Hex(model.key + model.value);
			model.updateAt = new Date(System.currentTimeMillis());
			model.createAt = new Date(System.currentTimeMillis());
			model = model.merge();

		}

	}

	public boolean copy(String originalPath, String newPath) throws Exception {
		return true;
	}

	static final String START_ROOT_ID = "_app_root";

}

redpajama_set_name: RedPajamaGithub


text:
Андре́й Ло́гинов: Логинов, Андрей Викторович (род. 1957) — российский государственный деятель.
 Логинов, Андрей Сергеевич (род. 1972) — российский легкоатлет.

redpajama_set_name: RedPajamaWikipedia


text:
Global dividends just a year away from pre-pandemic levels
By Cameron Micallef August 23 2021
The strong business recovery from the COVID-19 pandemic has seen a surge in global dividends, with experts now predicting dividends will reach pre-pandemic levels in just 12 months' time.
In a boost for investors, analysis by Janus Henderson has revealed signals of strong growth for investors in Q2.
Globally, dividends jumped by 26.3 per cent year-on-year on a headline basis, recovering to $628.3 billion and are now only 6.8 per cent below their Q2 2019 level.
Janus Henderson's client portfolio manager, Jane Shoemake, noted that, in Australia, the most important contribution was made by Westpac, which paid a dividend one-third lower than its pre-pandemic level.
Even so, this was significantly more than it was permitted to pay at the end of 2020.
In a seasonally quiet quarter for Australia, payouts more than doubled (+103.6 per cent) on an underlying basis.
Ms Shoemaker said the dividend market was following traditional boom and bust cycles.
"Just as the impact of the pandemic on company dividends has been consistent with a conventional but severe recession, so the recovery is also consistent with the rapid economic bounce-back now occurring in those parts of the world where vaccination programs are enabling economies to reopen," she said.
She noted that across the world, the restart of cancelled dividends has driven the recovery so far, but they are also seeing stronger dividend growth than expected.
"Despite the severity of the recession last year, global dividends in aggregate will likely regain their pre-pandemic levels within the next 12 months," Ms Shoemake said.
The portfolio manager also pointed out a number of key tailwinds for the market, with global leaders continuing to support businesses as they battle through the pandemic.
"The corporate world is awash with liquidity and the financial system is robust," she continued.
"The banks generally hold surplus capital, and policymakers continue to provide fiscal and monetary support for economies, so this recovery will not be hampered by a weak banking system as it was after the global financial crisis a decade ago."
Ben Lofthouse, head of global equity income at Janus Henderson, added investors who took advantage of the downturn last year, especially in the tourism sector, were the major benefactors of this turnaround.
"As the global economy rebounds, the broad recovery in dividends makes it possible for investors once again to have a wide spread of sectors that are generating income, diversifying the risk of stock and sector-specific issues," Mr Lofthouse said.
"This is the approach our funds are following.
"In terms of the highest-yielding sectors, the financial services and commodity sectors dividend outlooks are the most improved since last year."
Last Updated: 23 August 2021 Published: 23 August 2021
Holdings in international stocks now outrank some of Australia's biggest companies. ...Read more
Only six Australian companies received an A grade from Monash University for their modern slavery statements. ...Read more
Qantas expects to end the year with a loss, though the company insists that its recovery program remains on track. ...Read more
Retail investors flocked to EV and ETF opportunities in 2021
EV companies proved a favourite among retail investors in 2021. ...Read more
You can now invest in a meme stock ETF
Those looking to leverage the hype of the WallStreetBets bandwagon have a new option to consider. ...Read more
Millennials are opening share trading accounts at an 'unprecedented' rate
More than two in five Australian millennials are now investing rather than spending. ...Read more
Are there still opportunities in reopening trades?
As vaccination rates around the country rise and restrictions ease, investors continue to turn to the companies that are set to benefit the most, such as travel and hospitality stocks. ...Read more
Spaceship adds new $2.50 account fee
New account maintenance fees for the popular micro-investing app are set to come into effect from November 2021. ...Read more


DynamicAccounting.net: Don't be a Turkey. Register for Decisions Fall 2011 NOW!
The Thanksgiving Holiday is almost here in the U.S. but before you stuff yourself and forget that GP Day at Decisions Fall 2011 is Tuesday December 6, go register now. You'll be busy the week after Thanksgiving and it's easy to forget. Work is winding down already, folks will be out early, or out out altogether, tomorrow so today is the days to sign up!
Don't miss out on al of the great Dynamics GP content.


Because my garage looks like a Saab exploded in it, I was forced to find alternative storage for Spark. I originally had her under a thick and big tarp, but with all the wind, snow, and rain we have had this winter, all it was doing was trapping moisture under it. I needed a better plan.
Thankfully a local storage place was having a winter sale. The "Storage Inn" was renting spaces up to 50% for the winter months only. I picked up a nice clean and dry 10x20 foot space for $130 a month. On her trailer, Spark JUST fits with some wiggle room to spare.
Next step is to dump her off of her trailer so I can rebuild it.


Welcome to SuperFunStuff.co.uk! We have a great range of kid's and adult's novelties, inflatable toys, fancy dress accessories and outfits, gift ideas, themed party supplies, novelty stationery and much more.
Our huge inflatable toys range includes inflatable animal themes such as jungle animal, zoo animal, sea animal, blow up farm animals and inflatable dinosaurs. Also featuring in this section is a great selection of inflatable musical instruments, inflatable beach balls, inflatable food and our fantastic party and event inflatables. If you're looking for a cool inflatable novelty as a gift or for your event, you're in the right place, from small to large we have the right blow up for you. Including products for nightclub events, festivals, kid's parties, photo booth props and karaoke parties.
We cater for all different kinds of parties, with our inflatables and novelties being favourites amongst kid's and adult's events alike. We have products to compliment many themes including beach party, farm animal, jungle / zoo animal party, dinosaur party, emoji, princess party, pirate theme, space, karaoke party, sea animal party, cowboys and indians, USA / american themed, sports themed and many more children's and adult's party themes.
Check out our gift ideas section for a wide range of weird and wonderful novel ideas, with a great selection of kid's and adult's desk toys, emoji and smiley novelties, toy vehicles, toy weapons, novelty keyrings, pool toys, rubber ducks and joke toys. Our novelty stationery is also a great place to find back to school gifts and novelties for kids, featuring sharpeners, pens, pencils, erasers and rulers.


This eight-page document contains fifteen of the most beloved Bible passages. It's a great way to get a taste of what The Message has to offer! View it below or click the link on the right to download.
Compare The Message® to any other translation and you'll see just how much it speaks to the heart.


Carrie Underwood and Keith Urban briefly took fans to a rock show at their stop in Canberra, Australia on Dec. 10 with a gritty cover of Stevie Nicks and Tom Petty's "Stop Dragging My Heart Around."
The two have been traveling Down Under for Urban's Ripcord Tour and decided to treat the audience to a fun take on the '80s hit, which allowed for both Urban's guitar prowess and Underwood's powerful vocals to shine.
Underwood wore a rockstar-approved outfit — a sleeveless black tee with cutouts along the edges and "ROCK STAR CHIC" subtly printed on the front and rhinestoned, ripped jeans — that added to the edgy aesthetic perfectly. Urban showed off his guitar riffs from the get-go, joining Underwood for harmonies on the first chorus. Underwood began the second verse, giving it over to Urban for the next section. Toward the end the singers traded off singing the titular phrase with all the grit and soul it requires, then threw it to the audience for their turn before wrapping up with some epic ad-libs. The two clearly have a blast on stage together, and their voices blended seamlessly as they perform, adding a memorable moment to the set for fans.
Underwood and Urban also treated fans to the first-ever live performance of their duet "The Fighter," which appears on Urban's Ripcord album.
Carrie Underwood Takes the Plunge ... Skydiving!


# use mesh smoothing and generate surface normals to give a pleasing result.
# a Cyberware laser digitizing system.
# Read the corresponding texture.
# the total reduction possible, which we have specified at 90%.
(a) Decimation of laser digitizer.


Chances are this is already on your radar, but the Vancouver International Mountain Film Festival is happening November 12-14. Highlights include local alpine skiers/authors Linda Bily and John Baldwin; climber Will Stanhope; film screening of Jumbo Wild; and a Nepal Fundraiser night.
* Tom Curran led 8 VOCers up Mt. Frosty (http://www.ubc-voc.com/2015/10/30/mt-frosty-hike-the-golden-carpets) .
Pretrip is in like two hours (ie, at 5:30 pm) in Angus 334.
Hi guys! I would like to plan a day hike for those who are unable to perhaps go up to the Brew Hut overnight. I can't make it to the pre-trip meeting but I want to get outside this weekend and therefore would be willing to do a day hike.
Depending on the weather, safety and snow level I would like to do the Lions! I haven't done it before and would love to try. I am planning to go up from the Howe Sound side. Let me know if you are interested or if the weather may make the hike unsafe. We may not make it up to the top but we may as well try!
Icebreaker Merino, one of our Meru fundraiser sponsors, is having a sample sale (up to 70% savings) at the Empire Landmark Hotel. You can also get 10% off on Sunday when you buy $100 on Saturday!
Sign up as interested so that we can let Icebreaker know roughly how many people will be coming.
Hey all G1 graduates, prospective G2ers, AST 1 prospectives, or ski mountaineers/ski mountaineers in-training! We've heard from y'all that you're super stoked to learn how to travel on glaciers this year! That's awesome; but unfortunately, due to a low snow year this past year, the glaciers are pretty sketchy right now. But have no fear; your solution is here! I know we're all mountain people, but why not learn these skills such as self arrest, crevasse rescue, and companion rescue on Wreck Beach?! Clinics will discuss crevasse rescue steps, self arrest, roping up for glaciers, and any advanced crevasse rescue skills you wish to learn. **UPDATE: Clinic will now discuss skills for winter travel in the backcountry, such as avalanche companion rescue in addition to glacier-travel skills.***This event will be hosted bi-weekly on Thursday or Monday evenings, so if you don't make it out now surely sign up again for the next event! Get stoked to get safe out there!!
It's about that time of year where sunny days are getting shorter, and it's beginning to rain more in the city....but why care about the city; after all, we're a mountain club of course! And as some of you know already, the old addage "if it's raining in the city, it's snowing in the mountains" applies perfectly for our location in Vancouver, so might as well take advantage of it! Join me, as well as 2-3 other hand-picked experienced VOC members, to show you how to slay the POW (deep snow) that is found in Canada's Coast Mtns by journeying to Elfin Lakes hut for a weekend!
-Who: Participants with beginner-level prior skiing/snowboarding experience, preferably having experience with day-trips in the backcountry wishing to experience an overnight ski touring trip with guidance and instruction.
-What: 2-day overnight ski touring hut trip.
-Where: Elfin Lakes Hut via Elfin Lakes Trail and Red Heather. Route follows a 12-15km long logging road. Steepest grade: 15-20 degrees.
-When: Depart Vancouver 6:30am Sat. morning; arrive back in Vancouver Sun. night.
-How: You'll find out! Get stoked!!
It just will not stop raining. What am I supposed to do outside now that the shoulder season is upon us?
Don't panic. The climbing season might be over, but it had to end sometime for us to be able to go skiing this winter - and at least the snowfall looks better right now than it did last year (not that that's saying much). It's even a good time for beginner-friendly hiking epics to the VOC's huts. Memorize the routes up now, before there's 4+ feet of snow on the ground.


text:
Introducing: our 2020 Award Lecturers
The British Science Association (BSA) is pleased to announce the winners of its prestigious Award Lectures for 2020. Following a competitive selection process, seven top UK researchers have been recognised for their cutting-edge work and committed public engagement efforts.
The winners and their respective Awards are:
Dr Richard Tyser, University of Oxford, is the Charles Darwin Award Lecture winner for Agriculture, Biological and Medical Sciences
Dr Carolyn McNabb, University of Reading, is the Margaret Mead Award Lecture winner for Social Sciences
Dr Chris Pak, Swansea University, is the Jacob Bronowski Award Lecture winner for Science and the Arts
Dr Daniella Rabaiotti, Institute of Zoology ZSL, is the Charles Lyell Award Lecture winner for Environmental Sciences
Dr Xinyuan Wang, University College London, is the Daphne Oram Award Lecture winner for Digital Innovation
Dr Meera Joshi, Imperial College London, is the Isambard Kingdom Brunel Award Lecture winner for Engineering, Technology and Industry:
Dr Euan Allen, University of Bristol, is the Rosalind Franklin Award Lecture winner for Physical Sciences and Mathematics
Each Award Lecturer has historically delivered a special talk at the British Science Festival. As the British Science Festival is not taking place in September, all 2020 Award Lecturers will be presenting at the British Science Festival 2021. The event will be hosted by Anglia Ruskin University and held in Chelmsford and Essex from 7-11 September 2021.
Ivvet Modinou, Director of the British Science Festival, said: 'We're delighted with the year's cohort of Award Lecturers and we'd like to extend our warmest congratulations to them. The breadth of research covered is inspiring and doesn't always get the attention it should, so we're thrilled to offer these talented early-career researchers the chance to showcase their work. Alas, given the current situation, we will have to wait until 2021 to hear from them in person'.
The Award Lectures have been presented since 1990. They are to recognise and promote the pivotal research being carried out in the UK by early-career scientists. Notable Award Lecture winners include: Professor Brian Cox (winner in 2006), Maggie Aderin-Pocock (2008) and Richard Wiseman (2002).
About the 2020 Award Lectures
Charles Darwin Award Lecture for agricultural, biological and medical sciences
Dr Richard Tyser, University of Oxford
This event will draw on research examining the early developmental processes behind the formation of the heart, using pioneering techniques including time-lapse imaging of heart development. With congenital heart defects occurring in 1 out of 150 births, find out how understanding the first heartbeat can have enormous implications for the treatment of heart conditions.
Margaret Mead Award Lecture for social sciences
Dr Carolyn McNabb, University of Reading
How important is friendship and how can it change the way our brains grow? Drawing on their experience of using magnetic resonance imaging (MRI) to study the influence of friendship and stress on brain development, the speaker will explain what their research might mean for spreading positive behaviour and reducing the damaging influences of challenging experiences in adolescents.
Jacob Bronowski Award Lecture for science and the arts
Dr Chris Pak, Swansea University
Through their research, specialising in science fiction, this speaker will demonstrate how digital, environmental and animal sciences play a key role in creative writing and other media. They are fascinated by the concepts of terraforming and panotropy - the modification of planets and bodies to enable the habitation of otherwise uninhabitable environments, respectively. The representation of these topics in literature allows us to engage with issues linked to with climate change and the environment.
Charles Lyell Award Lecture for environmental sciences
Dr Daniella Rabaiotti, Institute of Zoology ZSL
This lecture will explore species extinctions due to climate change. Using the case study of African wild dogs, the speaker will highlight how long-term data and technological advances in tracking can offer insights into behavioural change and influence the way conservation scientists work to prevent climate driven species loss.
Daphne Oram Award Lecture for digital innovation
Dr Xinyuan Wang, University College London
Through research in the field of digital anthropology, this lecturer has gained a fascinating insight into the use of social media across different nations and people groups. They have previously spent 15 months living in a factory town in China, learning how social media is providing a new type of online home for migrant workers, who have left their communities to work in urban areas. This field helps us understand how the online and physical world are shaping each other.
Isambard Kingdom Brunel Award Lecture for engineering, technology and industry
Dr Meera Joshi, Imperial College London
Revealing the role of wearable sensors in emergency medicine and surgery, this lecturer will explore how new technology allows patients with sepsis to be quickly identified, dramatically improving patient outcomes. They will also shed light on the implications of this new technology for models of healthcare in the wider community.
Rosalind Franklin Award Lecture for physical sciences and mathematics
Dr Euan Allen, University of Bristol
This lecturer will discuss what the development of highly powerful quantum computers will mean for hard to tackle problems across all areas of science and society. From drug discovery and material engineering to understanding the aerodynamics of planes and optimising delivery routes, this emergent hardware may be able to address some of the most challenging questions we face. But why is it so difficult to develop this technology, that guides and control light on a scale smaller than a human hair? And what might the advancement of quantum computers mean for the fairness and security of future societies?
Hear from our 2020 Award Lecturers
We will be publishing a series of interviews with all of our 2020 Award Lecturers over the coming months. This will provide an opportunity to showcase each lecturer and to also bring to life the themes and topics their work focuses on.
British Science Festival 2020
The British Science Association and Anglia Ruskin University have taken the difficult, but sadly inevitable, decision to postpone the British Science Festival 2020, due to take place from 8 – 12 September in Chelmsford.
The safety of everyone in our community is paramount and – due to the ongoing social distancing measures – it is impractical to plan and execute an event on the size and scale of the Festival at this challenging time.
The Festival will take place instead from 7 – 11 September 2021. Further updates will follow in due course, and the full programme will be launched in June 2021.
We would like to thank everyone who has been involved to date in the planning of the British Science Festival 2020, and look forward to continuing to build relationships with partners across the city in the lead up to the Festival next year.
Read the full statement here.
Future of the Award Lectures
We expect that this will be the last time the Awards carry their current titles.
There are several challenges with naming Awards such as these after individuals. One is that the most prestigious or well-recognised names in Western science do not reflect all the people who contributed to the current state of science, due to colonialism and structural racism & sexism. Another is we believe that naming Awards after individuals contributes to narrow societal stereotypes about scientists being lone geniuses (and there's evidence that indicates narrow stereotypes contribute to under-represented groups seeing science as "not for me").
Therefore, instead of the 'Isambard Kingdom Brunel Award Lecture for Engineering Technology & Industry' the title would become the 'British Science Association Award Lecture for Engineering, Technology & Industry', and so on.
We recognise that renaming these Awards is just one step, and the BSA is currently considering the idea of conducting a review that will seek to assess where our heritage and history, while very successful in many respects, may be at odds with the values, aims and explicit EDI focus (of transforming the diversity and inclusivity of science) of the modern BSA and the organisation we want to be in the future.
Published: 7th July, 2020
Author: Beth-Louise Sturdee
Building community connections from the ground up
Back in summer 2020, we were looking for researchers to help us extend our community engagement programme by "buddying up" with community organisers in their local area. We received great interest from researchers across the country, but how do we go about building those relationships? We sought the expertise of Froi Legaspi from Citizens UK to help us develop and deliver relational training for our cohort.
Introducing: our 2020 Media Fellows
We are delighted to announce this year's cohort of Media Fellows.
A dose (or two) of happiness for the holidays, but what next?
The success of the COVID-19 vaccine development programmes is just another unprecedented phenomenon of 2020. So how do we celebrate this news, without getting our hopes up or having unrealistic expectations? Protecting against the virus is one part of the puzzle, but the pandemic needs more than medical treatment to end.
The forgotten generation: the impacts of COVID-19 on young people
Despite young people being one of the worst-affected groups amidst the COVID-19 pandemic, there has been little political attention paid to the concerns and fears of young people. We spoke to some young people directly to get their views on how the pandemic has impacted them.
A call for evidence: Launch of inquiry into equity in the STEM workforce
The All-Party Parliamentary Group (APPG) on Diversity and Inclusion in STEM launches its new inquiry into equity in the UK STEM workforce. This is the group's second inquiry.
Celebrating our Community Leaders
Despite facing unprecedented change and challenge over the last year, our 2020 Community Leader cohort have successfully managed to embed science engagement in their work. We have compiled some of the Leader's own words to celebrate these experiences and achievements.


text:
Q: Generate code file from data table adapter I'm working on an older web site application in C#, ASP.NET, which is now running on 4.7.2
The WebControlling.xsd contains the definitions, constraints and operations on the dataset with tables and table adapters.
For all the older tables there is a class operating on it as well as a view.
.App_Code
- BLL
- - Foo.cs
- DAL
- - WebControlling.xsd
.Portal
- Foo
- - Foos.aspx
- - FooAdd.aspx
- - FooEdit.aspx

The adapter has the regular Fill and GetData operations on it. Is there a way to generate some, if not all of this structure from the .xsd alone?
The other option I see is to copy and edit an existing class (like Foo.cs), but since all classes look the same I feel like they could be generated. I think it would be easier to use tooling if changes to this are necessery since it's less likely to fail and / or forget changes in some places.
This is what a Foo.cslooks like:
[System.ComponentModel.DataObject]
public class Foo
{
    private FooTableAdapter _fooAdapter;
    public Foos()
    {
    }

    protected FooTableAdapter Adapter
    {
        get
        {
            if (_FoosAdapter == null) _FoosAdapter = new FoosTableAdapter();
            return _FoosAdapter;
        }
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, true)]
    public WebControlling.FoosDataTable GetFoos()
    {
        return Adapter.GetFoos();
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
    public WebControlling.FoosDataTable GetFooByID(Guid ID)
    {
        return Adapter.GetFooByID(ID);
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
    public WebControlling.FoosDataTable GetFoosByCountryID(Guid ID, bool viewAll)
    {
        String sViewAll = viewAll ? "1" : "0";

        return Adapter.GetFoosByCountryID(ID, sViewAll);
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
    public WebControlling.FoosDataTable GetOpenFoosByCountryID(Guid ID, bool viewAll)
    {
        String sViewAll = viewAll ? "1" : "0";

        return Adapter.GetOpenFoosByCountryID(ID, sViewAll);
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
    public WebControlling.FoosDataTable GetFoosWithForeignValues()
    {
        return Adapter.GetFoosWithForeignValues();
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, false)]
    public WebControlling.FoosDataTable GetFooByIDWithForeignValues(Guid ID)
    {
        return Adapter.GetFooByIDWithForeignValues(ID);
    }

    public bool AddFoo(System.Guid FooID, System.String Name, Int32 FooYear, System.Boolean IsValid)
    {
        WebControlling.FoosDataTable Foos = new WebControlling.FoosDataTable();
        WebControlling.FoosRow Foosrow = Foos.NewFoosRow();

        Foosrow.ID = Guid.NewGuid();
        Foosrow.FooID = FooID;
        Foosrow.Name = Name;
        Foosrow.FooYear = FooYear;
        Foosrow.IsValid = IsValid;

        Foos.AddFoosRow(Foosrow);
        int rowsAffected = Adapter.Update(Foos);

        return rowsAffected == 1;
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Update, true)]
    public bool UpdateFoo()
    {
        ...
    }

    public bool UpdateFooState(System.Guid ID, bool IsClosed)
    {
        ...
    }

    [System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Delete, true)]
    public bool DeleteFoo(Guid ID)
    {
        ...
    }
}

Seems generated to me.
Edit:
This question has interesting insight into generating classes from .xsd. My question differs because:

*

*I'm looking for a way to also generate view in .aspx

*I'm looking to only generate one additional class, not the whole file again


text:
Map of Etna DOC redrawn to include nine new territories
09 November 2022 By Filippo Bartolotta
The map of the Etna DOC wine region has been updated to make it easier to identify the myriad contrade (districts or crus) on the slopes of the volcano, with nine new contrade identified as part of the process, taking the total to 142.
The recently completed work, which was undertaken by the Consorzio Tutela Vini Etna DOC, with a contribution of the Agriculture Department of the Department of Agriculture of the Sicilian Region, accurately identify the exact position and border of each contrada within the Etna DOC production area, which can be clearly identified on a 'real' map.
Previously, the contrade had been identified through interpretations of old cadastral maps, which feature now obsolete terrain and territorial limits that no longer exist due to the eruptions and activity of Mount Etna.
The new map provides a better snapshot of the multifaceted mosaic of contrade that surrounds Etna's wine producing area at the foot of the volcano from North to South. It was created from the most recent topographic surveys which were transferred in cartographic layers obtained through multiple surveys with GIS (Geographic Information System) instruments.
Francesco Cambria, president of the Consorzio Tutela Vini Etna DOC said the painstaking project was just "the first step in an even more articulated study project of the Etna area".
"There has never been a study of this type before," he said. "The goal is to definitively clarify the exact boundaries of the Etna contrade existing within the DOC and to identify the new ones that will be officially introduced in the coming months."
He said it indicated the "incredible biodiversity" that Etna offers, not only in the different vine slopes of the volcano, but also though the "facets of the many contrade, starting from the different stratifications of the lava flows and the exposure of the vineyards".
"All factors that make each contrada almost unique within the Etna area, capable of giving different nuances to its wines," he said.
New districts
During the surveying process, the updating of the borders led to the identification of 9 new districts, thanks to the collaboration of the producers belonging to the Consortium. This will be officially included in the next update of the production specification, taking the total number to 142.
The 142 contrades are divided across 11 municipalities, with 41 in Castiglione di Sicilia, 25 in Randazzo, 20 in Zafferana Etnea,13 in Piedimonte Etneo, 10 in Linguaglossa, nine in Trecastagni, eight in Milo, six in Viagrande, five in Biancavilla, four in Santa Venerina, and one in Santa Maria di Licodia,
The Etna DOC was established in 1968 and is the oldest in Sicily. Since 2011 it has acknowledged the contrada as legally equivalent to the UGA (additional geographical units).
"It is a first map, on a smaller scale, which will be further updated to enhance territorial differentiation in an even more precise way" Maurizio Lunetta, director of the Etna DOC Protection Consortium added.
"This is a first step to learn more about the styles of the individual contrade and to go even deeper in detecting the differences within the denomination".
This last step will be possible through the future zoning work that the Consortium is preparing together with the University of Catania and the University of Milan-Bicocca.
"This latest project will allow us to interpret all the variables present within each contrada in detail, based on the differences between soils, altitudes, microclimates," he said.