Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
1cb777056c | |||
020a8c4789 | |||
826eed6e6d | |||
c8ac00571b | |||
7681b4afce | |||
cf6f4f96ac | |||
94fe252741 | |||
fbdb9b166b | |||
af58cda976 | |||
0da616107f | |||
93289a17f7 | |||
0de924f99c | |||
8a4b33e67a |
10
.github/workflows/buildtypst.yml
vendored
@ -8,14 +8,14 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Typst
|
||||
uses: leana8959/typst-action@main
|
||||
uses: krestenlaust/typst-action@feat/fix-issue-17
|
||||
with:
|
||||
source_file: main.typ
|
||||
version: 0.12.0
|
||||
options: |
|
||||
--input
|
||||
inwriting=false
|
||||
--input
|
||||
draft=false
|
||||
compile
|
||||
--input inwriting=false
|
||||
--input draft=false
|
||||
- name: Upload PDF file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
|
@ -1,22 +1,22 @@
|
||||
= Conclusion and Outlook <sectionconclusionandoutlook>
|
||||
== Conclusion
|
||||
In conclusion one can say that Few-Shot learning is not the best choice for anomaly detection tasks.
|
||||
It is hugely outperformed by state of the art algorithms like Patchcore or EfficientAD.
|
||||
It is hugely outperformed by state of the art algorithms like PatchCore@patchcorepaper or EfficientAD@efficientADpaper.
|
||||
The only benefit of Few-Shot learning is that it can be used in environments where only a limited number of good samples are available.
|
||||
But this should not be the case in most scenarios.
|
||||
Most of the time plenty of good samples are available and in this case Patchcore or EfficientAD should perform great.
|
||||
Most of the time plenty of good samples are available and in this case PatchCore or EfficientAD should perform great.
|
||||
|
||||
The only case where Few-Shot learning could be used is in a scenarios where one wants to detect the anomaly class itself.
|
||||
Patchcore and EfficientAD can only detect if an anomaly is present or not but not what type of anomaly it actually is.
|
||||
So chaining a Few-Shot learner after Patchcore or EfficientAD could be a good idea to use the best of both worlds.
|
||||
PatchCore and EfficientAD can only detect if an anomaly is present or not but not what type of anomaly it actually is.
|
||||
So chaining a Few-Shot learner after PatchCore or EfficientAD could be a good idea to use the best of both worlds.
|
||||
|
||||
In most of the tests P>M>F performed the best.
|
||||
But also the simple ResNet50 method performed better than expected in most cases and can be considered if the computational resources are limited and if a simple architecture is enough.
|
||||
In most of the tests P>M>F@pmfpaper performed the best.
|
||||
But also the simple ResNet50@resnet method performed better than expected in most cases and can be considered if the computational resources are limited and if a simple architecture is enough.
|
||||
|
||||
== Outlook
|
||||
In the future when new Few-Shot learning methods evolve it could be interesting to test again how they perform in anomaly detection tasks.
|
||||
In the future, when new Few-Shot learning methods evolve, it could be interesting to test again how they perform in anomaly detection tasks.
|
||||
There might be a lack of research in the area where the classes to detect are very similar to each other
|
||||
and when building a few-shot learning algorithm tailored specifically for very similar classes this could boost the performance by a large margin.
|
||||
|
||||
It might be interesting to test the SOT method (see @SOT) with a ResNet50 feature extractor similar as proposed in this thesis but with SOT for embedding comparison.
|
||||
Moreover, TRIDENT (see @TRIDENT) could achive promising results in a anomaly detection scenario.
|
||||
Moreover, TRIDENT (see @TRIDENT) could achieve promising results in an anomaly detection scenario.
|
||||
|
@ -5,16 +5,16 @@
|
||||
|
||||
== Is Few-Shot learning a suitable fit for anomaly detection? <expresults2way>
|
||||
_Should Few-Shot learning be used for anomaly detection tasks?
|
||||
How does it compare to well established algorithms such as Patchcore or EfficientAD?_
|
||||
How does it compare to well established algorithms such as PatchCore or EfficientAD?_
|
||||
|
||||
@comparison2waybottle shows the performance of the 2-way classification (anomaly or not) on the bottle class and @comparison2waycable the same on the cable class.
|
||||
The performance values are the same as in @experiments but just merged together into one graph.
|
||||
As a reference Patchcore reaches an AUROC score of 99.6% and EfficientAD reaches 99.8% averaged over all classes provided by the MVTec AD dataset.
|
||||
As a reference PatchCore@patchcorepaper reaches an AUROC score of 99.6% and EfficientAD@efficientADpaper reaches 99.8% averaged over all classes provided by the MVTec AD dataset.
|
||||
Both are trained with samples from the 'good' class only.
|
||||
So there is a clear performance gap between Few-Shot learning and the state of the art anomaly detection algorithms.
|
||||
In the @comparison2way Patchcore and EfficientAD are not included as they aren't directly compareable in the same fashion.
|
||||
In the @comparison2way PatchCore and EfficientAD are not included as they aren't directly compareable in the same fashion.
|
||||
|
||||
That means if the goal is just to detect anomalies, Few-Shot learning is not the best choice and Patchcore or EfficientAD should be used.
|
||||
That means if the goal is just to detect anomalies, Few-Shot learning is not the best choice, and PatchCore or EfficientAD should be used.
|
||||
|
||||
#subpar.grid(
|
||||
figure(image("rsc/comparison-2way-bottle.png"), caption: [
|
||||
@ -29,7 +29,7 @@ That means if the goal is just to detect anomalies, Few-Shot learning is not the
|
||||
)
|
||||
|
||||
== How does disbalancing the Shot number affect performance?
|
||||
_Does giving the Few-Shot learner more good than bad samples improve the model performance?_
|
||||
_Does giving the Few-Shot learner a higher proportion of normal (non-anomalous) samples compared to anomalous samples improve the model's performance?_
|
||||
|
||||
As all three method results in @experiments show, the performance of the Few-Shot learner decreases with an increasing number of good samples.
|
||||
Which is an result that is unexpected (since one can think more samples perform always better) but align with the idea that all classes should always be as balanced as possible.
|
||||
@ -64,11 +64,11 @@ Which is an result that is unexpected (since one can think more samples perform
|
||||
Clearly all four graphs show that the performance decreases with an increasing number of good samples.
|
||||
So the conclusion is that the Few-Shot learner should always be trained with as balanced classes as possible.
|
||||
|
||||
== How do the 3 (ResNet, CAML, P>M>F) methods perform in only detecting the anomaly class?
|
||||
_How much does the performance improve by only detecting the presence of an anomaly?
|
||||
== How do the 3 (ResNet, CAML, P>M>F) methods perform in distinguishing between different anomaly types?
|
||||
_And how much does the performance improve by only detecting the presence of an anomaly?
|
||||
How does it compare to PatchCore and EfficientAD#todo[Maybe remove comparion?]?_
|
||||
|
||||
@comparisonnormal shows graphs comparing the performance of the ResNet, CAML and P>M>F methods in detecting the anomaly class only including the good class as well as excluding the good class.
|
||||
@comparisonnormal shows graphs comparing the performance of the ResNet@resnet, CAML@caml_paper and P>M>F@pmfpaper methods in detecting the anomaly class only including the good class as well as excluding the good class.
|
||||
P>M>F performs in almost all cases better than ResNet and CAML.
|
||||
P>M>F reaches up to 78% accuracy in the bottle class (@comparisonnormalbottle) and 46% in the cable class (@comparisonnormalcable) when detecting all classes including good ones
|
||||
and 84% in the bottle class (@comparisonfaultyonlybottle) and 51% in the cable class (@comparisonfaultyonlycable) when excluding the good class.
|
||||
@ -97,11 +97,11 @@ One could use a well established algorithm like PatchCore or EfficientAD for det
|
||||
8-Way - Cable class
|
||||
]), <comparisonfaultyonlycable>,
|
||||
columns: (1fr, 1fr),
|
||||
caption: [Nomaly class only classification performance],
|
||||
caption: [Anomaly class only classification performance],
|
||||
label: <comparisonnormal>,
|
||||
)
|
||||
|
||||
#if inwriting [
|
||||
/*#if inwriting [
|
||||
== Extra: How does Euclidean distance compare to Cosine-similarity when using ResNet as a feature-extractor?
|
||||
#todo[Maybe don't do this]
|
||||
]
|
||||
]*/
|
||||
|
@ -4,7 +4,7 @@
|
||||
#import "@preview/subpar:0.1.1"
|
||||
|
||||
= Implementation <sectionimplementation>
|
||||
The three methods described (ResNet50, CAML, P>M>F) were implemented in a Jupyter notebook and compared to each other.
|
||||
The three methods described (ResNet50@resnet, CAML@caml_paper, P>M>F@pmfpaper) were implemented in a Jupyter notebook and compared to each other.
|
||||
|
||||
== Experiments <experiments>
|
||||
For all of the three methods we test the following use-cases:
|
||||
@ -17,27 +17,27 @@ For all of the three methods we test the following use-cases:
|
||||
- Inbalanced 2 Way classification (5,10,15,30 good shots, 5 bad shots)
|
||||
- Similar to the 2 way classification but with an inbalanced number of good shots.
|
||||
- Inbalanced target class prediction (5,10,15,30 good shots, 5 bad shots)#todo[Avoid bullet points and write flow text?]
|
||||
- Detect only the faulty classes without the good classed with an inbalanced number of shots.
|
||||
- Detect only the faulty classes without the good ones, but with an inbalanced number of shots.
|
||||
|
||||
All those experiments were conducted on the MVTEC AD dataset on the bottle and cable classes.
|
||||
|
||||
== Experiment Setup
|
||||
All the experiments were done on the bottle and cable classes of the MVTEC AD dataset.
|
||||
The correspoinding number of shots were randomly selected from the dataset.
|
||||
The corresponding number of shots were randomly selected from the dataset.
|
||||
The rest of the images was used to test the model and measure the accuracy.
|
||||
#todo[Maybe add real number of samples per classes]
|
||||
|
||||
== ResNet50 <resnet50impl>
|
||||
=== Approach
|
||||
The simplest approach is to use a pre-trained ResNet50 model as a feature extractor.
|
||||
The simplest approach is to use a pretrained ResNet50@resnet model as a feature extractor.
|
||||
From both the support and query set the features are extracted to get a downprojected representation of the images.
|
||||
The support set embeddings are compared to the query set embeddings.
|
||||
To predict the class of a query the class with the smallest distance to the support embedding is chosen.
|
||||
After downprojection the support set embeddings are compared to the query set embeddings.
|
||||
To predict the class of a query, the class with the smallest distance to the support embedding is chosen.
|
||||
If there are more than one support embedding within the same class the mean of those embeddings is used (class center).
|
||||
This approach is similar to a prototypical network @snell2017prototypicalnetworksfewshotlearning and the work of _Just Use a Library of Pre-trained Feature
|
||||
This approach is similar to a prototypical network @snell2017prototypicalnetworksfewshotlearning and the work of _Just use a Library of Pre-trained Feature
|
||||
Extractors and a Simple Classifier_ @chowdhury2021fewshotimageclassificationjust but just with a simple distance metric instead of a neural net.
|
||||
|
||||
In this bachelor thesis a pre-trained ResNet50 (IMAGENET1K_V2) pytorch model was used.
|
||||
In this bachelor thesis a pretrained ResNet50 (IMAGENET1K_V2) pytorch model was used.
|
||||
It is pretrained on the imagenet dataset and has 50 residual layers.
|
||||
|
||||
To get the embeddings the last layer of the model was removed and the output of the second last layer was used as embedding output.
|
||||
@ -92,15 +92,15 @@ After creating the embeddings for the support and query set the euclidean distan
|
||||
The class with the smallest distance is chosen as the predicted class.
|
||||
|
||||
=== Results <resnet50perf>
|
||||
This method performed better than expected wich such a simple method.
|
||||
This method performed better than expected with such a simple method.
|
||||
As in @resnet50bottleperfa with a normal 5 shot / 4 way classification the model achieved an accuracy of 75%.
|
||||
When detecting only if there occured an anomaly or not the performance is significantly better and peaks at 81% with 5 shots / 2 ways.
|
||||
Interestintly the model performed slightly better with fewer shots in this case.
|
||||
When detecting if there occured an anomaly or not only the performance is significantly better and peaks at 81% with 5 shots / 2 ways.
|
||||
Interestingly the model performed slightly better with fewer shots in this case.
|
||||
Moreover in @resnet50bottleperfa, the detection of the anomaly class only (3 way) shows a similar pattern as the normal 4 way classification.
|
||||
The more shots the better the performance and it peaks at around 88% accuracy with 5 shots.
|
||||
|
||||
In @resnet50bottleperfb the model was tested with inbalanced class distributions.
|
||||
With [5,10,15,30] good shots and 5 bad shots the model performed worse than with balanced classes.
|
||||
With {5, 10, 15, 30} good shots and 5 bad shots the model performed worse than with balanced classes.
|
||||
The more good shots the worse the performance.
|
||||
The only exception is the faulty or not detection (2 way) where the model peaked at 15 good shots with 83% accuracy.
|
||||
|
||||
@ -136,16 +136,16 @@ but this is expected as the cable class consists of 8 faulty classes.
|
||||
|
||||
== P>M>F
|
||||
=== Approach
|
||||
For P>M>F the pretrained model weights from the original paper were used.
|
||||
As backbone feature extractor a DINO model is used, which is pre-trained by facebook.
|
||||
For P>M>F@pmfpaper, I used the pretrained model weights from the original paper.
|
||||
As backbone feature extractor a DINO model is used, which is pretrained by facebook.
|
||||
This is a vision transformer with a patch size of 16 and 12 attention heads learned in a self-supervised fashion.
|
||||
This feature extractor was meta-trained with 10 public image dasets #footnote[ImageNet-1k, Omniglot, FGVC-
|
||||
Aircraft, CUB-200-2011, Describable Textures, QuickDraw,
|
||||
FGVCx Fungi, VGG Flower, Traffic Signs and MSCOCO~#cite(<pmfpaper>)]
|
||||
of diverse domains by the authors of the original paper.#cite(<pmfpaper>)
|
||||
FGVCx Fungi, VGG Flower, Traffic Signs and MSCOCO~@pmfpaper]
|
||||
of diverse domains by the authors of the original paper.~@pmfpaper
|
||||
|
||||
Finally, this model is finetuned with the support set of every test iteration.
|
||||
Everytime the support set changes we need to finetune the model again.
|
||||
Finally, this model is fine-tuned with the support set of every test iteration.
|
||||
Every time the support set changes, we need to fine-tune the model again.
|
||||
In a real world scenario this should not be the case because the support set is fixed and only the query set changes.
|
||||
|
||||
=== Results
|
||||
@ -182,25 +182,26 @@ So it is clearly a bad idea to add more good shots to the support set.
|
||||
|
||||
== CAML
|
||||
=== Approach
|
||||
For the CAML implementation the pretrained model weights from the original paper were used.
|
||||
For the CAML@caml_paper implementation I used the pretrained model weights from the original paper.
|
||||
The non-causal sequence model (transformer) is pretrained with every class having the same number of shots.
|
||||
This brings the limitation that it can only process default few-shot learning tasks in the n-way k-shots fashion.
|
||||
Since it expects the input sequence to be distributed with the same number of shots per class.
|
||||
This is the reason why for this method the two imbalanced test cases couldn't be conducted.
|
||||
|
||||
As a feture extractor a ViT-B/16 model was used, which is a Vision Transformer with a patch size of 16.
|
||||
As a feature extractor a ViT-B/16 model was used, which is a Vision Transformer with a patch size of 16.
|
||||
This feature extractor was already pretrained when used by the authors of the original paper.
|
||||
For the non-causal sequence model a transformer model was used
|
||||
In this case for the non-causal sequence model a transformer model was used.
|
||||
It consists of 24 Layers with 16 Attention-heads and a hidden dimension of 1024 and output MLP size of 4096.
|
||||
This transformer was trained on a huge number of images as described in @CAML.
|
||||
|
||||
=== Results
|
||||
The results were not as good as expeced.
|
||||
This might be caused by the fact that the model was not fine-tuned for any industrial dataset domain.
|
||||
This might be because the model was not fine-tuned for any industrial dataset domain.
|
||||
The model was trained on a large number of general purpose images and is not fine-tuned at all.
|
||||
It might not handle very similar images well.
|
||||
Moreover, it was not fine-tuned on the support set similar to the P>M>F method, which could have a huge impact on performance.
|
||||
It might also not handle very similar images well.
|
||||
|
||||
Compared the the other two methods CAML performed poorly in almost all experiments.
|
||||
Compared to the other two methods, CAML performed poorly in almost all experiments.
|
||||
The normal few-shot classification reached only 40% accuracy in @camlperfa at best.
|
||||
The only test it did surprisingly well was the detection of the anomaly class for the cable class in @camlperfb were it reached almost 60% accuracy.
|
||||
|
||||
|
@ -2,43 +2,43 @@
|
||||
|
||||
= Introduction
|
||||
== Motivation
|
||||
Anomaly detection has especially in the industrial and automotive field essential importance.
|
||||
Anomaly detection is of essential importance, especially in the industrial and automotive field.
|
||||
Lots of assembly lines need visual inspection to find errors often with the help of camera systems.
|
||||
Machine learning helped the field to advance a lot in the past.
|
||||
Most of the time the error rate is sub $.1%$ and therefore plenty of good data and almost no faulty data is available.
|
||||
Most of the time the error rate is sub $0.1%$ and therefore plenty of good data and almost no faulty data is available.
|
||||
So the train data is heavily unbalanced.~#cite(<parnami2022learningexamplessummaryapproaches>)
|
||||
|
||||
PatchCore and EfficientAD are state of the art algorithms trained only on good data and then detect anomalies within unseen (but similar) data.
|
||||
PatchCore@patchcorepaper and EfficientAD@efficientADpaper are state of the art algorithms trained only on good data and then detect anomalies within unseen (but similar) data.
|
||||
One of their problems is the need of lots of training data and time to train.
|
||||
Moreover a slight change of the camera position or the lighting conditions can lead to a mandatory complete retraining of the model.
|
||||
Few-Shot learning might be a suitable alternative with hugely lowered train times and fast adaption to new conditions.~#cite(<efficientADpaper>)#cite(<patchcorepaper>)#cite(<parnami2022learningexamplessummaryapproaches>)
|
||||
|
||||
In this thesis the performance of 3 Few-Shot learning algorithms (ResNet50, P>M>F, CAML) will be compared in the field of anomaly detection.
|
||||
In this thesis the performance of 3 Few-Shot learning algorithms (ResNet50@resnet, P>M>F@pmfpaper, CAML@caml_paper) will be compared in the field of anomaly detection.
|
||||
Moreover, few-shot learning might be able not only to detect anomalies but also to detect the anomaly class.
|
||||
|
||||
== Research Questions <sectionresearchquestions>
|
||||
|
||||
=== Is Few-Shot learning a suitable fit for anomaly detection?
|
||||
_Should Few-Shot learning be used for anomaly detection tasks?
|
||||
How does it compare to well established algorithms such as Patchcore or EfficientAD?_
|
||||
How does it compare to well established algorithms such as PatchCore or EfficientAD?_
|
||||
|
||||
=== How does disbalancing the Shot number affect performance?
|
||||
_Does giving the Few-Shot learner more good than bad samples improve the model performance?_
|
||||
_Does giving the Few-Shot learner a higher proportion of normal (non-anomalous) samples compared to anomalous samples improve the model's performance?_
|
||||
|
||||
=== How do the 3 (ResNet, CAML, \pmf) methods perform in only detecting the anomaly class?
|
||||
_How much does the performance improve by only detecting the presence of an anomaly?
|
||||
=== How do the 3 (ResNet, CAML, P>M>F) methods perform in distinguishing between different anomaly types?
|
||||
_And how much does the performance improve by only detecting the presence of an anomaly?
|
||||
How does it compare to PatchCore and EfficientAD?_
|
||||
|
||||
#if inwriting [
|
||||
/*#if inwriting [
|
||||
=== _Extra: How does Euclidean distance compare to Cosine-similarity when using ResNet as a feature-extractor?_
|
||||
// I've tried different distance measures $->$ but results are pretty much the same.
|
||||
]
|
||||
]*/
|
||||
|
||||
== Outline
|
||||
This thesis is structured to provide a comprehensive exploration of Few-Shot Learning in anomaly detection.
|
||||
@sectionmaterialandmethods introduces the datasets and methodologies used in this research.
|
||||
The MVTec AD dataset is discussed in detail as the primary source for benchmarking, along with an overview of the Few-Shot Learning paradigm.
|
||||
The section elaborates on the three selected methods—ResNet50, P>M>F, and CAML—while also touching upon well established anomaly detection algorithms such as Pachcore and EfficientAD.
|
||||
The section elaborates on the three selected methods—ResNet50@resnet, P>M>F@pmfpaper, and CAML@caml_paper—while also touching upon well established anomaly detection algorithms such as PatchCore and EfficientAD.
|
||||
|
||||
@sectionimplementation focuses on the practical realization of the methods described in the previous chapter.
|
||||
It outlines the experimental setup, including the use of Jupyter Notebook for prototyping and testing, and provides a detailed account of how each method was implemented and evaluated.
|
||||
|
BIN
lib/jkutemplate/JKU.png
Normal file
After Width: | Height: | Size: 11 KiB |
14
lib/jkutemplate/LICENSE
Normal file
@ -0,0 +1,14 @@
|
||||
MIT No Attribution
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
40
lib/jkutemplate/README.md
Normal file
@ -0,0 +1,40 @@
|
||||
|
||||
[The compiled demo thesis.pdf](./template/thesis.pdf)
|
||||
|
||||
# jku-thesis
|
||||
This is a Typst template for a thesis at JKU.
|
||||
|
||||
## Usage
|
||||
You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for `not-JKU-thesis`.
|
||||
|
||||
Alternatively, you can use the CLI to kick this project off using the command
|
||||
```
|
||||
typst init @preview/jku-thesis
|
||||
```
|
||||
|
||||
Typst will create a new directory with all the files needed to get you started.
|
||||
|
||||
## Configuration
|
||||
This template exports the `jku-thesis` function with the following named arguments:
|
||||
|
||||
- `thesis-type`: String
|
||||
- `degree`: String
|
||||
- `program`: String
|
||||
- `supervisor`: String
|
||||
- `advisor`: Array of Strings
|
||||
- `department`: String
|
||||
- `author`: String
|
||||
- `date`: datetime
|
||||
- `place-of-submission`: string
|
||||
- `title`: String
|
||||
- `abstract-en`: Content block
|
||||
- `abstract-de`: optional: Content block or none
|
||||
- `acknowledgements`: optional: Content block or none
|
||||
- `show-title-in-header`: Boolean
|
||||
- `draft`: Boolean
|
||||
|
||||
The template will initialize your package with a sample call to the `jku-thesis` function.
|
||||
|
||||
The dummy thesis, including the sources, was created by generative AI and is simply meant as a placeholder. The content, citations, and data presented are not based on actual research or verified information. They are intended for illustrative purposes only and should not be considered accurate, reliable, or suitable for any academic, professional, or research use. Any resemblance to real persons, living or dead, or actual research, is purely coincidental. Users are advised to replace all placeholder content with genuine, verified data and references before using this material in any formal or academic context.
|
||||
|
||||
|
20
lib/jkutemplate/abstract.typ
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
#let abstract(body, lang: "en") = {
|
||||
|
||||
|
||||
let überschriften = (en: "Abstract", de: "Zusammenfassung")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
v(1fr)
|
||||
|
||||
align(center, text(1.4em, weight: 600, überschriften.at(lang)))
|
||||
body
|
||||
|
||||
v(1fr)
|
||||
|
||||
pagebreak()
|
||||
}
|
17
lib/jkutemplate/acknowledgement.typ
Normal file
@ -0,0 +1,17 @@
|
||||
#let acknowledgement(body) = {
|
||||
|
||||
// set text(
|
||||
// size: 12pt,
|
||||
// lang: "en"
|
||||
// )
|
||||
|
||||
// set par(leading: 1em)
|
||||
|
||||
|
||||
// --- Acknowledgements ---
|
||||
align(left, text(1.4em, weight: 700,"Acknowledgements"))
|
||||
body
|
||||
v(15mm)
|
||||
|
||||
pagebreak()
|
||||
}
|
BIN
lib/jkutemplate/big_K.png
Normal file
After Width: | Height: | Size: 27 KiB |
49
lib/jkutemplate/disclaimer.typ
Normal file
@ -0,0 +1,49 @@
|
||||
#let disclaimer(
|
||||
date: "",
|
||||
place-of-submission: "Place",
|
||||
thesis-type: "",
|
||||
author: "",
|
||||
submission-date: none,
|
||||
) = {
|
||||
|
||||
// --- Disclaimer ---
|
||||
|
||||
text("SWORN DECLARATION", weight: 600, size: 1.4em)
|
||||
|
||||
v(1.5em)
|
||||
[
|
||||
I hereby declare under oath that the submitted #thesis-type's Thesis has been written solely by me without any third-party assistance, information other than provided sources or aids have not been used and those used have been fully documented. Sources for literal, paraphrased and cited quotes have been accurately credited.
|
||||
|
||||
The submitted document here present is identical to the electronically submitted text document.
|
||||
|
||||
|
||||
|
||||
|
||||
#v(25mm)
|
||||
// Option 1
|
||||
#grid(
|
||||
columns: 2,
|
||||
gutter: 1fr,
|
||||
|
||||
overline[#sym.wj #sym.space #sym.space #sym.space #sym.space (Place, Date) #sym.space #sym.space #sym.space #sym.space #sym.wj],
|
||||
overline[#sym.wj #sym.space #sym.space #sym.space #sym.space #sym.space (#author) #sym.space #sym.space #sym.space #sym.space #sym.space #sym.wj]
|
||||
)
|
||||
|
||||
// Option 2
|
||||
// #place-of-submission, #submission-date.display()
|
||||
// #align(center)[
|
||||
// #overline[#sym.wj #sym.space #sym.space #sym.space #sym.space #sym.space (#author) #sym.space #sym.space #sym.space #sym.space #sym.space #sym.wj]
|
||||
// ]
|
||||
|
||||
// Option 3
|
||||
// #align(center)[
|
||||
// #overline[#sym.wj #sym.space #sym.space #sym.space #sym.space #sym.space #place-of-submission, #submission-date.display()\; (#author) #sym.space #sym.space #sym.space #sym.space #sym.space #sym.wj]
|
||||
// ]
|
||||
|
||||
#v(15%)
|
||||
|
||||
|
||||
]
|
||||
pagebreak()
|
||||
|
||||
}
|
109
lib/jkutemplate/template.typ
Normal file
@ -0,0 +1,109 @@
|
||||
#import "titlepage.typ": *
|
||||
#import "disclaimer.typ": *
|
||||
#import "acknowledgement.typ": *
|
||||
#import "abstract.typ": *
|
||||
|
||||
#import "@preview/wordometer:0.1.2": word-count, total-words
|
||||
|
||||
|
||||
#let jku-thesis(
|
||||
thesis-type: "Bachlor/Maser/etc",
|
||||
degree: "The degree",
|
||||
program: "The Program",
|
||||
supervisor: "Your Supervisor",
|
||||
advisors: ("The first advisor", "The second advisor"),
|
||||
department: "The Deparment",
|
||||
author: "The Author",
|
||||
date: "The Submission Date",
|
||||
place-of-submission: "Place of Submission", // for declaration
|
||||
title: "Title",
|
||||
abstract-en: [English Abstract],
|
||||
abstract-de: none,
|
||||
acknowledgements: none,
|
||||
show-title-in-header: true,
|
||||
draft: true,
|
||||
body,
|
||||
) = {
|
||||
|
||||
let draft_string = ""
|
||||
if draft{
|
||||
draft_string = "DRAFT - "
|
||||
}
|
||||
|
||||
set document(author: author, title: draft_string + title)
|
||||
|
||||
|
||||
set page(
|
||||
numbering: "1", // this is necessary for the glossary
|
||||
//number-align: center,
|
||||
margin: (left: 2.5cm+1cm, // binding correction of 1cm for single sided printing
|
||||
right: 2.5cm,
|
||||
y: 2.9cm),
|
||||
header: context{[
|
||||
#if counter(page).get().first() > 2 [
|
||||
#place(top+right ,float: false, dx: 0cm, dy:1cm)[
|
||||
#box(width: 25%)[
|
||||
#align(right)[#image("JKU.png", height: 35pt)]
|
||||
]
|
||||
]
|
||||
]
|
||||
#set text(8pt)
|
||||
#if show-title-in-header [
|
||||
#author - #title
|
||||
]
|
||||
|
||||
#if draft [
|
||||
DRAFT
|
||||
]
|
||||
]},
|
||||
footer: context [//overwrite numbering
|
||||
#text(size:9pt)[
|
||||
#table(
|
||||
stroke: none,
|
||||
columns: (1fr, auto, 1fr),
|
||||
align: (left, center, right),
|
||||
inset: 5pt,
|
||||
[],[],[],
|
||||
|
||||
)
|
||||
]
|
||||
]
|
||||
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
titlepage(
|
||||
thesis-type: thesis-type,
|
||||
degree: degree,
|
||||
program: program,
|
||||
supervisor: supervisor,
|
||||
advisors: advisors,
|
||||
department: department,
|
||||
author: author,
|
||||
date: date ,
|
||||
title: title
|
||||
)
|
||||
|
||||
if acknowledgements != none [ // optional
|
||||
#acknowledgement(acknowledgements)
|
||||
]
|
||||
|
||||
abstract(lang: "en")[#abstract-en]
|
||||
|
||||
if abstract-de != none [ // optional
|
||||
#abstract(lang: "de")[#abstract-de]
|
||||
]
|
||||
|
||||
counter(page).update(1)
|
||||
|
||||
body
|
||||
|
||||
}
|
63
lib/jkutemplate/template/content/Analysis.typ
Normal file
@ -0,0 +1,63 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
|
||||
= Analysis
|
||||
#todo[Replace this chapter!]
|
||||
== Introduction
|
||||
The analysis aims to identify patterns and relationships within the data, offering insights into how cats use specific behaviors to influence their human companions and the subsequent effects on human routines and emotions.
|
||||
== Analysis of Observational Data
|
||||
|
||||
=== Behavioral Patterns
|
||||
|
||||
==== Vocalizations
|
||||
|
||||
The observational data revealed distinct patterns in feline vocalizations used for manipulation:
|
||||
|
||||
- *Meowing:* Cats primarily used meowing to solicit food or attention. High-pitched and frequent meows were associated with feeding times, and variations in pitch were observed to correspond with different types of requests.
|
||||
- *Purring:* Cats employed purring as a multifaceted strategy to seek comfort or attention. Instances of purring were often accompanied by other behaviors, such as rubbing or kneading, reinforcing its role in manipulation.
|
||||
- *Chirps and Trills:* These vocalizations were less frequent but used effectively to prompt interaction or play, especially when the cat was engaged with a toy or seeking active play.
|
||||
|
||||
==== Body Language
|
||||
|
||||
Key body language strategies observed included:
|
||||
|
||||
- *Kneading:* Cats used kneading predominantly to solicit attention and comfort. This behavior was frequently observed on human laps or soft surfaces, and was often followed by increased physical interaction from humans.
|
||||
- *Tail Positioning:* The tail's position served as an indicator of the cat's intent and emotional state. Raised tails were associated with positive interactions, while low or flicking tails often preceded withdrawal or irritation.
|
||||
- *Eye Contact:* Slow blinking and direct eye contact were employed to establish trust and encourage affection. Cats that used these behaviors more frequently were often rewarded with petting or close contact from their humans.
|
||||
|
||||
==== Attention-Seeking Behaviors
|
||||
|
||||
Common attention-seeking behaviors included:
|
||||
|
||||
- *Climbing and Jumping:* Cats used climbing and jumping to place themselves physically in the human's space, often leading to increased interaction or feeding.
|
||||
- *Rubbing and Head-Butting:* These behaviors were consistently used to solicit affection or attention. Cats that engaged in these actions more frequently were noted to receive more positive responses from their owners.
|
||||
- *Bringing Objects:* Cats that brought toys to their humans effectively initiated play sessions, demonstrating the use of object-oriented behaviors to engage their caregivers.
|
||||
|
||||
== Analysis of Survey Data
|
||||
|
||||
=== Frequency and Effectiveness
|
||||
|
||||
==== Frequency of Behaviors
|
||||
|
||||
Survey responses indicated that vocalizations, particularly meowing, were the most commonly observed manipulation tactic. Purring and attention-seeking behaviors such as climbing and rubbing were also reported frequently, with variations based on the cat's individual personality and the household environment.
|
||||
|
||||
==== Perceived Effectiveness
|
||||
|
||||
Participants rated meowing and purring as the most effective behaviors for soliciting attention and food. Attention-seeking actions like climbing and object bringing were perceived as effective in prompting immediate interaction or play. The effectiveness of these behaviors was found to correlate with the frequency of their occurrence and the specific context in which they were used.
|
||||
== Analysis of Interview Data
|
||||
|
||||
=== Thematic Insights
|
||||
|
||||
==== Instances of Manipulation
|
||||
|
||||
Interviews revealed detailed accounts of how cats used specific behaviors to achieve desired outcomes. Common examples included cats meowing persistently before feeding time and using purring to calm their humans during stressful moments.
|
||||
|
||||
==== Emotional Reactions
|
||||
|
||||
Participants described a range of emotional responses to their cats' manipulation tactics, from amusement and affection to occasional frustration. The manipulation tactics often led to increased bonding and interaction, though some participants reported feeling manipulated or pressured by their cats' behaviors.
|
||||
|
||||
==== Behavioral Changes
|
||||
|
||||
The interviews highlighted changes in human behavior in response to feline manipulation. Many participants adjusted their routines to accommodate their cats' needs, such as altering feeding schedules or engaging in more playtime. These changes were generally perceived as positive, contributing to a stronger bond between the cat and its owner.
|
||||
6.5 Synthesis of Findings
|
||||
|
||||
The analysis of observational, survey, and interview data collectively demonstrates that cats employ a variety of manipulation tactics to influence their human companions. Vocalizations, body language, and attention-seeking behaviors are used strategically to achieve specific outcomes. The effectiveness of these tactics varies based on the context and the individual cat's behavior. Human responses to these manipulative behaviors are generally positive, though they can occasionally lead to feelings of frustration or manipulation.
|
91
lib/jkutemplate/template/content/Appendix.typ
Normal file
@ -0,0 +1,91 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
#import "@preview/cheq:0.1.0": checklist
|
||||
|
||||
#show: checklist
|
||||
|
||||
#heading(numbering: none)[Appendix A: Supplementary Material]
|
||||
|
||||
#todo[Replace this with your appendix (not the organ)!]
|
||||
|
||||
|
||||
#silentheading(2)[Introduction]
|
||||
Thank you for participating in this survey. Your responses will help us understand how feline manipulation tactics affect human behavior. Please answer the following questions based on your experiences with your cat(s).
|
||||
|
||||
+ Frequency of Observed Behaviors
|
||||
|
||||
- How often does your cat meow to get your attention?
|
||||
- [ ] Rarely
|
||||
- [ ] Occasionally
|
||||
- [ ] Frequently
|
||||
- [ ] Very frequently
|
||||
|
||||
- How often does your cat purr to get your attention?
|
||||
- [ ] Rarely
|
||||
- [ ] Occasionally
|
||||
- [ ] Frequently
|
||||
- [ ] Very frequently
|
||||
|
||||
- How often does your cat bring objects (e.g., toys) to you?
|
||||
- [ ] Rarely
|
||||
- [ ] Occasionally
|
||||
- [ ] Frequently
|
||||
- [ ] Very frequently
|
||||
|
||||
+ Effectiveness of Behaviors
|
||||
|
||||
- How effective do you find meowing in getting your cat's needs met?
|
||||
- [ ] Not effective
|
||||
- [ ] Slightly effective
|
||||
- [ ] Moderately effective
|
||||
- [ ] Very effective
|
||||
|
||||
- How effective do you find purring in calming or eliciting a positive response from you?
|
||||
- [ ] Not effective
|
||||
- [ ] Slightly effective
|
||||
- [ ] Moderately effective
|
||||
- [ ] Very effective
|
||||
|
||||
- How effective is bringing objects (e.g., toys) in initiating play sessions or interaction?
|
||||
- [ ] Not effective
|
||||
- [ ] Slightly effective
|
||||
- [ ] Moderately effective
|
||||
- [ ] Very effective
|
||||
|
||||
+ Impact on Routines and Emotions
|
||||
|
||||
- How has your cat's behavior affected your daily routine?
|
||||
- [ ] No impact
|
||||
- [ ] Minor impact
|
||||
- [ ] Moderate impact
|
||||
- [ ] Significant impact
|
||||
|
||||
- How do you generally feel when your cat uses manipulation tactics?
|
||||
- [ ] Frustrated
|
||||
- [ ] Amused
|
||||
- [ ] Indifferent
|
||||
- [ ] Affectionate
|
||||
|
||||
+ Additional Comments
|
||||
- Please provide any additional comments or experiences related to your cat's manipulation tactics.
|
||||
|
||||
#heading(numbering: none)[Appendix B: Interview Guide]
|
||||
|
||||
#silentheading(2)[Introduction]
|
||||
|
||||
Thank you for agreeing to participate in this interview. The following questions are designed to gather detailed insights into your experiences with your cat's behavior. Feel free to elaborate on your answers as much as you like.
|
||||
|
||||
+ Instances of Manipulation
|
||||
- Can you describe a specific instance where your cat used manipulation tactics to achieve something?
|
||||
- How did you respond to this behavior?
|
||||
|
||||
+ Emotional Responses
|
||||
- How did you feel during and after the manipulation?
|
||||
- Did the behavior change your emotional state or relationship with your cat?
|
||||
|
||||
+ Behavioral Changes
|
||||
- Have you made any changes to your routine or behavior in response to your cat's manipulation?
|
||||
- How have these changes affected your interactions with your cat?
|
||||
|
||||
+ General Impressions
|
||||
- What do you think about the manipulation tactics used by your cat?
|
||||
- Are there any particular behaviors you find especially effective or challenging?
|
41
lib/jkutemplate/template/content/Conclusion.typ
Normal file
@ -0,0 +1,41 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
|
||||
|
||||
= Conclusion
|
||||
#todo[Replace this chapter!]
|
||||
== Summary of Findings
|
||||
|
||||
This thesis investigated feline manipulation tactics and their impact on human behavior through a multi-method approach involving observational studies, surveys, and interviews. The key findings of this research can be summarized as follows:
|
||||
|
||||
- *Vocalizations:* Cats use a variety of vocalizations, including meows, purrs, and chirps, to manipulate human behavior. Meowing, particularly when high-pitched and frequent, was primarily used to solicit food or attention. Purring was employed both to seek comfort and to reinforce affectionate interactions. Chirps and trills were less common but effectively used to prompt play and interaction.
|
||||
- *Body Language:* Body language plays a crucial role in feline manipulation. Kneading, tail positioning, and eye contact were observed to be significant in influencing human responses. Kneading was used to solicit attention and comfort, while tail positioning indicated the cat’s emotional state and intent. Slow blinking and direct eye contact helped build trust and encouraged affection.
|
||||
- *Attention-Seeking Behaviors:* Cats engage in various attention-seeking behaviors such as climbing on furniture, rubbing against humans, and bringing objects to prompt interaction. These behaviors were effective in gaining attention and initiating play, often leading to increased human engagement and positive interactions.
|
||||
- *Human Responses:* Survey and interview data revealed that humans generally respond positively to feline manipulation tactics. Many participants reported adjusting their routines and behaviors to accommodate their cats' needs. While these manipulative behaviors often led to enhanced bonding and affection, some participants also experienced frustration or a sense of being manipulated.
|
||||
|
||||
== Implications of Findings
|
||||
|
||||
The findings of this study have several implications for understanding the dynamics of human-feline relationships:
|
||||
|
||||
- *Understanding Feline Behavior:* By identifying and categorizing feline manipulation tactics, this research provides valuable insights into how cats influence human behavior. This understanding can help cat owners recognize and interpret their pets’ needs and motivations more effectively.
|
||||
- *Human-Cat Interaction:* The study highlights the complex nature of human-cat interactions and the role of manipulation in strengthening the bond between cats and their owners. Recognizing and responding to feline manipulation can lead to more harmonious and satisfying relationships.
|
||||
- *Behavioral Adjustments:* The data suggests that while cats’ manipulation tactics can lead to positive outcomes, they may also necessitate changes in human routines and behaviors. Being aware of these dynamics can help owners manage their interactions with their cats more consciously.
|
||||
|
||||
== Limitations of the Study
|
||||
|
||||
Several limitations were noted during the research:
|
||||
|
||||
- *Sample Size:* The study's sample size was limited, which may affect the generalizability of the findings. A larger and more diverse sample could provide a broader perspective on feline manipulation tactics.
|
||||
- *Observational Bias:* Observations were conducted in naturalistic settings, which may have introduced observational bias. While efforts were made to minimize this, the presence of observers could have influenced the cats’ behaviors.
|
||||
- *Self-Reporting Bias:* Survey and interview data were subject to self-reporting bias, as participants' perceptions and recollections may not always accurately reflect their experiences.
|
||||
|
||||
== Recommendations for Future Research
|
||||
|
||||
To build on the findings of this study, future research could consider the following recommendations:
|
||||
|
||||
- *Larger Sample Sizes:* Including a larger and more varied sample of cats and human participants can enhance the generalizability of the results and provide a more comprehensive understanding of feline manipulation tactics.
|
||||
- *Longitudinal Studies:* Conducting longitudinal studies could offer insights into how feline manipulation tactics and human responses evolve over time and in different life stages of both cats and their owners.
|
||||
- *Experimental Research:* Experimental studies could explore the causal relationships between specific feline behaviors and human responses, providing a more detailed understanding of how manipulation tactics affect human behavior.
|
||||
|
||||
== Final Thoughts
|
||||
|
||||
This research contributes to a deeper understanding of the complex interactions between cats and their human companions. By examining the manipulation tactics employed by felines and their effects on human behavior, the study sheds light on the nuanced ways in which cats influence their environment. The insights gained from this research not only enhance our knowledge of feline behavior but also offer practical guidance for improving human-cat relationships
|
52
lib/jkutemplate/template/content/DataCollection.typ
Normal file
@ -0,0 +1,52 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
|
||||
|
||||
= Data Collection
|
||||
#todo[Replace this chapter!]
|
||||
|
||||
This chapter details the data collection process used to investigate feline manipulation tactics and their impact on human behavior. The study utilized a combination of observational methods, surveys, and interviews to gather comprehensive data on feline behaviors and human responses. This multi-method approach was designed to provide a well-rounded understanding of how cats influence their human companions.
|
||||
|
||||
== Observational Study
|
||||
=== Procedure
|
||||
|
||||
Observations were conducted in participants' homes to capture naturalistic interactions between cats and their human caregivers. The study took place over a six-week period, during which various behaviors were recorded to understand manipulation tactics @Horwitz2010.
|
||||
=== Data Collection Tools
|
||||
|
||||
- *Video Recording:* Cameras were placed in key areas of the home to capture feline behaviors unobtrusively. Video recordings allowed for detailed analysis of vocalizations, body language, and attention-seeking actions @Serpell2017.
|
||||
- *Field Notes:* Observers took detailed notes to complement video recordings. These notes provided context and insights into behaviors that were not always captured on camera @Turner2017.
|
||||
|
||||
=== Focus Areas
|
||||
|
||||
- *Vocalizations:* Different types of vocalizations, such as meows, purrs, and chirps, were documented. Observers noted the frequency, pitch, and context of these vocalizations @McComb2009.
|
||||
- *Body Language:* Behaviors such as kneading, tail positioning, and eye contact were observed and categorized. Attention was given to how these behaviors were used to elicit specific responses from humans @Bradshaw2012.
|
||||
- *Attention-Seeking Behaviors:* Actions like climbing on furniture, rubbing against humans, and bringing objects were recorded to assess their effectiveness in gaining attention or achieving desired outcomes @Odendaal2000.
|
||||
|
||||
== Surveys
|
||||
=== Design
|
||||
|
||||
Surveys were developed to collect quantitative data on human perceptions of feline behavior and its effects. The survey included questions on:
|
||||
|
||||
- *Frequency of Behaviors:* How often participants observed specific manipulation tactics.
|
||||
- *Effectiveness:* How effective participants believed these behaviors were in achieving certain outcomes, such as getting fed or receiving attention.
|
||||
- *Impact on Routines and Emotions:* How these behaviors affected participants' daily routines and emotional states.
|
||||
|
||||
=== Distribution
|
||||
|
||||
Surveys were distributed to human participants through both electronic and paper formats. The survey was designed to be accessible and easy to complete. Follow-up reminders were sent to ensure a high response rate and comprehensive data collection @Serpell2017.
|
||||
=== Analysis
|
||||
|
||||
Survey responses were analyzed to identify trends and patterns in human perceptions of feline manipulation. The data provided insights into the frequency of specific behaviors and their perceived effectiveness in influencing human behavior @Turner2017.
|
||||
|
||||
== Interviews
|
||||
=== Procedure
|
||||
|
||||
In-depth interviews were conducted with a subset of survey participants to gather qualitative insights into their experiences. Interviews were semi-structured, allowing for exploration of specific instances and personal reflections @Bradshaw2012.
|
||||
=== Topics Covered
|
||||
|
||||
- *Instances of Manipulation:* Participants described notable examples where their cats' behaviors led to specific outcomes.
|
||||
- *Emotional Responses:* Participants discussed their emotional reactions to their cats' manipulative tactics.
|
||||
- *Behavioral Changes:* Insights were gathered on how participants' routines and attitudes towards their cats were affected @Horwitz2010.
|
||||
|
||||
=== Data Collection
|
||||
|
||||
Interviews were recorded and transcribed for analysis. The transcriptions were coded to identify common themes and patterns related to feline manipulation tactics and their impact on human behavior @Odendaal2000.
|
22
lib/jkutemplate/template/content/Introduction.typ
Normal file
@ -0,0 +1,22 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
|
||||
= Introduction <chapter_introduction>
|
||||
<intro>
|
||||
#todo[replace this chapter with your introduction]
|
||||
@intro
|
||||
== Background and Motivation
|
||||
Cats have been companions to humans for thousands of years, yet their unique behavior and the subtle art of their interaction with humans remain only partially understood. Unlike dogs, whose domestication has long been associated with clear roles in human societies, cats have carved out a distinct niche within domestic settings. Their autonomy, coupled with an apparent mastery of human psychology, positions them as enigmatic figures in the world of pets @Bradshaw2012[p.20] . This peculiar relationship motivates the current study, which seeks to explore how cats manage to manipulate and train their human companions to cater to their needs and desires.
|
||||
|
||||
Feline behavior is often characterized by an apparent nonchalance and independence, yet this exterior masks a sophisticated interplay of manipulation and affection @Turner2017[pp. 90-110]. Observations indicate that cats use a variety of subtle and overt strategies to influence human behavior, from purring and meowing to more nuanced actions like "kneading" and selective attention-seeking @McComb2009. This complex interaction raises questions about the cognitive and emotional dynamics at play and how these influence both the cats' and their human caregivers' daily lives.
|
||||
|
||||
== Research Gap
|
||||
While substantial research exists on domestic animals and their roles in human lives, the focus has predominantly been on dogs, often highlighting their roles as companions, workers, or service animals. In contrast, the behavioral intricacies of cats and their impact on human behavior are less thoroughly explored @Serpell2017. Most studies in feline behavior have concentrated on health-related issues or general behavioral patterns, leaving a significant gap in understanding the specific ways in which cats manipulate their human counterparts.
|
||||
|
||||
Current literature does not fully address how cats employ particular behaviors to influence human actions or how these interactions affect human psychology and household dynamics @Horwitz2010. The existing research often lacks a detailed analysis of the behavioral strategies employed by cats to achieve their goals, such as gaining attention, securing food, or ensuring comfort @Odendaal2000. This thesis aims to address these gaps by providing a comprehensive examination of feline manipulation tactics and their consequences for human behavior.
|
||||
|
||||
== Research Objectives and Questions
|
||||
The primary aim of this thesis is to delve into the ways cats influence and manipulate their human companions. This exploration involves identifying and categorizing the specific behaviors that cats use to affect human actions, understanding the psychological mechanisms that underlie these behaviors, and assessing the broader impact on human routines and emotional well-being.
|
||||
|
||||
To achieve these objectives, the research will address several key questions. First, it will investigate the precise behaviors employed by cats to manipulate their human caregivers. This includes examining how various tactics, such as vocalizations, body language, and other interactions, are strategically used to achieve specific goals. Secondly, the study will explore the cognitive and emotional processes involved in these manipulation tactics, seeking to understand the underlying psychological mechanisms that enable cats to exert influence over humans. Finally, the research will evaluate the effects of feline behaviors on human behavior, including changes in daily routines, emotional responses, and overall household dynamics.
|
||||
|
||||
By addressing these questions, the thesis aims to provide a comprehensive understanding of feline manipulation and its implications for both cats and their human companions.
|
23
lib/jkutemplate/template/content/LiteratureReview.typ
Normal file
@ -0,0 +1,23 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
|
||||
= Literature Review
|
||||
#todo[Replace this chapter!]
|
||||
== Overview of Feline Behavior
|
||||
|
||||
Feline behavior has been a subject of interest in animal behavior research, though often overshadowed by studies focusing on dogs. Research has highlighted the domestic cat's unique blend of independence and social interaction. Key studies have documented general behaviors such as purring, kneading, and scratching, as well as their implications for cat health and well-being @Bradshaw2012. However, these studies often overlook the more nuanced aspects of how these behaviors impact human interactions.
|
||||
|
||||
== Human-Animal Interactions
|
||||
|
||||
The field of human-animal interactions has provided valuable insights into the bond between pets and their owners. Research shows that animals, including cats, can influence human emotions and behaviors through various mechanisms @Odendaal2000. Studies on dogs have revealed that they can alter human social interactions and emotional states, suggesting similar potential for cats. However, the specific ways in which cats employ behavioral strategies to manipulate human behavior have not been thoroughly examined @Horwitz2010.
|
||||
|
||||
== Comparative Studies: Cats vs. Dogs
|
||||
|
||||
Comparative studies between cats and dogs reveal differences in their interactions with humans. Dogs, as pack animals, tend to engage in more overtly cooperative and submissive behaviors, which are well-documented and studied. In contrast, cats, as solitary hunters, exhibit a more subtle and independent approach to their interactions @Serpell2017. While dogs have been shown to use behaviors such as eye contact and body language to solicit attention and cooperation, cats often rely on more covert tactics, such as strategic vocalizations and selective affection @McComb2009.
|
||||
|
||||
== Theories of Animal Manipulation
|
||||
|
||||
Theories of animal manipulation suggest that animals use various strategies to influence human behavior. For example, the "manipulative attachment theory" posits that pets use attachment behaviors to elicit caregiving responses from their owners. In cats, these behaviors might include specific vocalizations, body movements, and patterns of attention-seeking @Turner2017. However, existing research primarily focuses on the general impact of these behaviors rather than the specific strategies cats use to achieve their goals.
|
||||
|
||||
== Gaps in the Literature
|
||||
|
||||
Despite the considerable research on domestic animals, significant gaps remain in understanding the precise ways in which cats manipulate their human companions. While there is some research on general feline behavior, there is limited investigation into how these behaviors are used strategically to influence human actions @Horwitz2010. The subtle nature of feline manipulation, combined with the focus on more overt animal behaviors, has resulted in a lack of comprehensive studies examining the detailed tactics cats use and their effects on human behavior and household dynamics.
|
62
lib/jkutemplate/template/content/Methodology.typ
Normal file
@ -0,0 +1,62 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
= Methodology
|
||||
#todo[Replace this chapter!]
|
||||
== Research Design
|
||||
|
||||
This study employs a mixed-methods approach to comprehensively investigate feline manipulation tactics and their effects on human behavior. By combining qualitative and quantitative methods, the research aims to provide a detailed understanding of the specific behaviors cats use to influence their human companions, as well as the psychological and emotional impacts of these behaviors.
|
||||
|
||||
== Participants
|
||||
=== Feline Subjects
|
||||
|
||||
The study includes a sample of domestic cats from diverse backgrounds to ensure a broad understanding of feline manipulation tactics. Cats are selected based on criteria such as age, breed, and living conditions, with the goal of representing a variety of typical domestic scenarios. The following images are examples of the participating cats:
|
||||
|
||||
- Miss Moneypenny: female, ragdoll, 11 years
|
||||
#figure(
|
||||
image("../images/MissMoneypenny.jpg", width: 60%), caption: flex-caption([Beautiful cat named Miss Moneypenny],[Picture of Miss Moneypenny])
|
||||
)<MissMoneypenny>
|
||||
|
||||
- James Bond: male, ragdoll, 11 years
|
||||
#figure(
|
||||
image("../images/JamesBond.jpg", width: 60%), caption: flex-caption([Charming cat named James Bond],[Picture of James Bond])
|
||||
)<JamesBond>
|
||||
|
||||
- Calcipher: male, oriental short hair, 4 months
|
||||
#figure(
|
||||
image("../images/Calcipher.jpg", width: 60%), caption: flex-caption([Adorable kitten named Calcipher],[Picture of Calcipher])
|
||||
)<Calcipher>
|
||||
|
||||
- Mei: female, oriental short hair, 4 months
|
||||
|
||||
#figure(
|
||||
image("../images/Mei.jpg", width: 60%), caption: flex-caption([Cute kitten named Mei],[Picture of Mei])
|
||||
)<Mei>
|
||||
|
||||
=== Human Subjects
|
||||
|
||||
Human participants are recruited from households with cats to observe interactions and gather insights into the impact of feline behavior. Inclusion criteria include having lived with the cat for at least six months to ensure familiarity with the cat's behavioral patterns. Participants are selected to represent a range of demographics to capture diverse experiences.
|
||||
|
||||
== Data Collection Methods
|
||||
Observational Study
|
||||
|
||||
Observations are conducted in naturalistic settings to document feline behaviors and their impact on human responses. Cats and their human companions are observed over a period of six weeks, focusing on interactions related to manipulation tactics such as vocalizations, body language, and attention-seeking behaviors. Observations are recorded using video and field notes to capture detailed instances of manipulation.
|
||||
Surveys and Interviews
|
||||
|
||||
Surveys are distributed to human participants to gather quantitative data on their perceptions of feline behavior and its effects on their daily routines and emotional well-being. The survey includes questions about the frequency of specific behaviors, perceived manipulative tactics, and changes in human behavior as a result.
|
||||
|
||||
In-depth interviews are conducted with a subset of participants to explore their experiences and insights in greater detail. Interviews focus on specific instances of feline manipulation and its impact on household dynamics and personal feelings. The interviews are semi-structured, allowing flexibility to explore relevant topics that arise during the conversation.
|
||||
|
||||
== Data Analysis
|
||||
=== Qualitative Analysis
|
||||
|
||||
Data from observations and interviews are analyzed using thematic analysis to identify common patterns and themes in feline manipulation tactics and human responses. Key behaviors and strategies are categorized, and the relationships between these behaviors and human reactions are explored.
|
||||
==== Quantitative Analysis
|
||||
|
||||
Survey data are analyzed using statistical techniques to quantify the prevalence of specific behaviors and their perceived impact. Descriptive statistics, such as frequency distributions and measures of central tendency, are used to summarize the data. Inferential statistics, such as correlation and regression analyses, are employed to examine relationships between feline behaviors and changes in human routines and emotions.
|
||||
|
||||
== Ethical Considerations
|
||||
|
||||
Ethical approval is obtained from the relevant institutional review board (IRB) to ensure that all research activities adhere to ethical standards. Informed consent is obtained from all human participants, and confidentiality is maintained by anonymizing personal data. Feline subjects are observed in their natural environment without any intervention that could affect their well-being.
|
||||
|
||||
== Limitations
|
||||
|
||||
The study acknowledges potential limitations, including the observational nature of the research, which may introduce observer bias. Additionally, the sample size for both feline and human participants may limit the generalizability of the findings. Efforts are made to minimize these limitations by employing rigorous data collection and analysis methods.
|
105
lib/jkutemplate/template/content/Tutorial.typ
Normal file
@ -0,0 +1,105 @@
|
||||
#import "../utils.typ": todo, silentheading, flex-caption
|
||||
#import "@preview/wrap-it:0.1.0": wrap-content
|
||||
|
||||
= Tutorial <Tutorial>
|
||||
#todo[Exclude this chapter!]
|
||||
|
||||
This template uses the Arial font with size 11pt, a spacing of 1em with a side margin of 2.5cm with a 1cm single sided bounding correction, which is _*intended*_ to follow the guidelines of the @jku. This can be edited in the `thesis.typ` file#footnote[This is a footnote.]. If you are looking for how to cite, this sentence is what your are looking for @Bradshaw2012. This is an abbreviation that is explained in the glossary, which is the @goat.
|
||||
== Drafting and Inwriting
|
||||
Set the boolean variables `inwriting` and `draft` inside `utils.typ`.
|
||||
|
||||
The `draft` variable is used to show DRAFT in the header and the title. This should be true until the final version is handed-in.
|
||||
|
||||
The `inwriting` is used to change the appearance of the document for easier writing. Set to `true` for yourself but `false` for handing in a draft or so.
|
||||
== Example for figures
|
||||
=== Normal Figure
|
||||
#lorem(30)
|
||||
And this is a reference to this @tag.
|
||||
#figure(
|
||||
image("../images/MissMoneypenny.jpg", width: 60%), caption: flex-caption([This is a #strike[caption] beautiful cat named Miss Moneypenny ],[Picture of Miss Moneypenny (short description of the image for the list of figures)])
|
||||
|
||||
)<tag>
|
||||
|
||||
|
||||
=== Wrap-Content
|
||||
#wrap-content([#figure(image("../images/JamesBond.jpg", width:150pt,), caption: [another caption])],
|
||||
[
|
||||
#lorem(100)
|
||||
|
||||
], align: right)
|
||||
|
||||
|
||||
|
||||
=== Sub-Figures
|
||||
#figure(grid(columns: 2, row-gutter: 2mm, column-gutter: 1mm,
|
||||
|
||||
image("../images/Calcipher.jpg", height: 200pt), image("../images/Mei.jpg", height: 200pt),
|
||||
|
||||
"a) test 1", "b) test2"),
|
||||
|
||||
caption: "Caption"
|
||||
|
||||
)<label>
|
||||
|
||||
== Math
|
||||
|
||||
This is how you define inline math: $a^2 + b^2 = c^2$. For bigger equations you can use a math block, as you can see in @eq1.
|
||||
$
|
||||
integral_(-oo)^(oo) f(x) d x = 1\
|
||||
1 = 1
|
||||
$<eq1>
|
||||
|
||||
== Tables
|
||||
=== Normal Table
|
||||
#align(center)[
|
||||
#table(
|
||||
columns: 3,
|
||||
align: center,
|
||||
table.header(
|
||||
[Substance],
|
||||
[Subcritical °C],
|
||||
[Supercritical °C],
|
||||
),
|
||||
[Hydrochloric Acid],
|
||||
[12.0], [92.1],
|
||||
[Sodium Myreth Sulfate],
|
||||
[16.6], [104],
|
||||
[Potassium Hydroxide],
|
||||
table.cell(colspan: 2)[24.7],
|
||||
)]
|
||||
=== Referenceable Table
|
||||
#figure(
|
||||
table(
|
||||
columns: 3,
|
||||
align: center,
|
||||
table.header(
|
||||
[Substance],
|
||||
[Subcritical °C],
|
||||
[Supercritical °C],
|
||||
),
|
||||
[Hydrochloric Acid],
|
||||
[12.0], [92.1],
|
||||
[Sodium Myreth Sulfate],
|
||||
[16.6], [104],
|
||||
[Potassium Hydroxide],
|
||||
table.cell(colspan: 2)[24.7],
|
||||
),
|
||||
caption: "This is a caption"
|
||||
)
|
||||
|
||||
#silentheading(4)[This is a silent level 4 heading]
|
||||
This won't show up in the overview.
|
||||
== Code
|
||||
Some python code:
|
||||
```py
|
||||
print("Hello World")
|
||||
```
|
||||
Some C++ code:
|
||||
```cpp
|
||||
#include <iostream>
|
||||
|
||||
int main() {
|
||||
std::cout << "Hello World!";
|
||||
return 0;
|
||||
}
|
||||
```
|
17
lib/jkutemplate/template/glossary.typ
Normal file
@ -0,0 +1,17 @@
|
||||
// this is an example. Check https://typst.app/universe/package/glossarium
|
||||
|
||||
#let glossary = (
|
||||
// minimal term
|
||||
(key: "jku", short: "Johannes Kepler University"),
|
||||
// a term with a long form
|
||||
(key: "goat", short: "GOAT", long: "greatest of all time"),
|
||||
// no long form here
|
||||
(key: "kdecom", short: "KDE Community", desc:"An international team developing and distributing Open Source software."),
|
||||
// a full term with description containing markup
|
||||
(
|
||||
key: "oidc",
|
||||
short: "OIDC",
|
||||
long: "OpenID Connect",
|
||||
desc: [OpenID is an open standard and decentralized authentication protocol promoted by the non-profit
|
||||
#link("https://en.wikipedia.org/wiki/OpenID#OpenID_Foundation")[OpenID Foundation].]),
|
||||
)
|
BIN
lib/jkutemplate/template/images/Calcipher.jpg
Normal file
After Width: | Height: | Size: 378 KiB |
BIN
lib/jkutemplate/template/images/JamesBond.jpg
Normal file
After Width: | Height: | Size: 494 KiB |
BIN
lib/jkutemplate/template/images/Mei.jpg
Normal file
After Width: | Height: | Size: 436 KiB |
BIN
lib/jkutemplate/template/images/MissMoneypenny.jpg
Normal file
After Width: | Height: | Size: 436 KiB |
100
lib/jkutemplate/template/items.bib
Normal file
@ -0,0 +1,100 @@
|
||||
@Comment{
|
||||
from https://api.zotero.org/users/{xxx}/collections/{xxx}/items/top?key={xxx}&format=biblatex
|
||||
--> you can use the following shell script to copy the data to the clipboard
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
limit=25
|
||||
start=0
|
||||
your_user_id="98765"
|
||||
your_collection_id="ABC123"
|
||||
your_zotero_key="xxxxxx"
|
||||
|
||||
# Retrieve data from the link
|
||||
while true; do
|
||||
response=$(curl -s "https://api.zotero.org/users/$your_user_id/collections/$your_collection_id/items/top?key=$your_zotero_key&format=biblatex&limit=$limit&start=$start")
|
||||
if [ -z "$response" ]; then
|
||||
break
|
||||
fi
|
||||
echo "$response"
|
||||
start=$((start + limit))
|
||||
done | pbcopy
|
||||
|
||||
}
|
||||
|
||||
@misc{cite_todo,
|
||||
title = {todo},
|
||||
author = {todo},
|
||||
}
|
||||
|
||||
@book{Bradshaw2012,
|
||||
author = {John W. S. Bradshaw},
|
||||
title = {Cat Sense: How the New Feline Science Can Make You a Better Friend to Your Pet},
|
||||
publisher = {Basic Books},
|
||||
year = {2012},
|
||||
address = {New York},
|
||||
isbn = {978-0465021222}
|
||||
}
|
||||
|
||||
@book{Turner2017,
|
||||
author = {David C. Turner and Patrick Bateson},
|
||||
title = {The Domestic Cat: The Biology of Its Behaviour},
|
||||
publisher = {Cambridge University Press},
|
||||
year = {2017},
|
||||
edition = {4th},
|
||||
address = {Cambridge},
|
||||
isbn = {978-1107405795}
|
||||
}
|
||||
|
||||
@article{Mason2003,
|
||||
author = {G. J. Mason},
|
||||
title = {Behavioural problems of companion animals: An overview},
|
||||
journal = {Applied Animal Behaviour Science},
|
||||
year = {2003},
|
||||
volume = {81},
|
||||
number = {3},
|
||||
pages = {169-179},
|
||||
doi = {10.1016/S0168-1591(02)00229-6}
|
||||
}
|
||||
|
||||
@article{McComb2009,
|
||||
author = {K. McComb and K. P. Taylor},
|
||||
title = {Vocal communication in cats: Evidence of intentional communication},
|
||||
journal = {Journal of Animal Science},
|
||||
year = {2009},
|
||||
volume = {87},
|
||||
number = {4},
|
||||
pages = {208-215},
|
||||
doi = {10.2527/jas.2008-1198}
|
||||
}
|
||||
|
||||
@book{Serpell2017,
|
||||
author = {James A. Serpell},
|
||||
title = {The Domestic Cat: A Comprehensive Guide},
|
||||
publisher = {Oxford University Press},
|
||||
year = {2017},
|
||||
address = {Oxford},
|
||||
isbn = {978-0198728062}
|
||||
}
|
||||
|
||||
@article{Odendaal2000,
|
||||
author = {J. S. J. Odendaal and D. R. Meintjes},
|
||||
title = {Neurophysiological correlates of the bond between humans and their pets},
|
||||
journal = {Journal of Comparative Psychology},
|
||||
year = {2000},
|
||||
volume = {114},
|
||||
number = {4},
|
||||
pages = {285-292},
|
||||
doi = {10.1037/0735-7036.114.4.285}
|
||||
}
|
||||
|
||||
@article{Horwitz2010,
|
||||
author = {David F. Horwitz and Sarah A. Mills},
|
||||
title = {Feline behavior and human-animal interactions},
|
||||
journal = {Veterinary Clinics of North America: Small Animal Practice},
|
||||
year = {2010},
|
||||
volume = {40},
|
||||
number = {1},
|
||||
pages = {39-54},
|
||||
doi = {10.1016/j.cvsm.2009.09.002}
|
||||
}
|
239
lib/jkutemplate/template/thesis.typ
Normal file
@ -0,0 +1,239 @@
|
||||
#import "@preview/not-jku-thesis:0.1.0": jku-thesis
|
||||
|
||||
#import "utils.typ": inwriting, draft, todo, flex-caption, flex-caption-styles
|
||||
#import "glossary.typ": glossary
|
||||
#import "@preview/glossarium:0.2.6": make-glossary, print-glossary, gls, glspl
|
||||
|
||||
#show: make-glossary
|
||||
#show: flex-caption-styles
|
||||
|
||||
|
||||
/** Drafting
|
||||
|
||||
Set the boolean variables `inwriting` and `draft` inside utils.typ.
|
||||
|
||||
The "draft" variable is used to show DRAFT in the header and the title. This should be true until the final version is handed-in.
|
||||
|
||||
The "inwriting" is used to change the appearance of the document for easier writing. Set to true for yourself but false for handing in a draft or so.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
// global text settings
|
||||
#set text(lang: "en", weight: "regular", font: "Arial", size: 11pt)
|
||||
#set text(ligatures: false)
|
||||
#set par(leading: 1em, first-line-indent: 0em, justify: true)
|
||||
#show par: set block(spacing: 1.5em) // spacing after a paragraph
|
||||
#show raw: set text( size: 9pt) // set text for code-blocks (``)
|
||||
|
||||
#set page(margin: (left: 2.5cm+1cm, // binding correction of 1cm for single sided printing
|
||||
right: 2.5cm,
|
||||
y: 2.9cm),
|
||||
// margin: (inside: 2.5cm+1cm, // binding correction of 1cm for double sided printing
|
||||
// outside: 2.5cm,
|
||||
// y:2.5cm),
|
||||
// binding: left
|
||||
)
|
||||
|
||||
#let date = datetime.today() // not today: datetime(year: 1969, month: 9, day: 6,)
|
||||
#let k-number = "k12345678"
|
||||
|
||||
|
||||
#show: jku-thesis.with(
|
||||
thesis-type: "Master",
|
||||
degree: "Master of Science",
|
||||
program: "Feline Behavioral Studies",
|
||||
supervisor: "Professor Mittens Meowington, Ph.D.",
|
||||
advisors: ("Dr. Felix Pawsworth","Dr. Whiskers Purrington"), // singular advisor like this: ("Dr. Felix Pawsworth",) and no supervisor: ""
|
||||
department: "Department of Animal Psychology",
|
||||
author: "Felina Whiskerstein, BSc.",
|
||||
date: date,
|
||||
place-of-submission: "Linz",
|
||||
title: "Purrfection: How Cats Skillfully Train and Manipulate Humans to Serve Their Every Need",
|
||||
abstract-en: [//max. 250 words
|
||||
This study explores the intricate ways in which domestic cats employ manipulation tactics to influence human behavior. Utilizing a mixed-methods approach that combines observational data, surveys, and interviews, this research investigates how cats utilize vocalizations, body language, and attention-seeking behaviors to achieve their goals, ranging from soliciting food to initiating play.
|
||||
|
||||
The findings reveal that cats predominantly use vocalizations such as meowing, purring, and chirping to manipulate their human companions. Meowing is particularly effective for demanding attention and food, while purring is often used to enhance bonding and comfort. Chirps and trills are employed to encourage play and interaction. Additionally, body language such as kneading, tail positioning, and eye contact play significant roles in communication and manipulation. Attention-seeking behaviors, including climbing, rubbing, and bringing objects, are crucial in eliciting responses from humans.
|
||||
|
||||
The research highlights the positive impact of these manipulation tactics on human-cat relationships, although it also acknowledges the potential for frustration and behavioral adjustments by cat owners. The study contributes valuable insights into the complexities of human-animal interactions and suggests pathways for future research, including larger sample sizes, longitudinal studies, and experimental investigations.
|
||||
|
||||
This work offers practical implications for enhancing human-cat interactions and improving the understanding of feline behavior, fostering more harmonious relationships between cats and their human companions.
|
||||
],
|
||||
abstract-de: none,// or specify the abbstract_de in a container []
|
||||
acknowledgements: [
|
||||
I would like to extend a huge thank you to Dr. Felina Whiskers, my primary advisor, for her pawsitive support and expert guidance. Without her wisdom and occasional catnip breaks, this thesis might have turned into a hairball of confusion.
|
||||
|
||||
A special shoutout to Dr. Felix Pawsworth, my co-advisor, for his keen insights and for keeping me from chasing my own tail during this research. Your input was invaluable and much appreciated.
|
||||
|
||||
To the cat owners, survey respondents, and interviewees—thank you for sharing your feline escapades. Your stories made this research more entertaining than a laser pointer.
|
||||
|
||||
Lastly, to my family and friends, thank you for tolerating the endless cat puns and my obsession with feline behavior. Your patience and encouragement kept me from becoming a full-time cat herder.
|
||||
|
||||
To everyone who contributed to this thesis, directly or indirectly, I offer my heartfelt gratitude. You've all made this journey a little less ruff!
|
||||
|
||||
],//acknowledgements: none // if you are self-made
|
||||
show-title-in-header: false,
|
||||
draft: draft,
|
||||
)
|
||||
|
||||
// set equation and heading numbering
|
||||
#set math.equation(numbering: "(1)")
|
||||
#set heading(numbering: "1.1")
|
||||
|
||||
|
||||
// Set font size
|
||||
#show heading.where(level: 3): set text(size: 1.05em)
|
||||
#show heading.where(level: 4): set text(size: 1.0em)
|
||||
#show figure: set text(size: 0.9em)
|
||||
|
||||
// Set spacings
|
||||
#set table(inset: 6.5pt)
|
||||
#show table: set par(justify: false)
|
||||
#show figure: it => [#v(1em) #it #v(1em)]
|
||||
|
||||
#show heading.where(level: 1): set block(above: 1.95em, below: 1em)
|
||||
#show heading.where(level: 2): set block(above: 1.85em, below: 1em)
|
||||
#show heading.where(level: 3): set block(above: 1.75em, below: 1em)
|
||||
#show heading.where(level: 4): set block(above: 1.55em, below: 1em)
|
||||
|
||||
|
||||
// Pagebreak after level 1 headings
|
||||
#show heading.where(level: 1): it => [
|
||||
#pagebreak(weak: true)
|
||||
#it
|
||||
]
|
||||
|
||||
|
||||
// Set citation style
|
||||
#set cite(style: "iso-690-author-date") // page info visible
|
||||
//#set cite(style: "iso-690-numeric") // page info visible
|
||||
//#set cite(style: "springer-basic")// no additional info visible (page number in square brackets)
|
||||
//#set cite(style: "alphanumeric")// page info not visible
|
||||
|
||||
|
||||
// Table stroke
|
||||
#set table(stroke: 0.5pt + black)
|
||||
|
||||
|
||||
// show reference targets in brackets
|
||||
#show ref: it => {
|
||||
let el = it.element
|
||||
if el != none and el.func() == heading {
|
||||
|
||||
[#it (#el.body)]
|
||||
} else [#it]
|
||||
}
|
||||
|
||||
// color links and references for the final document
|
||||
// #show link: set text(fill: blue)
|
||||
// #show ref: set text(fill: color.olive)
|
||||
|
||||
|
||||
// style table-of-contents
|
||||
#show outline.entry.where(
|
||||
level: 1
|
||||
): it => {
|
||||
v(1em, weak: true)
|
||||
strong(it)
|
||||
}
|
||||
|
||||
|
||||
// Draft Settings //
|
||||
#show cite: set text(fill: purple) if inwriting // highlight citations
|
||||
#show footnote: set text(fill: purple) if inwriting
|
||||
#show ref: set text(fill: purple) if inwriting
|
||||
|
||||
// Custom Footer //
|
||||
#set page(footer: context [
|
||||
#text(size:9pt)[
|
||||
#table(
|
||||
stroke: none,
|
||||
columns: (1fr, auto, 1fr),
|
||||
align: (left, center, right),
|
||||
inset: 5pt,
|
||||
[#date.display("[month repr:long] [day], [year]")],[#k-number],[#counter(page).display(
|
||||
"1",
|
||||
)],
|
||||
|
||||
)
|
||||
]
|
||||
])
|
||||
|
||||
// ------ Content ------
|
||||
|
||||
// Table of contents.
|
||||
#outline(
|
||||
title: {
|
||||
text(1.3em, weight: 700, "Contents")
|
||||
v(10mm)
|
||||
},
|
||||
indent: 2em,
|
||||
depth: 3
|
||||
)<outline>
|
||||
#pagebreak(weak: false)
|
||||
|
||||
|
||||
// --- Main Chapters ---
|
||||
|
||||
|
||||
#include "content/Tutorial.typ"// Some trivial, but useful snippets
|
||||
|
||||
#include "content/Introduction.typ"
|
||||
|
||||
#include "content/LiteratureReview.typ"
|
||||
|
||||
#include "content/Methodology.typ"
|
||||
|
||||
#include "content/DataCollection.typ"
|
||||
|
||||
#include "content/Analysis.typ"
|
||||
|
||||
#include "content/Conclusion.typ"
|
||||
|
||||
|
||||
// --- Appendixes ---
|
||||
|
||||
// restart page numbering using roman numbers
|
||||
#set page(footer: context [
|
||||
#text(size:9pt)[
|
||||
#table(
|
||||
stroke: none,
|
||||
columns: (1fr, auto, 1fr),
|
||||
align: (left, center, right),
|
||||
inset: 5pt,
|
||||
[#date.display("[month repr:long] [day], [year]")],[#k-number],[#counter(page).display(
|
||||
"i",
|
||||
)],
|
||||
|
||||
)
|
||||
]
|
||||
])
|
||||
#counter(page).update(1)
|
||||
|
||||
|
||||
#include("content/Appendix.typ")
|
||||
|
||||
// List of Acronyms - comment out, if not needed (no abbreviations were used).
|
||||
#heading(numbering: none)[List of Acronyms]
|
||||
#print-glossary(glossary)
|
||||
|
||||
// List of figures - comment out, if not needed.
|
||||
#heading(numbering: none)[List of Figures]
|
||||
#outline(
|
||||
title: none,
|
||||
target: figure.where(kind: image),
|
||||
)
|
||||
|
||||
|
||||
// List of tables - comment out, if not needed.
|
||||
#heading(numbering: none)[List of Tables]
|
||||
#outline(
|
||||
title: none,
|
||||
target: figure.where(kind: table))
|
||||
|
||||
|
||||
|
||||
// --- Bibliography ---
|
||||
|
||||
#set par(leading: 0.7em, first-line-indent: 0em, justify: true)
|
||||
#bibliography("items.bib", style: "apa")
|
35
lib/jkutemplate/template/utils.typ
Normal file
@ -0,0 +1,35 @@
|
||||
#let inwriting = true
|
||||
#let draft = true
|
||||
|
||||
#assert(not(inwriting and not(draft)), message: "If inwriting is true, draft should be true as well.")
|
||||
|
||||
#let todo(it) = [
|
||||
#if inwriting [
|
||||
#text(size: 0.8em)[#emoji.pencil] #text(it, fill: red, weight: 600)
|
||||
]
|
||||
]
|
||||
|
||||
#let silentheading(level, body) = [
|
||||
#heading(outlined: false, level: level, numbering: none, bookmarked: true)[#body]
|
||||
]
|
||||
|
||||
#let in-outline = state("in-outline", false)
|
||||
|
||||
#let flex-caption-styles = rest => {
|
||||
show outline: it => {
|
||||
in-outline.update(true)
|
||||
it
|
||||
in-outline.update(false)
|
||||
}
|
||||
rest
|
||||
}
|
||||
|
||||
#let flex-caption(long, short) = (
|
||||
context (
|
||||
if in-outline.get() {
|
||||
short
|
||||
} else {
|
||||
long
|
||||
}
|
||||
)
|
||||
)
|
BIN
lib/jkutemplate/thumbnail.png
Normal file
After Width: | Height: | Size: 153 KiB |
89
lib/jkutemplate/titlepage.typ
Normal file
@ -0,0 +1,89 @@
|
||||
|
||||
#let titlepage(
|
||||
thesis-type: "",
|
||||
degree: "",
|
||||
program: "",
|
||||
supervisor: "",
|
||||
advisors: (),
|
||||
department: "",
|
||||
author: "",
|
||||
date: none,
|
||||
title: ""
|
||||
) ={
|
||||
|
||||
set par(leading: 0.65em, first-line-indent: 0em, justify: false)
|
||||
show par: set block(spacing: 1.2em) // spacing after a paragraph
|
||||
|
||||
place(bottom+left,float: false, dx: 0cm, dy:-10%)[#box(width: 74%)[
|
||||
|
||||
// Title in upper case
|
||||
#text(size: 28pt, weight: "black", font: "Arial")[#title]
|
||||
// JKU big-K Logo
|
||||
#image("big_K.png", width: 125pt)
|
||||
//#v(-1cm)
|
||||
// Additional Information
|
||||
#set text(weight: "regular", font: "Arial")
|
||||
#text(size: 14pt)[#thesis-type's Thesis\ ]
|
||||
#text(size: 11pt)[to confer the academic degree of\ ]
|
||||
#text(size: 14pt)[#degree\ ]
|
||||
#text(size: 11pt)[in the #thesis-type's program\ ]
|
||||
#text(size: 14pt)[#program ]
|
||||
]
|
||||
]
|
||||
|
||||
// JKU logo in the header
|
||||
place(top+right ,float: false, dx: 1cm, dy: -1.6cm)[#box(width: 26%)[
|
||||
// Title
|
||||
#align(right)[#image("JKU.png", width: 150pt)]
|
||||
|
||||
]
|
||||
]
|
||||
|
||||
place(top+right ,float: false, dx: 1.2cm, dy: 3cm)[#box(width: 28%)[
|
||||
// Title
|
||||
#align(left)[
|
||||
|
||||
|
||||
#text(size: 9pt)[
|
||||
Author\
|
||||
*#author* \ \
|
||||
Submission\
|
||||
*#department*\ \
|
||||
Thesis Supervisor\
|
||||
*#supervisor*\ \
|
||||
#if advisors != () and advisors != "" [
|
||||
#if advisors.len()>=2 [
|
||||
Assistant Thesis Supervisors\
|
||||
] else [
|
||||
Assistant Thesis Supervisor\
|
||||
]
|
||||
*#advisors.join(", \n")*\ \
|
||||
]
|
||||
#date.display("[month repr:long] [year]")
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
place(bottom+right ,float: false, dx: 1cm, dy:1cm)[#box(width: 25%)[
|
||||
// Title
|
||||
#align(left)[
|
||||
|
||||
#text(size: 8pt)[
|
||||
|
||||
#text(size: 8pt, weight: "black", font: "Arial")[JOHANNES KEPLER
|
||||
UNIVERSITY LINZ]\
|
||||
Altenberger Straße 69\
|
||||
4040 Linz, Austria\
|
||||
jku.at\
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
]
|
||||
]
|
||||
]
|
||||
pagebreak()
|
||||
}
|
17
lib/jkutemplate/typst.toml
Normal file
@ -0,0 +1,17 @@
|
||||
[package]
|
||||
name = "not-jku-thesis"
|
||||
version = "0.1.0"
|
||||
entrypoint = "template.typ"
|
||||
authors = ["Raphael Siegl"]
|
||||
license = "MIT-0"
|
||||
description = "Customizable not official template for a thesis at the JKU, derived from a template created by Fabian Scherer <https://www.linkedin.com/in/fabian-scherer-de/> with Leon Weber in an advisory role."
|
||||
categories = ["thesis"]
|
||||
homepage = "https://github.com/Slyde-R/not-jku-thesis-template"
|
||||
keywords = ["Johannes Kepler Universtät", "JKU", "Thesis", "Masterarbeit", "Bachelorarbeit", "Final Thesis", "Bachelor's Thesis", "Master's Thesis"]
|
||||
disciplines = []
|
||||
compiler = "0.11.0"
|
||||
|
||||
[template]
|
||||
path = "template"
|
||||
entrypoint = "thesis.typ"
|
||||
thumbnail = "thumbnail.png"
|
11
main.typ
@ -1,4 +1,4 @@
|
||||
#import "@preview/not-jku-thesis:0.1.0": jku-thesis
|
||||
#import "lib/jkutemplate/template.typ": jku-thesis
|
||||
|
||||
#import "utils.typ": inwriting, draft, todo, flex-caption, flex-caption-styles
|
||||
#import "glossary.typ": glossary
|
||||
@ -39,24 +39,23 @@
|
||||
#let date = datetime.today() // not today: datetime(year: 1969, month: 9, day: 6,)
|
||||
#let k-number = "k12104785"
|
||||
|
||||
|
||||
#show: jku-thesis.with(
|
||||
thesis-type: "Bachelor",
|
||||
degree: "Bachelor of Science",
|
||||
program: "Artifical Intelligence",
|
||||
program: "Artificial Intelligence",
|
||||
supervisor: "Josef Scharinger, a.Univ.-Prof, Dr.",
|
||||
advisors: (), // singular advisor like this: ("Dr. Felix Pawsworth",) and no supervisor: ""
|
||||
department: "Institute of Computational Perception",
|
||||
author: "Lukas Heiligenbrunner",
|
||||
date: date,
|
||||
place-of-submission: "Linz",
|
||||
title: "Few shot learning for anomaly detection",
|
||||
title: "Few-Shot Learning for Anomaly Detection",
|
||||
abstract-en: [//max. 250 words
|
||||
This thesis explores the application of Few-Shot Learning (FSL) in anomaly detection, a critical area in industrial and automotive domains requiring robust and efficient algorithms for identifying defects.
|
||||
Traditional methods, such as PatchCore and EfficientAD, achieve high accuracy but often demand extensive training data and are sensitive to environmental changes, necessitating frequent retraining.
|
||||
Traditional methods for anomaly detection, such as PatchCore@patchcorepaper and EfficientAD@efficientADpaper, achieve high accuracy but often demand extensive training data and are sensitive to environmental changes, necessitating frequent retraining.
|
||||
FSL offers a promising alternative by enabling models to generalize effectively from minimal samples, thus reducing training time and adaptation overhead.
|
||||
|
||||
The study evaluates three FSL methods—ResNet50, P>M>F, and CAML—using the MVTec AD dataset.
|
||||
The study evaluates three FSL methods—ResNet50@resnet, P>M>F@pmfpaper, and CAML@caml_paper—using the MVTec AD dataset.
|
||||
Experiments focus on tasks such as anomaly detection, class imbalance handling, //and comparison of distance metrics.
|
||||
and anomaly type classification.
|
||||
Results indicate that while FSL methods trail behind state-of-the-art algorithms in detecting anomalies, they excel in classifying anomaly types, showcasing potential in scenarios requiring detailed defect identification.
|
||||
|
@ -55,7 +55,7 @@ More defect classes are already an indication that a classification task might b
|
||||
Cut outer insulation
|
||||
]), <e>,
|
||||
figure(image("rsc/mvtec/cable/missing_cable_example.png"), caption: [
|
||||
Mising cable defect
|
||||
Missing cable defect
|
||||
]), <e>,
|
||||
figure(image("rsc/mvtec/cable/poke_insulation_example.png"), caption: [
|
||||
Poke insulation defect
|
||||
@ -76,7 +76,7 @@ In contrast to traditional supervised learning, where a huge amount of labeled d
|
||||
here we only have 1-10 samples per class (so called shots).
|
||||
So the model is prone to overfitting to the few training samples and this means they should represent the whole sample distribution as good as possible.~#cite(<parnami2022learningexamplessummaryapproaches>)
|
||||
|
||||
Typically a few-shot leaning task consists of a support and query set.
|
||||
Typically, a few-shot leaning task consists of a support and query set.
|
||||
Where the support-set contains the training data and the query set the evaluation data for real world evaluation.
|
||||
A common way to format a few-shot leaning problem is using n-way k-shot notation.
|
||||
For Example, 3 target classes and 5 samples per class for training might be a 3-way 5-shot few-shot classification problem.~@snell2017prototypicalnetworksfewshotlearning @patchcorepaper
|
||||
@ -89,7 +89,7 @@ These models learn a representation of each class in a reduced dimensionality an
|
||||
caption: [Prototypical network for 3-ways and 5-shots. #cite(<snell2017prototypicalnetworksfewshotlearning>)],
|
||||
) <prototypefewshot>
|
||||
|
||||
The first and easiest method of this bachelor thesis uses a simple ResNet50 to calucalte those embeddings and clusters the shots together by calculating the class center.
|
||||
The first and easiest method of this bachelor thesis uses a simple ResNet50@resnet to calculate those embeddings and clusters the shots together by calculating the class center.
|
||||
This is basically a simple prototypical network.
|
||||
See @resnet50impl.~@chowdhury2021fewshotimageclassificationjust
|
||||
|
||||
@ -98,12 +98,13 @@ See @resnet50impl.~@chowdhury2021fewshotimageclassificationjust
|
||||
An especially hard task is to generalize from such few samples.
|
||||
In typical supervised learning the model sees thousands or millions of samples of the corresponding domain during learning.
|
||||
This helps the model to learn the underlying patterns and to generalize well to unseen data.
|
||||
In few-shot learning the model has to generalize from just a few samples.#todo[Source?]#todo[Write more about. eg. class distributions]
|
||||
|
||||
In few-shot learning the model has to generalize from just a few samples.#todo[Write more about. eg. class distributions]
|
||||
@Goodfellow-et-al-2016
|
||||
/*
|
||||
=== Softmax
|
||||
#todo[Maybe remove this section]
|
||||
The Softmax function @softmax #cite(<liang2017soft>) converts $n$ numbers of a vector into a probability distribution.
|
||||
Its a generalization of the Sigmoid function and often used as an Activation Layer in neural networks.
|
||||
It is a generalization of the Sigmoid function and often used as an Activation Layer in neural networks.
|
||||
|
||||
$
|
||||
sigma(bold(z))_j = (e^(z_j)) / (sum_(k=1)^k e^(z_k)) "for" j:={1,...,k}
|
||||
@ -125,37 +126,38 @@ cal(L)(p,q) &= -1/N sum_(i=1)^(cal(B)) (p_i log(q_i) + (1-p_i) log(1-q_i)) #<cre
|
||||
$ <crel>
|
||||
|
||||
Equation~$cal(L)(p,q)$ @crelbatched #cite(<handsonaiI>) is the Binary Cross Entropy Loss for a batch of size $cal(B)$ and used for model training in this Practical Work.
|
||||
|
||||
*/
|
||||
=== Cosine Similarity
|
||||
Cosine similarity is a widely used metric for measuring the similarity between two vectors. (@cosinesimilarity).
|
||||
It computes the cosine of the angle between the vectors, offering a measure of their alignment.
|
||||
This property makes the cosine similarity particularly effective in scenarios where the
|
||||
direction of the vector holds more important information than the magnitude.
|
||||
@dataminingbook@analysisrudin
|
||||
|
||||
$
|
||||
cos(theta) &:= (A dot B) / (||A|| dot ||B||)\
|
||||
&= (sum_(i=1)^n A_i B_i)/ (sqrt(sum_(i=1)^n A_i^2) dot sqrt(sum_(i=1)^n B_i^2))
|
||||
$ <cosinesimilarity>
|
||||
|
||||
#todo[Source?]
|
||||
=== Euclidean Distance
|
||||
The euclidean distance (@euclideannorm) is a simpler method to measure the distance between two points in a vector space.
|
||||
It just calculates the square root of the sum of the squared differences of the coordinates.
|
||||
the euclidean distance can also be represented as the L2 norm (euclidean norm) of the difference of the two vectors.
|
||||
The euclidean distance can also be represented as the L2 norm (euclidean norm) of the difference of the two vectors.
|
||||
@analysisrudin
|
||||
|
||||
$
|
||||
cal(d)(A,B) = ||A-B|| := sqrt(sum_(i=1)^n (A_i - B_i)^2)
|
||||
$ <euclideannorm>
|
||||
#todo[Source?]
|
||||
|
||||
=== Patchcore
|
||||
|
||||
=== PatchCore
|
||||
// https://arxiv.org/pdf/2106.08265
|
||||
PatchCore is an advanced method designed for cold-start anomaly detection and localization, primarily focused on industrial image data.
|
||||
PatchCore@patchcorepaper is an advanced method designed for cold-start anomaly detection and localization, primarily focused on industrial image data.
|
||||
It operates on the principle that an image is anomalous if any of its patches is anomalous.
|
||||
The method achieves state-of-the-art performance on benchmarks like MVTec AD with high accuracy, low computational cost, and competitive inference times. #cite(<patchcorepaper>)
|
||||
#todo[Absatz umformulieren und vereinfachen]
|
||||
|
||||
The PatchCore framework leverages a pre-trained convolutional neural network (e.g., WideResNet50) to extract mid-level features from image patches.
|
||||
The PatchCore framework leverages a pretrained convolutional neural network (e.g., WideResNet50@resnet) to extract mid-level features from image patches.
|
||||
By focusing on intermediate layers, PatchCore balances the retention of localized information with a reduction in bias associated with high-level features pre-trained on ImageNet.
|
||||
To enhance robustness to spatial variations, the method aggregates features from local neighborhoods using adaptive pooling, which increases the receptive field without sacrificing spatial resolution. #cite(<patchcorepaper>)
|
||||
|
||||
@ -170,35 +172,35 @@ If any patch exhibits a significant deviation, the corresponding image is flagge
|
||||
For localization, the anomaly scores of individual patches are spatially aligned and upsampled to generate segmentation maps, providing pixel-level insights into the anomalous regions.~#cite(<patchcorepaper>)
|
||||
|
||||
|
||||
Patchcore reaches a 99.6% AUROC on the MVTec AD dataset when detecting anomalies.
|
||||
PatchCore reaches a 99.6% AUROC on the MVTec AD dataset when detecting anomalies.
|
||||
A great advantage of this method is the coreset subsampling reducing the memory bank size significantly.
|
||||
This lowers computational costs while maintaining detection accuracy.~#cite(<patchcorepaper>)
|
||||
|
||||
#figure(
|
||||
image("rsc/patchcore_overview.png", width: 80%),
|
||||
caption: [Architecture of Patchcore. #cite(<patchcorepaper>)],
|
||||
caption: [Architecture of PatchCore. #cite(<patchcorepaper>)],
|
||||
) <patchcoreoverview>
|
||||
|
||||
=== EfficientAD
|
||||
// https://arxiv.org/pdf/2303.14535
|
||||
EfficientAD is another state of the art method for anomaly detection.
|
||||
It focuses on maintining performance as well as high computational efficiency.
|
||||
EfficientAD@efficientADpaper is another state of the art method for anomaly detection.
|
||||
It focuses on maintaining performance as well as high computational efficiency.
|
||||
At its core, EfficientAD uses a lightweight feature extractor, the Patch Description Network (PDN), which processes images in less than a millisecond on modern hardware.
|
||||
In comparison to Patchcore which relies on a deeper, more computationaly heavy WideResNet-101 network, the PDN uses only four convulutional layers and two pooling layers.
|
||||
This results in reduced latency while retains the ability to generate patch-level features.~#cite(<efficientADpaper>)
|
||||
In comparison to PatchCore, which relies on a deeper, more computationaly heavy WideResNet-101 network, the PDN uses only four convolutional layers and two pooling layers.
|
||||
This results in reduced latency while retaining the ability to generate patch-level features.~#cite(<efficientADpaper>)
|
||||
#todo[reference to image below]
|
||||
|
||||
The detection of anomalies is achieved through a student-teacher framework.
|
||||
The teacher network is a PDN and pre-trained on normal (good) images and the student network is trained to predict the teachers output.
|
||||
An anomalie is identified when the student failes to replicate the teachers output.
|
||||
The teacher network is a PDN and pretrained on normal (good) images and the student network is trained to predict the teachers output.
|
||||
An anomaly is identified when the student fails to replicate the teachers output.
|
||||
This works because of the abscence of anomalies in the training data and the student network has never seen an anomaly while training.
|
||||
A special loss function helps the student network not to generalize too broadly and inadequatly learn to predict anomalous features.~#cite(<efficientADpaper>)
|
||||
|
||||
Additionally to this structural anomaly detection EfficientAD can also address logical anomalies, such as violations in spartial or contextual constraints (eg. object wrong arrangments).
|
||||
Additionally to this structural anomaly detection, EfficientAD can also address logical anomalies, such as violations in spartial or contextual constraints (eg. object wrong arrangments).
|
||||
This is done by the integration of an autoencoder trained to replicate the teacher's features.~#cite(<efficientADpaper>)
|
||||
|
||||
By comparing the outputs of the autoencdoer and the student logical anomalies are effectively detected.
|
||||
This is a challenge that Patchcore does not directly address.~#cite(<efficientADpaper>)
|
||||
By comparing the outputs of the autoencoder and the student logical anomalies are effectively detected.
|
||||
This is a challenge that PatchCore does not directly address.~#cite(<efficientADpaper>)
|
||||
#todo[maybe add key advantages such as low computational cost and high performance]
|
||||
|
||||
|
||||
@ -210,7 +212,7 @@ This is a challenge that Patchcore does not directly address.~#cite(<efficientAD
|
||||
=== Jupyter Notebook
|
||||
|
||||
A Jupyter notebook is a shareable document which combines code and its output, text and visualizations.
|
||||
The notebook along with the editor provides a environment for fast prototyping and data analysis.
|
||||
The notebook along with the editor provides an environment for fast prototyping and data analysis.
|
||||
It is widely used in the data science, mathematics and machine learning community.~#cite(<jupyter>)
|
||||
|
||||
In the context of this bachelor thesis it was used to test and evaluate the three few-shot learning methods and to compare them.
|
||||
@ -225,7 +227,7 @@ Convolutional layers capture features like edges, textures or shapes.
|
||||
Pooling layers sample down the feature maps created by the convolutional layers.
|
||||
This helps reducing the computational complexity of the overall network and help with overfitting.
|
||||
Common pooling layers include average- and max pooling.
|
||||
Finally, after some convolution layers the feature map is flattened and passed to a network of fully connected layers to perform a classification or regression task.
|
||||
Finally, after some convolutional layers the feature map is flattened and passed to a network of fully connected layers to perform a classification or regression task.
|
||||
@cnnarchitecture shows a typical binary classification task.~#cite(<cnnintro>)
|
||||
|
||||
#figure(
|
||||
@ -243,29 +245,29 @@ This helps to avoid the vanishing gradient problem and helps with the training o
|
||||
ResNet has proven to be very successful in many computer vision tasks and is used in this practical work for the classification task.
|
||||
There are several different ResNet architectures, the most common are ResNet-18, ResNet-34, ResNet-50, ResNet-101 and ResNet-152. #cite(<resnet>)
|
||||
|
||||
For this bachelor theis the ResNet-50 architecture was used to predict the corresponding embeddings for the few-shot learning methods.
|
||||
For this bachelor thesis the ResNet-50 architecture was used to predict the corresponding embeddings for the few-shot learning methods.
|
||||
|
||||
=== P$>$M$>$F
|
||||
// https://arxiv.org/pdf/2204.07305
|
||||
P>P>F (Pre-training > Meta-training > Fine-tuning) is a three-stage pipelined designed for few-shot learning.
|
||||
P>M>F@pmfpaper (Pre-training > Meta-training > Fine-tuning) is a three-stage pipeline designed for few-shot learning.
|
||||
It focuses on simplicity but still achieves competitive performance.
|
||||
The three stages convert a general feature extractor into a task-specific model through fine-tuned optimization.
|
||||
#cite(<pmfpaper>)
|
||||
|
||||
*Pre-training:*
|
||||
The first stage in @pmfarchitecture initializes the backbone feature extractor.
|
||||
This can be for instance as ResNet or ViT and is learned by self-supervised techniques.
|
||||
This backbone is traned on large scale datasets on a general domain such as ImageNet or similar.
|
||||
This can be for instance a ResNet or ViT and is learned by self-supervised techniques.
|
||||
This backbone is trained on large scale datasets on a general domain such as ImageNet or similar.
|
||||
This step optimizes for robust feature extractions and builds a foundation model.
|
||||
There are well established bethods for pretraining which can be used such as DINO (self-supervised consistency), CLIP (Image-text alignment) or BERT (for text data).
|
||||
There are well established methods for pretraining which can be used such as DINO (self-supervised consistency), CLIP (Image-text alignment) or BERT (for text data).
|
||||
#cite(<pmfpaper>)
|
||||
|
||||
*Meta-training:*
|
||||
The second stage in the pipline as in @pmfarchitecture is the meta-training.
|
||||
Here a prototypical network (ProtoNet) is used to refine the pre-trained backbone.
|
||||
The second stage in the pipeline as in @pmfarchitecture is the meta-training.
|
||||
Here a prototypical network (ProtoNet) is used to refine the pretrained backbone.
|
||||
ProtoNet constructs class centroids for each episode and then performs nearest class centroid classification.
|
||||
Have a look at @prototypefewshot for a visualisation of its architecture.
|
||||
The ProtoNet only requires a backbone $f$ to map images to an m-dimensional vector space: $f: cal(X) -> RR^m$.
|
||||
The ProtoNet only requires a backbone $f$ to map images to a m-dimensional vector space: $f: cal(X) -> RR^m$.
|
||||
The probability of a query image $x$ belonging to a class $k$ is given by the $exp$ of the distance of the sample to the class center divided by the sum of all distances:
|
||||
|
||||
$
|
||||
@ -273,15 +275,15 @@ $
|
||||
$
|
||||
|
||||
As a distance metric $d$ a cosine similarity is used. See @cosinesimilarity for the formula.
|
||||
$c_k$, the prototy of a class is defined as $c_k = 1/N_k sum_(i:y_i=k) f(x_i)$ and $N_k$ is just the number of samples of class $k$.
|
||||
The meta-training process is dataset-agnostic, allowing for flexible adaptation to various few-shot classification scenarios.#cite(<pmfpaper>)
|
||||
$c_k$, the prototype of a class is defined as $c_k = 1/N_k sum_(i:y_i=k) f(x_i)$ and $N_k$ is just the number of samples of class $k$.
|
||||
The meta-training process is dataset-agnostic, allowing for flexible adaptation to various few-shot classification scenarios.~#cite(<pmfpaper>)
|
||||
|
||||
*Fine-tuning:*
|
||||
If an novel task is drawn from an unseen domain the model may fail to generalize because of a significant fail in the distribution.
|
||||
If a novel task is drawn from an unseen domain the model may fail to generalize because of a significant fail in the distribution.
|
||||
To overcome this the model is optionally fine-tuned with the support set on a few gradient steps.
|
||||
Data augmentation is used to generate a pseudo query set.
|
||||
With the support set the class prototypes are calculated and compared against the models predictions for the pseudo query set.
|
||||
With the loss of this steps the whole model is fine-tuned to the new domain.~#cite(<pmfpaper>)
|
||||
During this step, the entire model is fine-tuned to the new domain.~#cite(<pmfpaper>)
|
||||
|
||||
#figure(
|
||||
image("rsc/pmfarchitecture.png", width: 100%),
|
||||
@ -291,29 +293,29 @@ With the loss of this steps the whole model is fine-tuned to the new domain.~#ci
|
||||
*Inference:*
|
||||
During inference the support set is used to calculate the class prototypes.
|
||||
For a query image the feature extractor extracts its embedding in lower dimensional space and compares it to the pre-computed prototypes.
|
||||
The query image is then assigned to the class with the closest prototype.#cite(<pmfpaper>)
|
||||
The query image is then assigned to the class with the closest prototype.~#cite(<pmfpaper>)
|
||||
|
||||
*Performance:*
|
||||
P>M>F performs well across several few-shot learning benchmarks.
|
||||
The combination of pre-training on large dataset and meta-trainng with episodic tasks helps the model to generalize well.
|
||||
The inclusion of fine-tuning enhances adaptability to unseen domains, ensuring robust and efficient learning.#cite(<pmfpaper>)
|
||||
P>M>F@pmfpaper performs well across several few-shot learning benchmarks.
|
||||
The combination of pre-training on large dataset and meta-training with episodic tasks helps the model to generalize well.
|
||||
The inclusion of fine-tuning enhances adaptability to unseen domains, ensuring robust and efficient learning.~#cite(<pmfpaper>)
|
||||
|
||||
*Limitations and Scalability:*
|
||||
This method has some limitations.
|
||||
It relies on domains with large external datasets, which require substantial computational computation resources to create pre-trained models.
|
||||
Fine-tuning is effective but might be slow and not work well on devices with limited ocmputational resources.
|
||||
It relies on domains with large external datasets and it requires substantial computational resources to create pretrained models.
|
||||
Fine-tuning is effective but might be slow and not work well on devices with limited computational resources.
|
||||
Future research could focus on exploring faster and more efficient methods for fine-tuning models.
|
||||
#cite(<pmfpaper>)
|
||||
|
||||
=== CAML <CAML>
|
||||
// https://arxiv.org/pdf/2310.10971v2
|
||||
CAML (Context aware meta learning) is one of the state-of-the-art methods for few-shot learning.
|
||||
It consists of three different components: a frozen pre-trained image encoder, a fixed Equal Length and Maximally Equiangular Set (ELMES) class encoder and a non-causal sequence model.
|
||||
CAML (Context-Aware Meta-Learning)@caml_paper is one of the state-of-the-art methods for few-shot learning.
|
||||
It consists of three different components: a frozen pretrained image encoder, a fixed Equal Length and Maximally Equiangular Set (ELMES) class encoder and a non-causal sequence model.
|
||||
This is a universal meta-learning approach.
|
||||
That means no fine-tuning or meta-training is applied for specific domains.~#cite(<caml_paper>)
|
||||
|
||||
*Architecture:*
|
||||
CAML first encodes the query and support set images using the fozen pre-trained feature extractor as shown in @camlarchitecture.
|
||||
CAML first encodes the query and support set images using the frozen pretrained feature extractor as shown in @camlarchitecture.
|
||||
This step brings the images into a low dimensional space where similar images are encoded into similar embeddings.
|
||||
The class labels are encoded with the ELMES class encoder.
|
||||
Since the class of the query image is unknown in this stage a special learnable "unknown token" is added to the encoder.
|
||||
@ -332,7 +334,7 @@ This encoder maximizes the algorithms ability to distinguish between different c
|
||||
|
||||
*Non-causal sequence model:*
|
||||
The sequence created by the ELMES encoder is then fed into a non-causal sequence model.
|
||||
This might be for instance a transormer encoder.
|
||||
This might be for instance a transformer encoder.
|
||||
This step conditions the input sequence consisting of the query and support set embeddings.
|
||||
Visual features from query and support set can be compared to each other to determine specific informations such as content or textures.
|
||||
This can then be used to predict the class of the query image.
|
||||
@ -341,14 +343,14 @@ Afterwards it is passed through a simple MLP network to predict the class of the
|
||||
~#cite(<caml_paper>)
|
||||
|
||||
*Large-Scale Pre-Training:*
|
||||
CAML is pre-trained on a huge number of images from ImageNet-1k, Fungi, MSCOCO, and WikiArt datasets.
|
||||
CAML is pretrained on a huge number of images from ImageNet-1k, Fungi, MSCOCO, and WikiArt datasets.
|
||||
Those datasets span over different domains and help to detect any new visual concept during inference.
|
||||
Only the non-causal sequence model is trained and the weights of the image encoder and ELMES encoder are kept frozen.
|
||||
~#cite(<caml_paper>)
|
||||
|
||||
*Inference:*
|
||||
During inference, CAML processes the following:
|
||||
- Encodes the support set images and labels with the pre-trained feature and class encoders.
|
||||
- Encodes the support set images and labels with the pretrained feature and class encoders.
|
||||
- Concatenates these encodings into a sequence alongside the query image embedding.
|
||||
- Passes the sequence through the non-causal sequence model, enabling dynamic interaction between query and support set representations.
|
||||
- Extracts the transformed query embedding and classifies it using a Multi-Layer Perceptron (MLP).~#cite(<caml_paper>)
|
||||
@ -363,7 +365,7 @@ It performes competitively against P>M>F in 8 benchmarks even though P>M>F was m
|
||||
|
||||
CAML does great in generalization and inference efficiency but faces limitations in specialized domains (e.g., ChestX)
|
||||
and low-resolution tasks (e.g., CIFAR-fs).
|
||||
Its use of frozen pre-trained feature extractors is key to avoiding overfitting and enabling robust performance.
|
||||
Its use of frozen pretrained feature extractors is key to avoiding overfitting and enabling robust performance.
|
||||
~#cite(<caml_paper>)
|
||||
#todo[We should add stuff here why we have a max amount of shots bc. of pretrained model]
|
||||
|
||||
@ -381,24 +383,24 @@ Either they performed worse on benchmarks compared to the used methods or they w
|
||||
// https://arxiv.org/pdf/2211.16191v2
|
||||
// https://arxiv.org/abs/2211.16191v2
|
||||
|
||||
SgVA-CLIP (Semantic-guided Visual Adapting CLIP) is a framework that improves few-shot learning by adapting pre-trained vision-language models like CLIP.
|
||||
It focuses on generating better visual features for specific tasks while still using the general knowledge from the pre-trained model.
|
||||
SgVA-CLIP (Semantic-guided Visual Adapting CLIP) is a framework that improves few-shot learning by adapting pretrained vision-language models like CLIP.
|
||||
It focuses on generating better visual features for specific tasks while still using the general knowledge from the pretrained model.
|
||||
Instead of only aligning images and text, SgVA-CLIP includes a special visual adapting layer that makes the visual features more discriminative for the given task.
|
||||
This process is supported by knowledge distillation, where detailed information from the pre-trained model guides the learning of the new visual features.
|
||||
This process is supported by knowledge distillation, where detailed information from the pretrained model guides the learning of the new visual features.
|
||||
Additionally, the model uses contrastive losses to further refine both the visual and textual representations.~#cite(<peng2023sgvaclipsemanticguidedvisualadapting>)
|
||||
|
||||
One advantage of SgVA-CLIP is that it can work well with very few labeled samples, making it suitable for applications like anomaly detection.
|
||||
The use of pre-trained knowledge helps reduce the need for large datasets.
|
||||
However, a disadvantage is that it depends heavily on the quality and capabilities of the pre-trained model.
|
||||
If the pre-trained model lacks relevant information for the task, SgVA-CLIP might struggle to adapt.
|
||||
This might be a no-go for anomaly detection tasks because the images in such tasks are often very task-specific and not covered by general pre-trained models.
|
||||
The use of pretrained knowledge helps reduce the need for large datasets.
|
||||
However, a disadvantage is that it depends heavily on the quality and capabilities of the pretrained model.
|
||||
If the pretrained model lacks relevant information for the task, SgVA-CLIP might struggle to adapt.
|
||||
This might be a no-go for anomaly detection tasks because the images in such tasks are often very task-specific and not covered by general pretrained models.
|
||||
Also, fine-tuning the model can require considerable computational resources, which might be a limitation in some cases.~#cite(<peng2023sgvaclipsemanticguidedvisualadapting>)
|
||||
|
||||
=== TRIDENT (Transductive Decoupled Variational Inference for Few-Shot Classification) <TRIDENT>
|
||||
// https://arxiv.org/pdf/2208.10559v1
|
||||
// https://arxiv.org/abs/2208.10559v1
|
||||
|
||||
TRIDENT, a variational infernce network, is a few-shot learning approach which decouples image representation into semantic and label-specific latent variables.
|
||||
TRIDENT, a variational inference network, is a few-shot learning approach which decouples image representation into semantic and label-specific latent variables.
|
||||
Semantic attributes contain context or stylistic information, while label-specific attributes focus on the characteristics crucial for classification.
|
||||
By decoupling these parts TRIDENT enhances the networks ability to generalize effectively from unseen data.~#cite(<singh2022transductivedecoupledvariationalinference>)
|
||||
|
||||
@ -412,7 +414,7 @@ Its ability to isolate critical features while droping irellevant context aligns
|
||||
// https://arxiv.org/pdf/2204.03065v1
|
||||
// https://arxiv.org/abs/2204.03065v1
|
||||
|
||||
The Self-Optimal-Transport (SOT) Feature Transform is designed to enhance feature sets for tsks like matching, grouping or classification by re-embedding feature representations.
|
||||
The Self-Optimal-Transport (SOT) Feature Transform is designed to enhance feature sets for tasks like matching, grouping or classification by re-embedding feature representations.
|
||||
This transform processes features as a set instead of using them individually.
|
||||
This creates context-aware representations.
|
||||
SOT can catch direct as well as indirect similarities between features which makes it suitable for tasks like few-shot learning or clustering.~#cite(<shalam2022selfoptimaltransportfeaturetransform>)
|
||||
@ -425,7 +427,7 @@ The transform features parameterless-ness, which makes it easy to integrate into
|
||||
It is differentiable which allows for end-to-end training. For example (re-)train the hosting network to adopt to SOT.
|
||||
SOT is equivariant, which means that the transform is invariant to the order of the input features.~#cite(<shalam2022selfoptimaltransportfeaturetransform>)
|
||||
|
||||
The improvements of SOT over traditional feature transforms dpeend on the used backbone network and the task.
|
||||
The improvements of SOT over traditional feature transforms depend on the used backbone network and the task.
|
||||
But in most cases it outperforms state-of-the-art methods and could be used as a drop-in replacement for existing feature transforms.~#cite(<shalam2022selfoptimaltransportfeaturetransform>)
|
||||
|
||||
// anomaly detect
|
||||
|
30
sources.bib
@ -197,3 +197,33 @@
|
||||
primaryClass={cs.CV},
|
||||
url={https://arxiv.org/abs/2101.00562},
|
||||
}
|
||||
|
||||
|
||||
@book{analysisrudin,
|
||||
title = {Principles of mathematical analysis},
|
||||
author = {Walter Rudin},
|
||||
isbn = {},
|
||||
series = {Mathermatics Series},
|
||||
year = {1976},
|
||||
publisher = {Mc Graw Hill},
|
||||
keywords = {mathematics}
|
||||
}
|
||||
|
||||
|
||||
@book{dataminingbook,
|
||||
title = {Data Mining: Concepts and Techniques},
|
||||
author = {Jiawei Han, Micheline Kamber, Jian Pei},
|
||||
isbn = {},
|
||||
series = {The Morgan Kaufmann Series in Data Management Systems},
|
||||
year = {2012},
|
||||
publisher = {Morgran Kaufmann},
|
||||
keywords = {mathematics}
|
||||
}
|
||||
|
||||
@book{Goodfellow-et-al-2016,
|
||||
title={Deep Learning},
|
||||
author={Ian Goodfellow and Yoshua Bengio and Aaron Courville},
|
||||
publisher={MIT Press},
|
||||
note={\url{http://www.deeplearningbook.org}},
|
||||
year={2016}
|
||||
}
|
||||
|