ZiAnwang commited on
Commit
c10636a
·
0 Parent(s):

Initial EviScene release

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +41 -0
  2. .github/workflows/ci.yml +37 -0
  3. .gitignore +86 -0
  4. CITATION.cff +68 -0
  5. CONTRIBUTING.md +19 -0
  6. LICENSE +201 -0
  7. MANIFEST.in +12 -0
  8. NOTICE +12 -0
  9. README.md +385 -0
  10. README_zh-CN.md +343 -0
  11. SECURITY.md +14 -0
  12. assets/architecture.webp +3 -0
  13. assets/badge-arxiv.svg +9 -0
  14. assets/badge-hf-paper.svg +12 -0
  15. assets/badge-models-data.svg +12 -0
  16. assets/badge-website.svg +11 -0
  17. datasets/EviLens/.gitattributes +60 -0
  18. datasets/EviLens/README.md +48 -0
  19. datasets/EviLens/test/images/EVL-TE-00001.jpg +3 -0
  20. datasets/EviLens/test/images/EVL-TE-00002.png +3 -0
  21. datasets/EviLens/test/images/EVL-TE-00003.jpg +3 -0
  22. datasets/EviLens/test/images/EVL-TE-00004.png +3 -0
  23. datasets/EviLens/test/images/EVL-TE-00005.png +3 -0
  24. datasets/EviLens/test/images/EVL-TE-00006.png +3 -0
  25. datasets/EviLens/test/images/EVL-TE-00007.png +3 -0
  26. datasets/EviLens/test/images/EVL-TE-00008.png +3 -0
  27. datasets/EviLens/test/images/EVL-TE-00009.jpg +3 -0
  28. datasets/EviLens/test/images/EVL-TE-00010.jpg +3 -0
  29. datasets/EviLens/test/images/EVL-TE-00011.jpg +3 -0
  30. datasets/EviLens/test/images/EVL-TE-00012.jpg +3 -0
  31. datasets/EviLens/test/images/EVL-TE-00013.jpg +3 -0
  32. datasets/EviLens/test/images/EVL-TE-00014.png +3 -0
  33. datasets/EviLens/test/images/EVL-TE-00015.jpg +3 -0
  34. datasets/EviLens/test/images/EVL-TE-00016.jpg +3 -0
  35. datasets/EviLens/test/images/EVL-TE-00017.jpg +3 -0
  36. datasets/EviLens/test/images/EVL-TE-00018.jpg +3 -0
  37. datasets/EviLens/test/images/EVL-TE-00019.png +3 -0
  38. datasets/EviLens/test/images/EVL-TE-00020.jpg +3 -0
  39. datasets/EviLens/test/images/EVL-TE-00021.jpg +3 -0
  40. datasets/EviLens/test/images/EVL-TE-00022.jpg +3 -0
  41. datasets/EviLens/test/images/EVL-TE-00023.jpg +3 -0
  42. datasets/EviLens/test/images/EVL-TE-00024.jpg +3 -0
  43. datasets/EviLens/test/images/EVL-TE-00025.jpg +3 -0
  44. datasets/EviLens/test/images/EVL-TE-00026.jpg +3 -0
  45. datasets/EviLens/test/images/EVL-TE-00027.png +3 -0
  46. datasets/EviLens/test/images/EVL-TE-00028.jpg +3 -0
  47. datasets/EviLens/test/images/EVL-TE-00029.jpg +3 -0
  48. datasets/EviLens/test/images/EVL-TE-00030.jpg +3 -0
  49. datasets/EviLens/test/images/EVL-TE-00031.jpg +3 -0
  50. datasets/EviLens/test/images/EVL-TE-00032.jpg +3 -0
