<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects | Meng's Page</title><link>https://www.zhangmeng43.com/projects/</link><atom:link href="https://www.zhangmeng43.com/projects/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 01 Nov 2025 00:00:00 +0000</lastBuildDate><image><url>https://www.zhangmeng43.com/media/icon_hu_3c4bb17454bfe3f5.png</url><title>Projects</title><link>https://www.zhangmeng43.com/projects/</link></image><item><title>Traffic Scenario Builder</title><link>https://www.zhangmeng43.com/projects/scenario/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.zhangmeng43.com/projects/scenario/</guid><description>&lt;iframe src="scenario_builder.html"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="text-base text-justify leading-relaxed max-w-prose mx-auto"&gt;
&lt;/div&gt;</description></item><item><title>Berlin Transit Live Monitor</title><link>https://www.zhangmeng43.com/projects/bvg/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate><guid>https://www.zhangmeng43.com/projects/bvg/</guid><description>&lt;iframe src="https://bsm.zhangmeng43.com/"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="text-base text-justify leading-relaxed max-w-prose mx-auto"&gt;
&lt;p&gt;A modern, responsive web dashboard designed for real-time monitoring of public transport departures in Berlin. This tool provides a comprehensive view of transit movements, combining temporal schedules with spatial tracking. The page works on both desktop and mobile browsers and automatically updates vehicle positions every few seconds.&lt;/p&gt;
&lt;figure class="figure-container"&gt;
&lt;img src="bspl0.JPG"&gt;
&lt;figcaption class="figure-caption"&gt;
Figure 1. Dashboard on desktop browser.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This project was specifically designed and optimized to turn any spare smartphone or tablet into a dedicated, real-time smart transit monitor. By opening this dashboard in full-screen on an old device, you can create a permanent public transport timetable for your home, hallway, or office.&lt;/p&gt;
&lt;table align="center" style="border: none; background: none;"&gt;
&lt;tr style="border: none; background: none;"&gt;
&lt;td align="center" width="50%" style="border: none;"&gt;
&lt;img src="bspl1.JPG" width="60%" alt="Android Landscape Display"&gt;
&lt;br&gt;
&lt;i&gt;Figure 2. Android phone displaying the timetable and real-time map (via the &lt;b&gt;Fully Kiosk Browser&lt;/b&gt; app).&lt;/i&gt;
&lt;/td&gt;
&lt;td align="center" width="50%" style="border: none;"&gt;
&lt;img src="bspl2.JPG" width="60%" alt="iPhone Timetable Display"&gt;
&lt;br&gt;
&lt;i&gt;Figure 3. Kindle displaying the departure timetable.&lt;/i&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
---
&lt;h3 id="-data-source"&gt;🔗 Data Source&lt;/h3&gt;
&lt;p&gt;Powered by &lt;strong&gt;transport.rest&lt;/strong&gt;&lt;br&gt;
API documentation:
Git Repo:
&lt;/p&gt;
&lt;hr&gt;
&lt;/div&gt;</description></item><item><title>Text-Mining Demo</title><link>https://www.zhangmeng43.com/projects/classification/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.zhangmeng43.com/projects/classification/</guid><description>&lt;h3 id="summary"&gt;Summary&lt;/h3&gt;
&lt;div class="text-base text-justify"&gt;
This demo explores the use of _Hugging Face zero-shot text classification models_ to analyze multilingual user comments (e.g., YouTube). Two classification dimensions are focused on:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sentiment&lt;/strong&gt;: whether the comment is positive, neutral, or negative&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Category&lt;/strong&gt;: what the comment refers to (functionality, UI, or ads)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="selected-models"&gt;Selected Models&lt;/h3&gt;
&lt;p&gt;Three pre-trained NLI-based transformer models are used for comparison:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model A: &lt;code&gt;facebook/bart-large-mnli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Model B: &lt;code&gt;joeddav/xlm-roberta-large-xnli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Model C: &lt;code&gt;typeform/distilbert-base-uncased-mnli&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="classification"&gt;Classification&lt;/h3&gt;
&lt;p&gt;Following are 10 manually labeled comments, spanning multiple languages, sentiment types, and categories. Each model classifies each comment for both sentiment and category, correct results are shown in &lt;strong&gt;bold&lt;/strong&gt; in the table below.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="overflow-x-auto text-sm"&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comment&lt;/th&gt;
&lt;th&gt;Sentiment&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The video loads fast and never lags. Love it!&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The search function works fine, but nothing special.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;neutral&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;user interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I can’t rewind properly anymore, super annoying.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I like how the app looks now, clean and smooth.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;positive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I am ok with the UI, it can be better though.&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The layout is messy after the latest update.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;user interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Way too many ads these days, it ruins the experience.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ads are skippable now, so it’s not too bad.&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;functionality&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DE: Zu viele nervige Werbungen, es macht keinen Spaß mehr.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;negative&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CN: 功能正常，但感觉有点卡。&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;positive&lt;/td&gt;
&lt;td&gt;user interface&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;functionality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;user interface&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="text-base text-justify"&gt;
&lt;h3 id="performance"&gt;Performance&lt;/h3&gt;
&lt;p&gt;Classification performance was compared across three models, &lt;strong&gt;Model A&lt;/strong&gt; (&lt;code&gt;facebook/bart-large-mnli&lt;/code&gt;) achieved higher scores in both the &lt;em&gt;Sentiment&lt;/em&gt; and &lt;em&gt;Category&lt;/em&gt; dimensions.&lt;/p&gt;
&lt;iframe style="width:100%; height: 500px; border: 0;"
loading="lazy"
allowfullscreen
src="highchart.html"&gt;&lt;/iframe&gt;
&lt;h3 id="next-steps"&gt;Next Steps&lt;/h3&gt;
&lt;p&gt;App Store and Google Play both provide public access to app reviews.
By identifying the corresponding app ID (for example, YouTube’s App Store ID is 544007664),
these review data can be extracted automatically. Combined with the comment classification
method demonstrated above, this enables real-time categorization of user feedback and helps
track emerging user needs and pain points.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Modeling Human-Like Interaction Between Cyclists and Vehicles</title><link>https://www.zhangmeng43.com/projects/poster/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.zhangmeng43.com/projects/poster/</guid><description>&lt;div class="text-base text-justify leading-relaxed max-w-prose mx-auto"&gt;
&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;The study, using real-world data, aims to model the interaction between &lt;strong&gt;crossing bicycles&lt;/strong&gt; and &lt;strong&gt;right-turning vehicles&lt;/strong&gt;, attempting to alter the simulator&amp;rsquo;s guidance at the tactical level. In ten days of video recordings from an urban intersection, &lt;strong&gt;517 valid cases&lt;/strong&gt; were collected.&lt;/p&gt;
&lt;figure class="my-6 text-center"&gt;
&lt;img src="plot.png"
alt="Interaction overview plot"
class="mx-auto rounded-xl shadow-md w-3/4" /&gt;
&lt;figcaption class="mt-2 text-sm text-gray-600"&gt;
Figure 1. Trajectories of crossing bicycles and right-turning vehicles.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id="modeling"&gt;Modeling&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;logistic regression model&lt;/strong&gt; of crossing order was employed with features of bicycles (0) and vehicles (1):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;speed (&lt;em&gt;v&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;speed difference (&lt;em&gt;dv&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;distance to crossing point (&lt;em&gt;d2x&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;predicted PET (&lt;em&gt;ppet&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The dataset was split into &lt;strong&gt;training (80%)&lt;/strong&gt; and &lt;strong&gt;testing (20%)&lt;/strong&gt; subsets. Models with different feature combinations were cross-validated.&lt;/p&gt;
$$
\log\left(\frac{p}{1-p}\right)
= \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_k x_k
$$&lt;iframe src="highchart1.html"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;hr&gt;
&lt;h3 id="simulation"&gt;Simulation&lt;/h3&gt;
&lt;p&gt;The selected model was implemented in &lt;strong&gt;SUMO&lt;/strong&gt;: At 20 m before the crossing point, the crossing order was estimated, and the lagging object was forced to slow down. A comparison was performed between &lt;strong&gt;real data&lt;/strong&gt;, &lt;strong&gt;SUMO’s default model&lt;/strong&gt;, and &lt;strong&gt;this new model&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In reality, &lt;strong&gt;74%&lt;/strong&gt; of bicycles crossed before vehicles.&lt;/li&gt;
&lt;li&gt;In the default model, vehicles were more conservative - bicycles crossed first in about 90% of cases.&lt;/li&gt;
&lt;li&gt;The new model brings this ratio &lt;strong&gt;closer to 50%&lt;/strong&gt;, though still not identical to real data.&lt;/li&gt;
&lt;li&gt;In the default model, &lt;strong&gt;PET distributions&lt;/strong&gt; vary strongly by crossing order, whereas in the real-world data and new model, PET distributions are similar (yet differ by ~1 s).&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe src="highchart2.html"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;hr&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;The study of &lt;strong&gt;interactions between bicycles and vehicles&lt;/strong&gt; in real traffic contributes to improving &lt;strong&gt;simulator realism&lt;/strong&gt;.&lt;br&gt;
Although the new model did not perfectly reproduce the crossing-order distribution, it significantly improved the &lt;strong&gt;PET distribution&lt;/strong&gt;, bringing it closer to reality.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>How Can Driver Emotions Be Quantified?</title><link>https://www.zhangmeng43.com/projects/ma/</link><pubDate>Tue, 12 Apr 2016 00:00:00 +0000</pubDate><guid>https://www.zhangmeng43.com/projects/ma/</guid><description>&lt;div class="text-base text-justify leading-relaxed max-w-prose mx-auto"&gt;
&lt;h3 id="how-can-emotions-be-quantified"&gt;How can emotions be quantified?&lt;/h3&gt;
&lt;p&gt;To describe facial expressions systematically, Paul Ekman and his colleagues developed the &lt;em&gt;Facial Action Coding System (FACS)&lt;/em&gt; &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. This system groups visible facial muscle movements and certain head motions into identifiable units called &lt;em&gt;Action Units (AUs)&lt;/em&gt;. Each AU represents a specific facial muscle activity that can be observed and coded manually or by software.&lt;/p&gt;
&lt;p&gt;The table below shows a selection of AUs along with their descriptions and how accurately they were detected by facial recognition software I used in 2016.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action Unit&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;th&gt;N&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Raise inner eyebrow&lt;/td&gt;
&lt;td&gt;89.7 %&lt;/td&gt;
&lt;td&gt;175&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Raise outer eyebrow&lt;/td&gt;
&lt;td&gt;88.9 %&lt;/td&gt;
&lt;td&gt;117&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Lower brows&lt;/td&gt;
&lt;td&gt;94.3 %&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Raise upper eyelids&lt;/td&gt;
&lt;td&gt;95.1 %&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Raise cheeks&lt;/td&gt;
&lt;td&gt;92.7 %&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Tighten eyelids&lt;/td&gt;
&lt;td&gt;93.4 %&lt;/td&gt;
&lt;td&gt;121&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Wrinkle nose&lt;/td&gt;
&lt;td&gt;100 %&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Raise upper lip&lt;/td&gt;
&lt;td&gt;90.5 %&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Pull lip corners (smile)&lt;/td&gt;
&lt;td&gt;95.4 %&lt;/td&gt;
&lt;td&gt;131&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Dimpler&lt;/td&gt;
&lt;td&gt;67.6 %&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Depress lip corners&lt;/td&gt;
&lt;td&gt;89.4 %&lt;/td&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Raise chin&lt;/td&gt;
&lt;td&gt;86.6 %&lt;/td&gt;
&lt;td&gt;202&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Pucker lips&lt;/td&gt;
&lt;td&gt;88.9 %&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Stretch lips&lt;/td&gt;
&lt;td&gt;92.4 %&lt;/td&gt;
&lt;td&gt;79&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;Tighten lips&lt;/td&gt;
&lt;td&gt;63.3 %&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;Press lips together&lt;/td&gt;
&lt;td&gt;65.5 %&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;Open mouth&lt;/td&gt;
&lt;td&gt;76.9 %&lt;/td&gt;
&lt;td&gt;324&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Drop jaw&lt;/td&gt;
&lt;td&gt;48 %&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;Suck in lips&lt;/td&gt;
&lt;td&gt;100 %&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Although there are some individual differences, it is generally assumed that specific facial expressions are universally associated with certain emotions, across people and cultures. The diagram below illustrates how specific combinations of Action Units (AUs) form the prototypical expressions of basic emotions like fear, joy, sadness, and anger&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;iframe src="AU.html"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h3 id="how-can-we-read-a-drivers-face"&gt;How can we read a driver&amp;rsquo;s face?&lt;/h3&gt;
&lt;p&gt;The Facial Action Coding System (FACS) offers a systematic way to describe facial muscle movements, and that means we can leverage it to assess driver emotions. But here’s the question:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Which facial muscle movements are linked to frustration during driving?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;30 participants&lt;/strong&gt; were invited to take part in a simulated driving experiment. Each driver faced two contrasting traffic scenarios:&lt;/p&gt;
&lt;p&gt;🚗 &lt;strong&gt;Smooth traffic&lt;/strong&gt;&lt;br&gt;
🚗 &lt;strong&gt;Traffic jam&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To enhance immersion, participants were rewarded for reaching their destination within a set time limit: making delays feel more frustrating and emotionally charged. The image below shows the driving simulator setup and one such frustrating moment, captured inside our virtual traffic jam:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="exp"
srcset="https://www.zhangmeng43.com/projects/ma/exp_hu_ef55e3da9e3a999e.webp 320w, https://www.zhangmeng43.com/projects/ma/exp_hu_2c02abbbffec6dbb.webp 480w, https://www.zhangmeng43.com/projects/ma/exp_hu_a4be9a7a5dd1f174.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.zhangmeng43.com/projects/ma/exp_hu_ef55e3da9e3a999e.webp"
width="760"
height="309"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Statistical results revealed that several facial muscle movements (Action Units, AUs) appeared &lt;strong&gt;significantly more often during traffic jam&lt;/strong&gt; than in smooth ones. These frustration-linked AUs include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AU2&lt;/strong&gt;: Raise outer eyebrows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU5&lt;/strong&gt;: Raise upper eyelids&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU6&lt;/strong&gt;: Raise cheeks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU9&lt;/strong&gt;: Wrinkle nose&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU10&lt;/strong&gt;: Raise upper lip&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU12&lt;/strong&gt;: Pull lip corners (smile)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU14&lt;/strong&gt;: Dimpler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU15&lt;/strong&gt;: Depress lip corners&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU17&lt;/strong&gt;: Raise chin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU18&lt;/strong&gt;: Pucker lips&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU23&lt;/strong&gt;: Tighten lips&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU28&lt;/strong&gt;: Suck in lips&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-is-a-frustrated-facial-expression"&gt;What is a frustrated facial expression?&lt;/h3&gt;
&lt;p&gt;While individual Action Units (AUs) are meaningful, facial expressions are usually combinations of multiple AUs. In fact, the AUs that appeared more frequently during traffic jams may not act alone. They likely combine to form &lt;strong&gt;complex expressions&lt;/strong&gt;. To uncover these hidden combinations, I conducted a &lt;strong&gt;clustering analysis&lt;/strong&gt; on the facial data observed during the jam condition. &lt;strong&gt;K-Means Clustering&lt;/strong&gt; was employed. The core idea is simple: group similar data points based on how close they are in space.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="cluster"
src="https://www.zhangmeng43.com/projects/ma/cluster.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The K-Means process works in following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Randomly choose initial cluster centers.&lt;/li&gt;
&lt;li&gt;Assign each observation to the nearest cluster center.&lt;/li&gt;
&lt;li&gt;Update the cluster centers based on the new groupings.&lt;/li&gt;
&lt;li&gt;This cycle repeats until stable clusters emerge.&lt;/li&gt;
&lt;/ol&gt;
&lt;iframe src="cluster.html"
class="w-full h-[520px] my-6 rounded-xl border border-gray-200 shadow-sm"
loading="lazy" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Facial expression data were grouped into &lt;strong&gt;five clusters&lt;/strong&gt; using K-Means clustering. Each cluster represents a common combination of Action Units (AUs), potentially reflecting a distinct emotional pattern. The &lt;strong&gt;radar chart&lt;/strong&gt; above shows the &lt;em&gt;average activation level&lt;/em&gt; (cluster centers) for each AU across the five clusters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cluster 4&lt;/strong&gt; was the &lt;strong&gt;only one that appeared significantly more often&lt;/strong&gt; during traffic jams.&lt;/p&gt;
&lt;p&gt;Cluster 4 is mainly defined by the co-activation of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AU 9&lt;/strong&gt; – &lt;em&gt;Wrinkle nose&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU 18&lt;/strong&gt; – &lt;em&gt;Pucker lips&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AU 24&lt;/strong&gt; – &lt;em&gt;Press lips together&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This particular combination may represent the &lt;strong&gt;facial expression of frustration&lt;/strong&gt; in the driving context.&lt;/p&gt;
&lt;h3 id="what-does-a-frustrated-face-look-like"&gt;What does a &amp;ldquo;frustrated face&amp;rdquo; look like?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AU9 + AU18 + AU24 =
&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Ekman, P. Friesen, W. V. &amp;amp; Hager, J. C. (2002). Manual for the facial action coding system. Salt Lake City: A Human Face.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Ekman, P. &amp;amp; Friesen, W. V. (1978). Manual for the facial action coding system. Palo Alto: Consulting Psychologists Press.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>