.gitattributes ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/architecture.webp filter=lfs diff=lfs merge=lfs -text
37
+ paper/EviScene.pdf filter=lfs diff=lfs merge=lfs -text
38
+ models/sft/tokenizer.json filter=lfs diff=lfs merge=lfs -text
39
+ models/psd/tokenizer.json filter=lfs diff=lfs merge=lfs -text
40
+ datasets/EviLens/train/images/** filter=lfs diff=lfs merge=lfs -text
41
+ datasets/EviLens/test/images/** filter=lfs diff=lfs merge=lfs -text
.github/workflows/ci.yml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Code checks
2
+ on: [push, pull_request]
3
+ permissions:
4
+ contents: read
5
+ jobs:
6
+ check:
7
+ strategy:
8
+ fail-fast: false
9
+ matrix:
10
+ os: [ubuntu-latest, windows-latest]
11
+ python: ['3.11', '3.12']
12
+ runs-on: ${{ matrix.os }}
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: ${{ matrix.python }}
18
+ - run: python -m pip install -e ".[dev]" -e ./training
19
+ - run: ruff check .
20
+ - run: python scripts/check_release.py
21
+ - run: python -m build
22
+ - run: python -m build training
23
+ - run: python scripts/check_release.py --distributions
24
+ - name: Verify installed wheels outside checkout
25
+ shell: bash
26
+ run: |
27
+ python -m venv wheel-check
28
+ if [ "${{ runner.os }}" = "Windows" ]; then
29
+ py="$PWD/wheel-check/Scripts/python.exe"
30
+ else
31
+ py="$PWD/wheel-check/bin/python"
32
+ fi
33
+ "$py" -m pip install dist/*.whl training/dist/*.whl
34
+ cd "$RUNNER_TEMP"
35
+ "$py" -c "import eviscene, eviscene_training; from eviscene.orchestrator.stage_runner import StageRunner, StageStep"
36
+ "$py" -m eviscene --help
37
+ "$py" -m eviscene_training.cli --help
.gitignore ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Generated Python/package files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ build/
9
+ dist/
10
+ .venv/
11
+ wheel-check/
12
+ .idea/
13
+ .vscode/
14
+ .DS_Store
15
+ Thumbs.db
16
+ *.bak
17
+ *.tmp
18
+ *.orig
19
+ *.rej
20
+ tests/
21
+ outputs/
22
+ .cache/
23
+ cache/
24
+ *.log
25
+ *.whl
26
+
27
+ # Credentials and local configuration
28
+ .env
29
+ .env.*
30
+ !.env.example
31
+ *runtime.env
32
+ *.pem
33
+ *.key
34
+
35
+ # Training, evaluation, and model artifacts
36
+ data/
37
+ datasets/
38
+ evaluation/
39
+ runs/
40
+ logs/
41
+ checkpoints/
42
+ exports/
43
+ models/
44
+ weights/
45
+ traces/
46
+ artifacts/
47
+ *.safetensors
48
+ *.pt
49
+ *.pth
50
+ *.ckpt
51
+ *.jsonl
52
+ *.jsonl.gz
53
+ *.parquet
54
+ *.arrow
55
+ *.csv
56
+ *.tsv
57
+ *.png
58
+ *.jpg
59
+ *.jpeg
60
+ *.webp
61
+ *.gif
62
+ *.tar
63
+ *.tar.gz
64
+ *.zip
65
+
66
+ # The README method figure is a publication asset, not a dataset payload.
67
+ !/assets/architecture.webp
68
+
69
+ # Selected release checkpoints in this Hugging Face repository only.
70
+ !/models/
71
+ !/models/sft/
72
+ !/models/psd/
73
+ !/models/sft/model-00001-of-00004.safetensors
74
+ !/models/sft/model-00002-of-00004.safetensors
75
+ !/models/sft/model-00003-of-00004.safetensors
76
+ !/models/sft/model-00004-of-00004.safetensors
77
+ !/models/psd/model-00001-of-00004.safetensors
78
+ !/models/psd/model-00002-of-00004.safetensors
79
+ !/models/psd/model-00003-of-00004.safetensors
80
+ !/models/psd/model-00004-of-00004.safetensors
81
+
82
+ !/datasets/EviLens/train/metadata.jsonl
83
+ !/datasets/EviLens/train/images/**
84
+
85
+ !/datasets/EviLens/test/metadata.jsonl
86
+ !/datasets/EviLens/test/images/**
CITATION.cff ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cff-version: 1.2.0
2
+ message: "If you use EviScene, please cite the paper below."
3
+ type: software
4
+ title: 'EviScene: Beyond “Is It AI?” for Agentic Image Factuality Assessment'
5
+ version: 0.1.0
6
+ license: Apache-2.0
7
+ repository-code: 'https://github.com/wangzian828/EVISCENE'
8
+ url: 'https://wangzian828.github.io/EVISCENE/'
9
+ authors:
10
+ - family-names: Wang
11
+ given-names: ZiAn
12
+ - family-names: Liu
13
+ given-names: Ruiqi
14
+ - family-names: Zhang
15
+ given-names: Zhengbo
16
+ - family-names: Han
17
+ given-names: Yi
18
+ - family-names: Shen
19
+ given-names: Jialiang
20
+ - family-names: Chen
21
+ given-names: Ruoxin
22
+ - family-names: Cui
23
+ given-names: Manni
24
+ - family-names: Zhu
25
+ given-names: Ximo
26
+ - family-names: Jiang
27
+ given-names: Jin
28
+ - family-names: Liu
29
+ given-names: Mingzhe
30
+ - family-names: Wang
31
+ given-names: Linhao
32
+ - family-names: Wang
33
+ given-names: Wenhao
34
+ - family-names: Wu
35
+ given-names: Shu
36
+ preferred-citation:
37
+ type: article
38
+ title: 'EviScene: Beyond "Is It AI?" for Agentic Image Factuality Assessment'
39
+ authors:
40
+ - family-names: Wang
41
+ given-names: ZiAn
42
+ - family-names: Liu
43
+ given-names: Ruiqi
44
+ - family-names: Zhang
45
+ given-names: Zhengbo
46
+ - family-names: Han
47
+ given-names: Yi
48
+ - family-names: Shen
49
+ given-names: Jialiang
50
+ - family-names: Chen
51
+ given-names: Ruoxin
52
+ - family-names: Cui
53
+ given-names: Manni
54
+ - family-names: Zhu
55
+ given-names: Ximo
56
+ - family-names: Jiang
57
+ given-names: Jin
58
+ - family-names: Liu
59
+ given-names: Mingzhe
60
+ - family-names: Wang
61
+ given-names: Linhao
62
+ - family-names: Wang
63
+ given-names: Wenhao
64
+ - family-names: Wu
65
+ given-names: Shu
66
+ year: 2026
67
+ journal: arXiv
68
+ url: 'https://arxiv.org/abs/2610.14609'
CONTRIBUTING.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributing
2
+
3
+ Keep changes focused and validate behavior changes locally.
4
+ Do not commit credentials, images, datasets, model weights, private annotations,
5
+ or experiment logs. Do not change frozen prompts, schemas, or metric definitions
6
+ as part of a formatting/refactoring change.
7
+
8
+ ```bash
9
+ python -m pip install -e '.[dev]' -e ./training
10
+ ruff check .
11
+ python scripts/check_release.py
12
+ python -m build
13
+ python -m build training
14
+ ```
15
+
16
+ CI checks code and packaging, not GPU training, external providers, or paper
17
+ scores. Report those validations separately if performed. Test fixtures and
18
+ internal validation suites are not included in this repository.
19
+ Contributions are made under Apache-2.0.
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
MANIFEST.in ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ prune tests
2
+ prune operations
3
+ prune outputs
4
+ prune .cache
5
+ prune cache
6
+ prune logs
7
+ prune runs
8
+ prune datasets
9
+ prune models
10
+ prune weights
11
+ prune private
12
+ global-exclude *.py[cod] *.log .env .env.* *.pem *.key
NOTICE ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ EviScene
2
+ Copyright 2026 EviScene contributors
3
+
4
+ The code in this repository is licensed under Apache-2.0.
5
+ Model weights, datasets, and the manuscript are separate artifacts; this
6
+ license does not grant rights to them or to third-party services.
7
+
8
+ The PSD implementation references Privileged Self-Distillation:
9
+ https://www.canvas.inc/research/privileged-self-distillation
10
+ https://github.com/essamsleiman/psd
11
+ The reference implementation is not bundled. Python dependencies retain
12
+ their respective licenses.
README.md ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - zh
5
+ tags:
6
+ - eviscene
7
+ - multimodal
8
+ - image-factuality
9
+ - agent
10
+ - sft
11
+ - distillation
12
+ - arxiv:2610.14609
13
+ ---
14
+
15
+ <div align="center">
16
+
17
+ <h1>EviScene</h1>
18
+
19
+ <strong>Beyond “Is It AI?” for Agentic Image Factuality Assessment</strong>
20
+
21
+ <p>Inspect the image. Find the evidence. Verify the facts.</p>
22
+
23
+ <p>
24
+ <a href="https://wangzian828.github.io/EVISCENE/"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-website.svg" alt="Project website" height="36"></a>
25
+ <a href="https://arxiv.org/abs/2610.14609"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-arxiv.svg" alt="Read the paper on arXiv" height="36"></a>
26
+ <a href="https://huggingface.co/papers/2610.14609"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-hf-paper.svg" alt="Paper page on Hugging Face" height="36"></a>
27
+ <a href="https://huggingface.co/ZiAnwang/EviScene"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-models-data.svg" alt="Models and data on Hugging Face" height="36"></a>
28
+ </p>
29
+
30
+ [English](https://huggingface.co/ZiAnwang/EviScene) · [简体中文](./README_zh-CN.md)
31
+
32
+ [Overview](#overview) · [Quick Start](#quick-start) · [Models & Data](#models-and-data) · [Results](#results) · [Training](#training) · [Evaluation](#evaluation) · [Citation](#citation)
33
+
34
+ </div>
35
+
36
+ EviScene investigates whether the facts depicted in an image are supported by
37
+ evidence—not simply whether the image was AI-generated. Given an image, the
38
+ agent inspects visual details, searches for external evidence, and produces a
39
+ verdict with an evidence-grounded report. No user-written claim is required
40
+ at inference time.
41
+
42
+ This repository provides the agent runtime, tool integrations, SFT and PSD
43
+ training utilities, and evaluation code.
44
+
45
+ <a id="overview"></a>
46
+
47
+ ## 🔎 Overview
48
+
49
+ ![EviScene: an image-only agent that iteratively inspects visual details, retrieves evidence, and writes a grounded report.](assets/architecture.webp)
50
+
51
+ - **Evidence-seeking investigation.** A single ReAct policy chooses visual
52
+ inspection, web search, image retrieval, or evidence inspection according
53
+ to what remains unresolved.
54
+ - **A compact, trained policy.** Supervised fine-tuning (SFT) learns from
55
+ reviewed teacher trajectories. Privileged on-policy self-distillation (PSD)
56
+ refines selected decisions using training-time hints; the deployed student
57
+ does not receive those hints.
58
+ - **Evaluation beyond the verdict.** EviLens evaluates image factuality, while
59
+ the evaluation code measures both classification performance and whether
60
+ the final report has sufficient factual grounds.
61
+
62
+ <details>
63
+ <summary><strong>Repository layout and command-line entry points</strong></summary>
64
+
65
+ | Directory | Purpose |
66
+ | --- | --- |
67
+ | `eviscene/` | Agent runtime, tools, and evaluation |
68
+ | `training/eviscene_training/` | SFT and PSD data preparation and training adapters |
69
+ | `scripts/` | Dataset preparation and evaluation entry points |
70
+
71
+ The installed commands are `eviscene` for inference and `eviscene-train` for
72
+ training preparation. Python modules use the same `eviscene` and
73
+ `eviscene_training` namespaces.
74
+
75
+ </details>
76
+
77
+ <a id="quick-start"></a>
78
+
79
+ ## 🚀 Quick Start
80
+
81
+ ### 1. Install
82
+
83
+ Use **Python 3.11 or 3.12** in a fresh environment. The commands below assume
84
+ Bash; on Windows, activate the environment with `.venv\Scripts\Activate.ps1`
85
+ in PowerShell instead of `source`.
86
+
87
+ ```bash
88
+ git clone https://github.com/wangzian828/EVISCENE.git
89
+ cd EVISCENE
90
+ python -m venv .venv
91
+ source .venv/bin/activate
92
+ python -m pip install -e '.[all]' -e ./training
93
+ ```
94
+
95
+ For a lightweight runtime installation, use `python -m pip install -e .`; `image-retrieval` adds
96
+ OSS image-upload support. OCR uses the Baidu API only. Installing the
97
+ Python packages does **not** download an EviScene checkpoint or start a model
98
+ server. GPU training dependencies are separate; see [Training](#training).
99
+
100
+ ### 2. Configure the model and tools
101
+
102
+ Start a compatible multimodal model server with your EviScene checkpoint. It
103
+ must expose an OpenAI-compatible chat-completions endpoint with image support.
104
+ Set the URL and served model name to match that server; the values below are
105
+ examples, not a hosted EviScene API.
106
+
107
+ <details>
108
+ <summary><strong>Required configuration: .env settings</strong></summary>
109
+
110
+ Create a local `.env` file at the repository root:
111
+
112
+ ```dotenv
113
+ # Agent policy and visual tools: your local multimodal server.
114
+ QWEN35_LOCAL_BASE_URL=http://127.0.0.1:8000/v1
115
+ QWEN35_LOCAL_MODEL=eviscene
116
+ QWEN_LOCAL_API_KEY=none
117
+
118
+ # Text search, image search, and reverse-image search.
119
+ SERPER_API_KEY=YOUR_SERPER_API_KEY
120
+ VISUAL_SEARCH_PROVIDER=serper_lens
121
+
122
+ # Fetch readable webpage content through Jina Reader.
123
+ BROWSE_FETCH_PROVIDER=jina
124
+ JINA_API_KEY=YOUR_JINA_API_KEY
125
+
126
+ # Upload images to obtain URLs usable by reverse-image search.
127
+ IMAGE_UPLOAD_PROVIDER=oss
128
+ OSS_ACCESS_KEY_ID=YOUR_OSS_ACCESS_KEY_ID
129
+ OSS_ACCESS_KEY_SECRET=YOUR_OSS_ACCESS_KEY_SECRET
130
+ OSS_ENDPOINT=YOUR_OSS_ENDPOINT
131
+ OSS_BUCKET_NAME=YOUR_OSS_BUCKET_NAME
132
+
133
+ # Baidu OCR API and fresh tool observations.
134
+ OCR_BACKEND=baidu
135
+ BAIDU_OCR_API_KEY=YOUR_BAIDU_OCR_API_KEY
136
+ BAIDU_OCR_SECRET_KEY=YOUR_BAIDU_OCR_SECRET_KEY
137
+ TOOL_CACHE_ENABLED=0
138
+ PERCEPTION_CACHE_ENABLED=0
139
+ ```
140
+
141
+ Replace the credential placeholders and use your server's API key if required.
142
+ The `.env` file is Git-ignored. OCR sends image content to Baidu; it does not
143
+ use a local OCR model or fall back to another provider.
144
+
145
+ </details>
146
+
147
+ **Model inference can be local; external search is not offline.** Search,
148
+ webpage reading, and image hosting require network access and may incur
149
+ provider charges. Reverse-image search sends the input image to the configured
150
+ hosting/search services; use only images you are authorized to share.
151
+
152
+ <details>
153
+ <summary><strong>Advanced configuration: local model routing and overrides</strong></summary>
154
+
155
+ Project settings use the `EVISCENE_*` prefix, for example `EVISCENE_DATA_ROOT`
156
+ for artifact storage and `EVISCENE_ENV_FILE` for a custom environment file.
157
+ Existing `IFV_*` settings are accepted; an explicitly set `EVISCENE_*` value
158
+ takes precedence. Provider settings such as `QWEN35_LOCAL_MODEL` keep their names.
159
+
160
+ The CLI and Python API default to `student-qwen3.5-local`; cloud model providers
161
+ must be explicitly selected. The profile routes the policy and visual tools to the
162
+ local model. **Webpage evidence extraction defaults to the same local policy
163
+ model and endpoint**, with no extra extraction settings required. The
164
+ `BROWSE_EXTRACT_PROVIDER`, `BROWSE_EXTRACT_MODEL`, `BROWSE_EXTRACT_BASE_URL`,
165
+ `BROWSE_EXTRACT_WIRE_API`, and `BROWSE_EXTRACT_API_KEY` settings allow an explicit
166
+ override. Existing environment or `.env` overrides still take precedence;
167
+ remove a legacy `BROWSE_EXTRACT_PROVIDER=gemini` setting to use the local default.
168
+ Extraction does not fall back to Gemini if local inference fails. Gemini-based
169
+ evaluation is a separate, optional step—not part of this inference example.
170
+
171
+ </details>
172
+
173
+ ### 3. Investigate an image
174
+
175
+ Run from the repository root, replacing the image path with your own file:
176
+
177
+ ```bash
178
+ eviscene path/to/image.jpg --profile student-qwen3.5-local --output-dir runs/example
179
+ ```
180
+
181
+ The CLI prints the verdict, confidence, assessment, and tool-call statistics.
182
+ It also saves the canonical trace as `runs/example/image.jpg.json` for this
183
+ filename. To inspect the reasoning, tool observations, and final report:
184
+
185
+ ```bash
186
+ python -m eviscene.render_trace_html runs/example/image.jpg.json
187
+ ```
188
+
189
+ Open the generated `runs/example/image.jpg.html` in a browser. The runtime's
190
+ `real` / `fake` verdict labels correspond to supported / refuted factuality;
191
+ they are not AI-generation provenance labels. Model outputs are not guaranteed
192
+ to be correct; inspect the cited evidence before relying on a conclusion.
193
+
194
+ <a id="models-and-data"></a>
195
+
196
+ ## 📦 Models and Data
197
+
198
+ > **Resources:** Code, checkpoints, dataset files, and the paper are publicly
199
+ > available. The [Hugging Face EviScene repository](https://huggingface.co/ZiAnwang/EviScene)
200
+ > contains code, SFT and PSD checkpoints, the EviLens
201
+ > train/test images and metadata, and the paper PDF.
202
+
203
+ | Artifact | Contents | Availability |
204
+ | --- | --- | --- |
205
+ | [EviScene-SFT](./models/sft) | Qwen3.5-9B policy after supervised fine-tuning | Available |
206
+ | [EviScene-PSD](./models/psd) | Qwen3.5-9B policy after SFT and PSD | Available |
207
+ | [EviLens train](./datasets/EviLens/train) | 8,647 images with paired metadata | Available |
208
+ | [EviLens test](./datasets/EviLens/test) | 1,527 images with paired metadata | Available |
209
+
210
+ Code is at the Hugging Face repository root. The two checkpoints belong under
211
+ `models/sft/` and `models/psd/`; the manuscript is `paper/EviScene.pdf`.
212
+ The dataset is in `datasets/EviLens/`, with separate `train/` and `test/` folders.
213
+ Each model directory contains merged safetensors weights and the corresponding
214
+ configuration, tokenizer, and processor files. The code license does not grant
215
+ rights to model weights or third-party images; consult the model and dataset cards.
216
+ EviLens image/metadata splits are distinct from
217
+ the teacher trajectories and distillation targets used by the training
218
+ pipeline. Keep the test split out of training and model selection.
219
+
220
+ <a id="results"></a>
221
+
222
+ ## 📊 Results
223
+
224
+ Selected results from the current paper snapshot on EviLens. All values are
225
+ percentages; higher is better. These are reported paper results, not scores
226
+ recomputed from this code snapshot.
227
+
228
+ | Qwen3.5-9B setting | BAcc | Macro F1 | Supported recall | Refuted recall | SESR |
229
+ | --- | ---: | ---: | ---: | ---: | ---: |
230
+ | Direct prediction | 65.70 | 57.26 | 79.05 | 52.35 | 1.70 |
231
+ | Base agent | 72.34 | 74.57 | 51.19 | 93.48 | 42.89 |
232
+ | After SFT | 78.81 | 75.69 | 76.39 | 81.22 | 50.49 |
233
+ | **EviScene: SFT + PSD** | **79.05** | 74.67 | 80.11 | 78.00 | **52.26** |
234
+
235
+ SFT + PSD improves BAcc by **6.71 percentage points** and SESR by **9.37
236
+ percentage points** over the same-backbone base agent. Macro F1 and class-wise
237
+ recall are included to show the trade-offs rather than implying every metric
238
+ improves.
239
+
240
+ - **BAcc:** the mean of supported and refuted recall.
241
+ - **Macro F1:** the mean of the two class-wise F1 scores.
242
+ - **SESR:** Strict Evidence Sufficiency Rate—the percentage of cases with a
243
+ correct verdict and sufficient grounds for the decisive image-grounded fact.
244
+
245
+ <a id="training"></a>
246
+
247
+ ## 🛠️ Training
248
+
249
+ The training pipeline has two stages:
250
+
251
+ 1. **SFT:** audit teacher investigations, export accepted trajectories, and
252
+ convert them to the policy training format.
253
+ 2. **PSD:** collect on-policy training rollouts, locate failed decisions,
254
+ construct procedural hints, verify repairs, and train on selected
255
+ teacher-distribution targets alongside preservation targets.
256
+
257
+ | Step | Implementation |
258
+ | --- | --- |
259
+ | Build reviewed SFT examples | [`build_sft_training_package.py`](scripts/trajectory/build_sft_training_package.py) |
260
+ | Convert policy examples | [`eviscene-train convert-policy`](training/eviscene_training/policy.py) |
261
+ | Collect on-policy rollouts | [`collect_psd_rollouts.py`](scripts/collect_psd_rollouts.py) |
262
+ | Localize and verify training failures | [`run_psd_judge.py`](scripts/run_psd_judge.py) |
263
+ | Construct hints and search for repairs | [`run_psd_repair_driver.py`](scripts/run_psd_repair_driver.py) |
264
+ | Build sparse teacher targets | [`build-psd-datums`](training/eviscene_training/psd_datums.py) |
265
+ | Apply the PSD training loss | [`psd_ms_swift.py`](training/eviscene_training/psd_ms_swift.py) |
266
+
267
+ Inspect the available preparation commands with:
268
+
269
+ ```bash
270
+ eviscene-train --help
271
+ python -m scripts.trajectory.build_sft_training_package --help
272
+ eviscene-train build-psd-datums --help
273
+ python -m scripts.run_psd_repair_driver --help
274
+ ```
275
+
276
+ The lightweight package does not install a GPU training stack or download weights.
277
+ See the short [training settings](training/README.md) and [data interface](docs/data.md).
278
+ The settings are paper-reported, not an independently verified reproduction run.
279
+
280
+ <a id="evaluation"></a>
281
+
282
+ ## 🔬 Evaluation
283
+
284
+ Agent inference and evidence judging are separate. The agent receives the
285
+ image, not the reference labels or evaluator-only material. The judge reads
286
+ the saved investigation afterward.
287
+
288
+ ### Run the agent
289
+
290
+ With a prepared runtime case package and the model/tool configuration above:
291
+
292
+ ```bash
293
+ python -m eviscene.eval.run_cases \
294
+ --benchmark path/to/runtime_input/cases.jsonl \
295
+ --profile student-qwen3.5-local \
296
+ --output-dir runs/eval-full \
297
+ --concurrency 4 \
298
+ --base-sampling-seed 1729
299
+ ```
300
+
301
+ This saves `run_manifest.json`, `run_results.jsonl`, `summary.json`, and per-case
302
+ traces. Runtime inputs must follow the [data interface](docs/data.md);
303
+ an arbitrary image/label JSONL is not a drop-in replacement. The concurrency
304
+ above is a starting point for your server, not a claim about paper hardware.
305
+ The [recoverable rollout wrapper](scripts/run_agent_test_rollout.py) additionally
306
+ supports bounded engineering retries for compatible test releases.
307
+
308
+ ### Judge saved investigations
309
+
310
+ The [post-hoc judge](scripts/audit_agent_private_gold.py) requires separately
311
+ supplied reference annotations and `GEMINI_API_KEY` or `GOOGLE_API_KEY`:
312
+
313
+ ```bash
314
+ python -m scripts.audit_agent_private_gold \
315
+ --run-dir runs/eval-full \
316
+ --manifest path/to/test-manifest.jsonl \
317
+ --private-gold-sidecar path/to/test-private-gold.jsonl \
318
+ --output-dir runs/eval-full-judge \
319
+ --judge-model gemini-3.7-flash \
320
+ --thinking-level low \
321
+ --max-output-tokens 32768 \
322
+ --concurrency 4
323
+ ```
324
+
325
+ This is a paid external evaluation step. The annotation paths are placeholders;
326
+ evaluator reference material is not included in this code repository. Public
327
+ image-level labels alone are insufficient to reproduce the evidence-quality
328
+ audit. Preserve the dataset version, case set, model configuration, and metric
329
+ denominator when comparing results; failed or unjudged cases are not successes.
330
+
331
+ For larger runs, the [streaming judge](scripts/server/stream_agent_judges.py)
332
+ can judge completed cases while inference continues. The
333
+ [summary script](scripts/summarize_agent_test_evaluation.py) aggregates post-hoc
334
+ audit records; the [metric definitions](eviscene/eval/private_gold_metrics.py) are
335
+ included in the repository.
336
+
337
+ ### Tool ablations
338
+
339
+ Add one flag to `eviscene.eval.run_cases` and use a separate output directory:
340
+
341
+ | Variant | Flag | Removed tools |
342
+ | --- | --- | --- |
343
+ | No web search | `--disable-web-search` | `text_search` |
344
+ | No image retrieval | `--disable-image-retrieval` | `text_image_search`, `reverse_image_search` |
345
+ | No evidence inspection | `--disable-evidence-inspection` | `visit`, `compare_with_reference` |
346
+
347
+ Direct visual operations and final reporting remain available in all three
348
+ ablations. Keep the model, case set, seeds, and action budgets fixed. The exact
349
+ tool-family mapping is defined in [`tool_ablation.py`](eviscene/orchestrator/tool_ablation.py).
350
+
351
+ <a id="citation"></a>
352
+
353
+ ## 📝 Citation
354
+
355
+ **EviScene: Beyond “Is It AI?” for Agentic Image Factuality Assessment.**
356
+ Read the [paper on arXiv](https://arxiv.org/abs/2610.14609)
357
+ or [download BibTeX](https://wangzian828.github.io/EVISCENE/assets/eviscene.bib).
358
+ If you use EviScene, please cite:
359
+
360
+ ```bibtex
361
+ @misc{wang2026evisceneisaiagentic,
362
+ title={EviScene: Beyond "Is It AI?" for Agentic Image Factuality Assessment},
363
+ author={ZiAn Wang and Ruiqi Liu and Zhengbo Zhang and Yi Han and
364
+ Jialiang Shen and Ruoxin Chen and Manni Cui and Ximo Zhu and
365
+ Jin Jiang and Mingzhe Liu and Linhao Wang and Wenhao Wang and Shu Wu},
366
+ year={2026},
367
+ eprint={2610.14609},
368
+ archivePrefix={arXiv},
369
+ primaryClass={cs.CV},
370
+ url={https://arxiv.org/abs/2610.14609},
371
+ }
372
+ ```
373
+
374
+ Machine-readable citation metadata is in [`CITATION.cff`](CITATION.cff).
375
+
376
+ ## 🤝 Contributing
377
+
378
+ See [Contributing](CONTRIBUTING.md) for code and package checks, and
379
+ [Security](SECURITY.md) for handling credentials and external tool access.
380
+
381
+ ## ⚖️ License
382
+
383
+ Code is licensed under [Apache-2.0](LICENSE); see [NOTICE](NOTICE).
384
+ Weights, datasets, and the manuscript have separate terms. The code license
385
+ does not replace upstream model, image, or service licenses.
README_zh-CN.md ADDED
@@ -0,0 +1,343 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ <h1>EviScene</h1>
4
+
5
+ <strong>Beyond “Is It AI?” for Agentic Image Factuality Assessment</strong>
6
+
7
+ <p>观察图像,寻找证据,核实事实。</p>
8
+
9
+ <p>
10
+ <a href="https://wangzian828.github.io/EVISCENE/"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-website.svg" alt="项目网站" height="36"></a>
11
+ <a href="https://arxiv.org/abs/2610.14609"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-arxiv.svg" alt="阅读 arXiv 论文" height="36"></a>
12
+ <a href="https://huggingface.co/papers/2610.14609"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-hf-paper.svg" alt="Hugging Face 论文页" height="36"></a>
13
+ <a href="https://huggingface.co/ZiAnwang/EviScene"><img src="https://huggingface.co/ZiAnwang/EviScene/resolve/main/assets/badge-models-data.svg" alt="Hugging Face 模型与数据" height="36"></a>
14
+ </p>
15
+
16
+ [English](https://huggingface.co/ZiAnwang/EviScene) · [简体中文](./README_zh-CN.md)
17
+
18
+ [概览](#overview) · [快速开始](#quick-start) · [模型与数据](#models-and-data) · [实验结果](#results) · [训练](#training) · [评测](#evaluation) · [引用](#citation)
19
+
20
+ </div>
21
+
22
+ EviScene 关注图像所描绘的事实是否有证据支持,而不只是判断图像是否由 AI 生成。
23
+ 给定一张图像,Agent 会检查视觉细节、检索外部证据,并输出判断与基于证据的报告。
24
+ 推理时不需要用户额外提供文字断言。
25
+
26
+ 本仓库提供 Agent 运行时、工具集成、SFT 与 PSD 训练工具,以及评测代码。
27
+
28
+ <a id="overview"></a>
29
+
30
+ ## 🔎 项目概览
31
+
32
+ ![EviScene:仅输入图像,迭代检查视觉细节、检索证据并生成有依据的报告。](assets/architecture.webp)
33
+
34
+ - **主动寻找证据。** 单一 ReAct 策略根据尚未解决的问题,选择视觉检查、网页搜索、
35
+ 图像检索或证据检查。
36
+ - **经过训练的紧凑策略模型。** 监督微调(SFT)学习经过审核的教师轨迹;
37
+ 特权信息辅助的在线自蒸馏(PSD)利用训练阶段的提示改进选定决策。
38
+ 部署后的学生模型不接收这些训练提示。
39
+ - **评测不止看最终判断。** EviLens 用于评估图像事实性,评测代码同时衡量分类表现
40
+ 和最终报告的事实依据是否充分。
41
+
42
+ <details>
43
+ <summary><strong>代码结构与命令行入口</strong></summary>
44
+
45
+ | 目录 | 用途 |
46
+ | --- | --- |
47
+ | `eviscene/` | Agent 运行时、工具与评测 |
48
+ | `training/eviscene_training/` | SFT 与 PSD 数据准备及训练适配器 |
49
+ | `scripts/` | 数据集准备和评测入口脚本 |
50
+
51
+ 安装后通过 `eviscene` 运行推理,通过 `eviscene-train` 进行训练数据准备。
52
+ Python 模块对应使用 `eviscene` 与 `eviscene_training` 命名空间。
53
+
54
+ </details>
55
+
56
+ <a id="quick-start"></a>
57
+
58
+ ## 🚀 快速开始
59
+
60
+ ### 1. 安装
61
+
62
+ 请使用 **Python 3.11 或 3.12** 并创建独立环境。以下命令以 Bash 为例;
63
+ Windows 用户可在 PowerShell 中通过 `.venv\Scripts\Activate.ps1` 激活环境,
64
+ 替代 `source` 命令。
65
+
66
+ ```bash
67
+ git clone https://github.com/wangzian828/EVISCENE.git
68
+ cd EVISCENE
69
+ python -m venv .venv
70
+ source .venv/bin/activate
71
+ python -m pip install -e '.[all]' -e ./training
72
+ ```
73
+
74
+ 轻量运行时可用
75
+ `python -m pip install -e .` 安装;OCR 仅调用百度 API,
76
+ `image-retrieval` 可选依赖提供 OSS 图像上传支持。
77
+ 安装 Python 包**不会**自动下载 EviScene 权重,也不会启动模型服务。
78
+ GPU 训练所需依赖另行配置,见[训练](#training)。
79
+
80
+ ### 2. 配置模型和工具
81
+
82
+ 使用 EviScene 权重启动兼容的多模态模型服务。服务需提供支持图像输入的
83
+ OpenAI 兼容 chat-completions 接口。URL 和模型名称应与实际服务一致;
84
+ 下列配置仅为示例,不是可直接调用的在线 EviScene API。
85
+
86
+ <details>
87
+ <summary><strong>必需配置:.env 参数</strong></summary>
88
+
89
+ 在仓库根目录创建本地 `.env` 文件:
90
+
91
+ ```dotenv
92
+ # Agent policy and visual tools: your local multimodal server.
93
+ QWEN35_LOCAL_BASE_URL=http://127.0.0.1:8000/v1
94
+ QWEN35_LOCAL_MODEL=eviscene
95
+ QWEN_LOCAL_API_KEY=none
96
+
97
+ # Text search, image search, and reverse-image search.
98
+ SERPER_API_KEY=YOUR_SERPER_API_KEY
99
+ VISUAL_SEARCH_PROVIDER=serper_lens
100
+
101
+ # Fetch readable webpage content through Jina Reader.
102
+ BROWSE_FETCH_PROVIDER=jina
103
+ JINA_API_KEY=YOUR_JINA_API_KEY
104
+
105
+ # Upload images to obtain URLs usable by reverse-image search.
106
+ IMAGE_UPLOAD_PROVIDER=oss
107
+ OSS_ACCESS_KEY_ID=YOUR_OSS_ACCESS_KEY_ID
108
+ OSS_ACCESS_KEY_SECRET=YOUR_OSS_ACCESS_KEY_SECRET
109
+ OSS_ENDPOINT=YOUR_OSS_ENDPOINT
110
+ OSS_BUCKET_NAME=YOUR_OSS_BUCKET_NAME
111
+
112
+ # 百度 OCR API;工具观察不使用本地缓存。
113
+ OCR_BACKEND=baidu
114
+ BAIDU_OCR_API_KEY=YOUR_BAIDU_OCR_API_KEY
115
+ BAIDU_OCR_SECRET_KEY=YOUR_BAIDU_OCR_SECRET_KEY
116
+ TOOL_CACHE_ENABLED=0
117
+ PERCEPTION_CACHE_ENABLED=0
118
+ ```
119
+
120
+ 请替换凭据占位符;模型服务需要鉴权时,也应配置对应 API key。
121
+ `.env` 已被 Git 忽略。OCR 会将图像内容发送到百度;不使用本地 OCR 模型,也不回退其他服务。
122
+
123
+ </details>
124
+
125
+ **模型推理可以在本地进行,但外部检索并不是离线功能。** 网页搜索、网页读取和图像
126
+ 托管需要网络访问,可能产生服务费用。反向图像搜索会将输入图像发送到配置的托管与
127
+ 搜索服务,请仅使用你有权向这些服务提供的图像。
128
+
129
+ <details>
130
+ <summary><strong>进阶配置:本地模型路由与参数覆盖</strong></summary>
131
+
132
+ 项目配置统一使用 `EVISCENE_*` 前缀,例如 `EVISCENE_DATA_ROOT` 指定产物存储目录,
133
+ `EVISCENE_ENV_FILE` 指定环境配置文件。已有的 `IFV_*` 配置仍可读取;
134
+ 显式设置的 `EVISCENE_*` 值优先。`QWEN35_LOCAL_MODEL` 等服务提供方配置名保持不变。
135
+
136
+ 命令行和 Python 接口默认采用 `student-qwen3.5-local`,将策略模型和视觉工具路由到本地模型;云端模型须显式选择。
137
+ **网页证据抽取默认使用同一个本地策略模型及服务地址**,无需额外设置抽取器。
138
+ 如需显式覆盖,可配置 `BROWSE_EXTRACT_PROVIDER`、`BROWSE_EXTRACT_MODEL`、
139
+ `BROWSE_EXTRACT_BASE_URL`、`BROWSE_EXTRACT_WIRE_API` 和
140
+ `BROWSE_EXTRACT_API_KEY`。已有环境变量或 `.env` 配置仍具有优先级;
141
+ 如之前设置过 `BROWSE_EXTRACT_PROVIDER=gemini`,需移除该设置才能使用本地默认值。
142
+ 本地抽取失败时不会自动回退到 Gemini。Gemini 评测是独立的可选步骤,
143
+ 不属于此推理示例的一部分。
144
+
145
+ </details>
146
+
147
+ ### 3. 核查一张图像
148
+
149
+ 在仓库根目录运行,并将图像路径替换为你自己的文件:
150
+
151
+ ```bash
152
+ eviscene path/to/image.jpg --profile student-qwen3.5-local --output-dir runs/example
153
+ ```
154
+
155
+ 命令行会输出判断、置信度、评估结果和工具调用统计。对于上述文件名,标准轨迹保存为
156
+ `runs/example/image.jpg.json`。可通过以下命令查看推理、工具观察和最终报告:
157
+
158
+ ```bash
159
+ python -m eviscene.render_trace_html runs/example/image.jpg.json
160
+ ```
161
+
162
+ 在浏览器中打开生成的 `runs/example/image.jpg.html`。
163
+ 运行时的 `real` / `fake` 分别对应事实性标签 supported / refuted,
164
+ 并不表示图像是否由 AI 生成。模型输出不保证正确,使用结论前请检查引用证据。
165
+
166
+ <a id="models-and-data"></a>
167
+
168
+ ## 📦 模型与数据
169
+
170
+ > **项目资源:** 代码、权重、数据文件和论文均已公开。
171
+ > [Hugging Face 的 EviScene 项目仓库](https://huggingface.co/ZiAnwang/EviScene)统一存放代码、SFT 与 PSD
172
+ > 权重、EviLens 训练集和测试集的图片与元数据,以及论文 PDF。
173
+
174
+ | 项目 | 内容 | 发布状态 |
175
+ | --- | --- | --- |
176
+ | [EviScene-SFT](./models/sft) | 经过监督微调的 Qwen3.5-9B 策略模型 | 已发布 |
177
+ | [EviScene-PSD](./models/psd) | 经过 SFT 和 PSD 的 Qwen3.5-9B 策略模型 | 已发布 |
178
+ | [EviLens train](./datasets/EviLens/train) | 8,647 张图像及配套元数据 | 已发布 |
179
+ | [EviLens test](./datasets/EviLens/test) | 1,527 张图像及配套元数据 | 已发布 |
180
+
181
+ Hugging Face 仓库根目录为代码;两个权重分别放在 `models/sft/` 和 `models/psd/`,
182
+ 论文位于 `paper/EviScene.pdf`。两个模型目录均包含合并后的 safetensors 权重
183
+ 以及对应的模型配置、tokenizer 和 processor 文件。
184
+ 数据集位于同一仓库的 `datasets/EviLens/`,下设 `train/` 和 `test/`。
185
+ 代码许可证不授予模型权重或第三方图片的使用权;请参阅模型卡和数据集说明。
186
+ EviLens 图像与元数据划分不同于训练流程所使用的教师轨迹和蒸馏目标。
187
+ 请勿将测试集用于训练或模型选择。
188
+
189
+ <a id="results"></a>
190
+
191
+ ## 📊 实验结果
192
+
193
+ 以下为当前论文快照中选取的 EviLens 结果。所有数值均为百分比,越高越好。
194
+ 这些是论文报告的结果,并非使用本代码快照重新计算的分数。
195
+
196
+ | Qwen3.5-9B 设置 | BAcc | Macro F1 | Supported 召回率 | Refuted 召回率 | SESR |
197
+ | --- | ---: | ---: | ---: | ---: | ---: |
198
+ | 直接预测 | 65.70 | 57.26 | 79.05 | 52.35 | 1.70 |
199
+ | 基础 Agent | 72.34 | 74.57 | 51.19 | 93.48 | 42.89 |
200
+ | SFT 后 | 78.81 | 75.69 | 76.39 | 81.22 | 50.49 |
201
+ | **EviScene:SFT + PSD** | **79.05** | 74.67 | 80.11 | 78.00 | **52.26** |
202
+
203
+ 与同一骨干的基础 Agent 相比,SFT + PSD 的 BAcc 提升 **6.71 个百分点**,
204
+ SESR 提升 **9.37 个百分点**。同时列出 Macro F1 和分类别召回率,
205
+ 以展示不同指标之间的取舍,而不是暗示所有指标都获得了提升。
206
+
207
+ - **BAcc:** supported 和 refuted 两类召回率的平均值。
208
+ - **Macro F1:** 两个类别 F1 分数的平均值。
209
+ - **SESR:** 严格证据充分率(Strict Evidence Sufficiency Rate),即判断正确且
210
+ 对决定性、图像关联的事实提供充分依据的 case 所占比例。
211
+
212
+ <a id="training"></a>
213
+
214
+ ## 🛠️ 训练
215
+
216
+ 训练流程分为两个阶段:
217
+
218
+ 1. **SFT:** 审核教师核查轨迹,导出通过审核的样本,并转换为策略训练格式。
219
+ 2. **PSD:** 收集当前策���的在线训练轨迹,定位失败决策,构造程序性提示,验证修复,
220
+ 并使用选定的教师分布目标和保留目标进行训练。
221
+
222
+ | 步骤 | 实现 |
223
+ | --- | --- |
224
+ | 构建审核后的 SFT 样本 | [`build_sft_training_package.py`](scripts/trajectory/build_sft_training_package.py) |
225
+ | 转换策略样本 | [`eviscene-train convert-policy`](training/eviscene_training/policy.py) |
226
+ | 收集在线轨迹 | [`collect_psd_rollouts.py`](scripts/collect_psd_rollouts.py) |
227
+ | 定位并验证训练失败 | [`run_psd_judge.py`](scripts/run_psd_judge.py) |
228
+ | 构造提示并搜索修复 | [`run_psd_repair_driver.py`](scripts/run_psd_repair_driver.py) |
229
+ | 构建稀疏教师目标 | [`build-psd-datums`](training/eviscene_training/psd_datums.py) |
230
+ | 应用 PSD 训练损失 | [`psd_ms_swift.py`](training/eviscene_training/psd_ms_swift.py) |
231
+
232
+ 可用以下命令查看数据准备工具的参数:
233
+
234
+ ```bash
235
+ eviscene-train --help
236
+ python -m scripts.trajectory.build_sft_training_package --help
237
+ eviscene-train build-psd-datums --help
238
+ python -m scripts.run_psd_repair_driver --help
239
+ ```
240
+
241
+ 轻量包不安装 GPU 训练环境,也不下载权重。
242
+ 必要参数见[训练配置](training/README.md),输入字段见[数据接口](docs/data.md)。
243
+ 配置来自论文,不代表已经独立复现了训练结果。
244
+
245
+ <a id="evaluation"></a>
246
+
247
+ ## 🔬 评测
248
+
249
+ Agent 推理与证据判定相互独立。Agent 接收图像,不接收参考标签或评测器专用材料。
250
+ Judge 在核查轨迹保存后进行判定。
251
+
252
+ ### 运行 Agent
253
+
254
+ 准备运行时 case 包,以及上述模型与工具配置后:
255
+
256
+ ```bash
257
+ python -m eviscene.eval.run_cases \
258
+ --benchmark path/to/runtime_input/cases.jsonl \
259
+ --profile student-qwen3.5-local \
260
+ --output-dir runs/eval-full \
261
+ --concurrency 4 \
262
+ --base-sampling-seed 1729
263
+ ```
264
+
265
+ 输出包括 `run_manifest.json`、`run_results.jsonl`、`summary.json` 和逐 case 轨迹。
266
+ 运行时输入须遵循[数据接口](docs/data.md);任意图像/标签 JSONL
267
+ 不能直接替代运行时输入。上面的并发度仅是配置服务器的起点,并非论文硬件设置。
268
+ [可恢复的 rollout 包装器](scripts/run_agent_test_rollout.py)也支持对兼容的测试发布包
269
+ 进行有界工程重试。
270
+
271
+ ### 判定保存的核查轨迹
272
+
273
+ [事后 Judge](scripts/audit_agent_private_gold.py)需要单独提供参考标注,并配置
274
+ `GEMINI_API_KEY` 或 `GOOGLE_API_KEY`:
275
+
276
+ ```bash
277
+ python -m scripts.audit_agent_private_gold \
278
+ --run-dir runs/eval-full \
279
+ --manifest path/to/test-manifest.jsonl \
280
+ --private-gold-sidecar path/to/test-private-gold.jsonl \
281
+ --output-dir runs/eval-full-judge \
282
+ --judge-model gemini-3.7-flash \
283
+ --thinking-level low \
284
+ --max-output-tokens 32768 \
285
+ --concurrency 4
286
+ ```
287
+
288
+ 这是一个需要付费调用外部服务的评测步骤。标注路径为占位符,代码仓库不包含
289
+ 评测器参考材料。仅有公开的图像级标签,不足以复现证据质量审核。
290
+ 比较结果时应保持数据集版本、case 集合、模型配置和指标分母一致;
291
+ 失败或未判定的 case 不能作为成功计算。
292
+
293
+ 较大规模运行可使用[流式 Judge](scripts/server/stream_agent_judges.py),
294
+ 在推理进行的同时判定已完成的 case。
295
+ [汇总脚本](scripts/summarize_agent_test_evaluation.py)用于聚合事后审核记录;
296
+ 仓库也包含[指标定义](eviscene/eval/private_gold_metrics.py)。
297
+
298
+ ### 工具消融
299
+
300
+ 为 `eviscene.eval.run_cases` 添加一个消融参数,并使用独立输出目录:
301
+
302
+ | 变体 | 参数 | 移除的工具 |
303
+ | --- | --- | --- |
304
+ | 去掉网页搜索 | `--disable-web-search` | `text_search` |
305
+ | 去掉图像检索 | `--disable-image-retrieval` | `text_image_search`、`reverse_image_search` |
306
+ | 去掉证据检查 | `--disable-evidence-inspection` | `visit`、`compare_with_reference` |
307
+
308
+ 三种消融均保留直接视觉操作与最终报告能力。
309
+ 请固定模型、case 集合、种子和动作预算。
310
+ 精确的工具族划分见 [`tool_ablation.py`](eviscene/orchestrator/tool_ablation.py)。
311
+
312
+ <a id="citation"></a>
313
+
314
+ ## 📝 引用
315
+
316
+ **EviScene: Beyond “Is It AI?” for Agentic Image Factuality Assessment.**
317
+
318
+ 阅读 [arXiv 论文](https://arxiv.org/abs/2610.14609),
319
+ 或[下载 BibTeX](https://wangzian828.github.io/EVISCENE/assets/eviscene.bib)。
320
+ 如使用 EviScene,请引用:
321
+
322
+ ```bibtex
323
+ @misc{wang2026evisceneisaiagentic,
324
+ title={EviScene: Beyond "Is It AI?" for Agentic Image Factuality Assessment},
325
+ author={ZiAn Wang and Ruiqi Liu and Zhengbo Zhang and Yi Han and
326
+ Jialiang Shen and Ruoxin Chen and Manni Cui and Ximo Zhu and
327
+ Jin Jiang and Mingzhe Liu and Linhao Wang and Wenhao Wang and Shu Wu},
328
+ year={2026},
329
+ eprint={2610.14609},
330
+ archivePrefix={arXiv},
331
+ primaryClass={cs.CV},
332
+ url={https://arxiv.org/abs/2610.14609},
333
+ }
334
+ ```
335
+
336
+ ## ⚖️ 许可证
337
+
338
+ 代码采用 [Apache-2.0](LICENSE),另见 [NOTICE](NOTICE)。
339
+ 权重、数据和论文分别授权;代码许可证不替代上游模型、图像或服务���条款。
340
+
341
+ 开发检查见 [Contributing](CONTRIBUTING.md),安全注意事项见 [Security](SECURITY.md)。
342
+ 仓库 CI 仅做代码与打包检查;测试和测试数据不随仓库发布。
343
+ 软件引用信息见 [CITATION.cff](CITATION.cff)。
SECURITY.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Security
2
+
3
+ Do not post credentials or private traces in issues. Use GitHub's private
4
+ vulnerability-reporting channel when available; otherwise request a private
5
+ contact without disclosing the vulnerability.
6
+
7
+ This is a research runtime, not a sandbox. Treat retrieved pages and model
8
+ outputs as untrusted. Use a restricted service account and only images you are
9
+ authorized to send to configured search/hosting providers and the Baidu OCR API. Local model inference
10
+ does not make external tools offline. Judge requests require explicit credentials
11
+ and may incur charges.
12
+
13
+ Rotate exposed keys at their provider. Deleting a file or rewriting Git history
14
+ does not revoke a key. Never attach a complete environment dump to a bug report.
assets/architecture.webp ADDED

Git LFS Details

  • SHA256: 1106bbbfabaea3e91f3f310e6bccc4a3468661c701ef2d4793763ddbfbaac8ff
  • Pointer size: 131 Bytes
  • Size of remote file: 442 kB
assets/badge-arxiv.svg ADDED
assets/badge-hf-paper.svg ADDED
assets/badge-models-data.svg ADDED
assets/badge-website.svg ADDED
datasets/EviLens/.gitattributes ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.avro filter=lfs diff=lfs merge=lfs -text
4
+ *.bin filter=lfs diff=lfs merge=lfs -text
5
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
6
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
7
+ *.ftz filter=lfs diff=lfs merge=lfs -text
8
+ *.gz filter=lfs diff=lfs merge=lfs -text
9
+ *.h5 filter=lfs diff=lfs merge=lfs -text
10
+ *.joblib filter=lfs diff=lfs merge=lfs -text
11
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
12
+ *.lz4 filter=lfs diff=lfs merge=lfs -text
13
+ *.mds filter=lfs diff=lfs merge=lfs -text
14
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
15
+ *.model filter=lfs diff=lfs merge=lfs -text
16
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
17
+ *.npy filter=lfs diff=lfs merge=lfs -text
18
+ *.npz filter=lfs diff=lfs merge=lfs -text
19
+ *.onnx filter=lfs diff=lfs merge=lfs -text
20
+ *.ot filter=lfs diff=lfs merge=lfs -text
21
+ *.parquet filter=lfs diff=lfs merge=lfs -text
22
+ *.pb filter=lfs diff=lfs merge=lfs -text
23
+ *.pickle filter=lfs diff=lfs merge=lfs -text
24
+ *.pkl filter=lfs diff=lfs merge=lfs -text
25
+ *.pt filter=lfs diff=lfs merge=lfs -text
26
+ *.pth filter=lfs diff=lfs merge=lfs -text
27
+ *.rar filter=lfs diff=lfs merge=lfs -text
28
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
29
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
30
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
31
+ *.tar filter=lfs diff=lfs merge=lfs -text
32
+ *.tflite filter=lfs diff=lfs merge=lfs -text
33
+ *.tgz filter=lfs diff=lfs merge=lfs -text
34
+ *.wasm filter=lfs diff=lfs merge=lfs -text
35
+ *.xz filter=lfs diff=lfs merge=lfs -text
36
+ *.zip filter=lfs diff=lfs merge=lfs -text
37
+ *.zst filter=lfs diff=lfs merge=lfs -text
38
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
39
+ # Audio files - uncompressed
40
+ *.pcm filter=lfs diff=lfs merge=lfs -text
41
+ *.sam filter=lfs diff=lfs merge=lfs -text
42
+ *.raw filter=lfs diff=lfs merge=lfs -text
43
+ # Audio files - compressed
44
+ *.aac filter=lfs diff=lfs merge=lfs -text
45
+ *.flac filter=lfs diff=lfs merge=lfs -text
46
+ *.mp3 filter=lfs diff=lfs merge=lfs -text
47
+ *.ogg filter=lfs diff=lfs merge=lfs -text
48
+ *.wav filter=lfs diff=lfs merge=lfs -text
49
+ # Image files - uncompressed
50
+ *.bmp filter=lfs diff=lfs merge=lfs -text
51
+ *.gif filter=lfs diff=lfs merge=lfs -text
52
+ *.png filter=lfs diff=lfs merge=lfs -text
53
+ *.tiff filter=lfs diff=lfs merge=lfs -text
54
+ # Image files - compressed
55
+ *.jpg filter=lfs diff=lfs merge=lfs -text
56
+ *.jpeg filter=lfs diff=lfs merge=lfs -text
57
+ *.webp filter=lfs diff=lfs merge=lfs -text
58
+ # Video files - compressed
59
+ *.mp4 filter=lfs diff=lfs merge=lfs -text
60
+ *.webm filter=lfs diff=lfs merge=lfs -text
datasets/EviLens/README.md ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ task_categories:
3
+ - image-classification
4
+ tags:
5
+ - eviscene
6
+ - image-factuality
7
+ - multimodal
8
+ ---
9
+
10
+ # EviLens
11
+
12
+ EviLens pairs images with factuality labels and metadata for image factuality
13
+ assessment. Both splits are available in this repository.
14
+ This is an image/metadata dataset, not SFT teacher trajectories or PSD training targets.
15
+
16
+ | Split | Images / metadata records | Files |
17
+ | --- | ---: | --- |
18
+ | Train | 8,647 / 8,647 | `train/images/`, `train/metadata.jsonl` |
19
+ | Test | 1,527 / 1,527 | `test/images/`, `test/metadata.jsonl` |
20
+
21
+ Each metadata record provides an opaque `id`, relative `image` path, `claim`,
22
+ supported/refuted `label`, `split`, and provenance/category fields. Resolve
23
+ the image path relative to its split directory. Labels describe factuality,
24
+ not whether an image was AI-generated. Keep test data out of training and model selection.
25
+
26
+ Only images and paired metadata are included. Internal ID mappings, private
27
+ evaluator gold, judge receipts, investigation traces, and credentials are excluded.
28
+
29
+ ## Related artifacts
30
+
31
+ - [EviScene: code, models, and paper](https://huggingface.co/ZiAnwang/EviScene)
32
+ - [SFT model](https://huggingface.co/ZiAnwang/EviScene/tree/main/models/sft)
33
+ - [Original PSD model](https://huggingface.co/ZiAnwang/EviScene/tree/main/models/psd)
34
+
35
+ ## 中文说明
36
+
37
+ 训练集 8,647 张图片、测试集 1,527 张图片及各自逐图配套元数据均已公开。
38
+ 图片路径相对于对应的 `train/` 或 `test/` 目录;supported/refuted 表示事实性,
39
+ 不是 AI 生成来源标签。仅包含图片和元数据,不含教师轨迹、PSD 训练目标、
40
+ 私有评测材料或内部 ID 映射。测试集不可用于训练或模型选择。
41
+
42
+ 代码、SFT 与原版 PSD 权重、论文统一位于
43
+ [EviScene 仓库](https://huggingface.co/ZiAnwang/EviScene)。
44
+
45
+ Images remain subject to their respective source-specific rights and terms.
46
+ Public download does not confer unrestricted reuse or redistribution rights.
47
+ No blanket image license is assigned by this card. / 图片仍受各自来源的权利与条款约束;
48
+ 公开下载不代表可不受限制地使用或再分发,本说明不授予统一的图片许可。
datasets/EviLens/test/images/EVL-TE-00001.jpg ADDED

Git LFS Details

  • SHA256: 717474448f72479ebb564dd9566784cea807737a8475c3c5934e4ed5466aba83
  • Pointer size: 132 Bytes
  • Size of remote file: 3.98 MB
datasets/EviLens/test/images/EVL-TE-00002.png ADDED

Git LFS Details

  • SHA256: 448e3926049346a0fbb9008feaf781851005f3842a8dc23f33d39253aba194a2
  • Pointer size: 132 Bytes
  • Size of remote file: 1.49 MB
datasets/EviLens/test/images/EVL-TE-00003.jpg ADDED

Git LFS Details

  • SHA256: c7326c69540aa3c2e651c77d9a6d5f955e2e082e31b385ded8580e195d810bb0
  • Pointer size: 132 Bytes
  • Size of remote file: 3.47 MB
datasets/EviLens/test/images/EVL-TE-00004.png ADDED

Git LFS Details

  • SHA256: 38296f465f0c478fe282e3d423a89763d0fcceef07557ff294dada193178045f
  • Pointer size: 132 Bytes
  • Size of remote file: 1.79 MB
datasets/EviLens/test/images/EVL-TE-00005.png ADDED

Git LFS Details

  • SHA256: eebc2ce50ab9a8c55a041231a177a35076a95d7c4f6038e679c8ac2ca4d3bbab
  • Pointer size: 132 Bytes
  • Size of remote file: 2.04 MB
datasets/EviLens/test/images/EVL-TE-00006.png ADDED

Git LFS Details

  • SHA256: 7f71179e53c7f03d7288656236c4b0cb6f74a2542c68c12cca9d16984a37eb91
  • Pointer size: 132 Bytes
  • Size of remote file: 1.82 MB
datasets/EviLens/test/images/EVL-TE-00007.png ADDED

Git LFS Details

  • SHA256: 1d840c68164362b94dc4e896d48b485d4afde84356821c03aa919d3a651eaee2
  • Pointer size: 132 Bytes
  • Size of remote file: 2.52 MB
datasets/EviLens/test/images/EVL-TE-00008.png ADDED

Git LFS Details

  • SHA256: 622cbb99de0061578b1aeda6db39c01aefe44b7b235e2cdb4944bba619558fea
  • Pointer size: 132 Bytes
  • Size of remote file: 1.3 MB
datasets/EviLens/test/images/EVL-TE-00009.jpg ADDED

Git LFS Details

  • SHA256: 4da8ab1e47ddc4baef48de0ac70daf0899ab047c25cfd0b5bfa718fe8cdbac1b
  • Pointer size: 131 Bytes
  • Size of remote file: 661 kB
datasets/EviLens/test/images/EVL-TE-00010.jpg ADDED

Git LFS Details

  • SHA256: e3e8b003def1ed0ade8e5143b968569245a53156477a95a1e6414318c5a96b7f
  • Pointer size: 131 Bytes
  • Size of remote file: 865 kB
datasets/EviLens/test/images/EVL-TE-00011.jpg ADDED

Git LFS Details

  • SHA256: 2311d32f4f6506756514604f12ccc1273489f839f294ec90c8b08a46315e7541
  • Pointer size: 132 Bytes
  • Size of remote file: 3.2 MB
datasets/EviLens/test/images/EVL-TE-00012.jpg ADDED

Git LFS Details

  • SHA256: 3252ed387afe72f6e11f1a0946d64ff083d232a80ab9ff74ae9ffbe40b820440
  • Pointer size: 132 Bytes
  • Size of remote file: 2.6 MB
datasets/EviLens/test/images/EVL-TE-00013.jpg ADDED

Git LFS Details

  • SHA256: 5291aba3087e2c7252fd8b125d8b3819fa3b5f51023dde2518ad4e53e93b8a48
  • Pointer size: 131 Bytes
  • Size of remote file: 405 kB
datasets/EviLens/test/images/EVL-TE-00014.png ADDED

Git LFS Details

  • SHA256: a97855c7381ddfd8f142ce4803940e866fe0fd7d193c300206518830c32c28a7
  • Pointer size: 132 Bytes
  • Size of remote file: 2.53 MB
datasets/EviLens/test/images/EVL-TE-00015.jpg ADDED

Git LFS Details

  • SHA256: fe7b845994204feb0d390fd927273fd7fe73e0a07e6df269680a0eef1d35032c
  • Pointer size: 132 Bytes
  • Size of remote file: 3.52 MB
datasets/EviLens/test/images/EVL-TE-00016.jpg ADDED

Git LFS Details

  • SHA256: bfd510e3cd0b5bc46c9eb8d7c7d70aaa2839a5ea9d35d2d7b29195a9fbe9b657
  • Pointer size: 131 Bytes
  • Size of remote file: 609 kB
datasets/EviLens/test/images/EVL-TE-00017.jpg ADDED

Git LFS Details

  • SHA256: b8935db573fc78f8a33a278b9665cafa064f81abcf1db55816f845db4e46c521
  • Pointer size: 132 Bytes
  • Size of remote file: 3.84 MB
datasets/EviLens/test/images/EVL-TE-00018.jpg ADDED

Git LFS Details

  • SHA256: 666709ce5a5ec4bdd6313a706e130f8c0fd6ee4c74cffeb9eba0594e3a886f86
  • Pointer size: 131 Bytes
  • Size of remote file: 331 kB
datasets/EviLens/test/images/EVL-TE-00019.png ADDED

Git LFS Details

  • SHA256: 6f9fa5f2381a6e40a01b6f689d65b2d0e32e99298277fa5d5b3967c5d06981d5
  • Pointer size: 132 Bytes
  • Size of remote file: 1.56 MB
datasets/EviLens/test/images/EVL-TE-00020.jpg ADDED

Git LFS Details

  • SHA256: 5173c5e9a74592777fd13b8204b262823d331d5ef07e1e1ac733a14a729d869b
  • Pointer size: 132 Bytes
  • Size of remote file: 3.87 MB
datasets/EviLens/test/images/EVL-TE-00021.jpg ADDED

Git LFS Details

  • SHA256: 9ade7669a09b1f5eb893267219d454e5c13f144e9756a058f59c009a2d304f05
  • Pointer size: 132 Bytes
  • Size of remote file: 3.05 MB
datasets/EviLens/test/images/EVL-TE-00022.jpg ADDED

Git LFS Details

  • SHA256: 179df8342bc28ab20bc66292c0e2752d22eeed0a75ab761a4e0e889177523201
  • Pointer size: 132 Bytes
  • Size of remote file: 3.53 MB
datasets/EviLens/test/images/EVL-TE-00023.jpg ADDED

Git LFS Details

  • SHA256: d7ec9114a6309d10de4d4bb5f77d7f3face89c8fb0ffb3e668ac6d5d1b49c7d9
  • Pointer size: 131 Bytes
  • Size of remote file: 316 kB
datasets/EviLens/test/images/EVL-TE-00024.jpg ADDED

Git LFS Details

  • SHA256: 35481e4c9f989c06b0656b3cb39f6fe06d79f83cfb0d250ed66eec1389586032
  • Pointer size: 131 Bytes
  • Size of remote file: 474 kB
datasets/EviLens/test/images/EVL-TE-00025.jpg ADDED

Git LFS Details

  • SHA256: 6bd20413a9d4349194b71401f86a55d86c3468df6b4f4f9ba1c68f59685176a3
  • Pointer size: 131 Bytes
  • Size of remote file: 695 kB
datasets/EviLens/test/images/EVL-TE-00026.jpg ADDED

Git LFS Details

  • SHA256: 236230812e0ea4d35652a6cae319a795cc819ecab5c76f914024d50c486cc3f7
  • Pointer size: 132 Bytes
  • Size of remote file: 3.37 MB
datasets/EviLens/test/images/EVL-TE-00027.png ADDED

Git LFS Details

  • SHA256: 1eefeb72afa92bb4a7c4d9b40c1fee32214d0d22d56bb9ca4f8ec8a537d794ad
  • Pointer size: 132 Bytes
  • Size of remote file: 2.03 MB
datasets/EviLens/test/images/EVL-TE-00028.jpg ADDED

Git LFS Details

  • SHA256: d1384dd0fbf588feb4b5c60ad20860f7477e18c9679f4938e02bfc3a2b8906b5
  • Pointer size: 132 Bytes
  • Size of remote file: 2.97 MB
datasets/EviLens/test/images/EVL-TE-00029.jpg ADDED

Git LFS Details

  • SHA256: 87f5c4985dfad1b98afe5d7d158b07d2fb0160bd32faa78b2714d1351bd12e49
  • Pointer size: 132 Bytes
  • Size of remote file: 2.42 MB
datasets/EviLens/test/images/EVL-TE-00030.jpg ADDED

Git LFS Details

  • SHA256: fca6528bff50a23ff8fc87df6065e08fa843e6b6667a8e018ae596848b2060e7
  • Pointer size: 131 Bytes
  • Size of remote file: 619 kB
datasets/EviLens/test/images/EVL-TE-00031.jpg ADDED

Git LFS Details

  • SHA256: afff7bb1ca65c3f777ac777241aa9bd4d1d98b28b6f6b111b43ed978b1915fc3
  • Pointer size: 132 Bytes
  • Size of remote file: 4 MB
datasets/EviLens/test/images/EVL-TE-00032.jpg ADDED

Git LFS Details

  • SHA256: f073f3aca8792131adebe13b280593e33ec501c4bf44b445ddc5e2eef9b52a10
  • Pointer size: 132 Bytes
  • Size of remote file: 3.69 MB