Ankit19102004 commited on
Commit
cba26e0
·
1 Parent(s): e9120f6

update_files

Browse files
Files changed (2) hide show
  1. app.py +0 -107
  2. environment.yml +331 -0
app.py DELETED
@@ -1,107 +0,0 @@
1
- from pathlib import Path
2
- import uuid
3
- from flask import Flask,render_template,request
4
- from werkzeug.utils import secure_filename
5
-
6
- from model_loader import (
7
- predict_ai_image,
8
- predict_fake_image,
9
- predict_fake_audio_v1,
10
- predict_fake_audio_v2,
11
- predict_card_fraud,
12
- predict_phishing
13
- )
14
-
15
- # =========================
16
- BASE = Path(__file__).parent
17
- UPLOADS = BASE/"uploads"
18
- UPLOADS.mkdir(exist_ok=True)
19
-
20
- app = Flask(__name__)
21
- app.config["MAX_CONTENT_LENGTH"]=200*1024*1024
22
-
23
- # =========================
24
- MODEL_CATALOG = [
25
- {"id":"phishing","name":"Phishing Message Detection","input":"text"},
26
- {"id":"fake_image","name":"Fake / Manipulated Image Detection","input":"image"},
27
- {"id":"ai_image","name":"AI-Generated Image Detection","input":"image"},
28
- {"id":"fake_audio_v2","name":"Fake Voice / Audio Detection","input":"audio"},
29
- {"id":"fake_audio_v1","name":"Fake Voice Detection (Beta)","input":"audio"},
30
- {"id":"credit_card_fraud","name":"Credit Card Fraud Detection","input":"tabular"}
31
- ]
32
-
33
- # =========================
34
-
35
- def save_file(f):
36
- if not f or not f.filename:
37
- return None
38
- name = secure_filename(f.filename)
39
- name = f"{Path(name).stem}-{uuid.uuid4().hex[:8]}{Path(name).suffix}"
40
- path = UPLOADS/name
41
- f.save(path)
42
- return path
43
-
44
- # =========================
45
-
46
- def run_inference(mid,text,file):
47
-
48
- if mid=="phishing":
49
- return predict_phishing(text)
50
-
51
- if mid=="fake_image":
52
- return predict_fake_image(file)
53
-
54
- if mid=="ai_image":
55
- return predict_ai_image(file)
56
-
57
- if mid=="fake_audio_v1":
58
- return predict_fake_audio_v1(file)
59
-
60
- if mid=="fake_audio_v2":
61
- return predict_fake_audio_v2(file)
62
-
63
- if mid=="credit_card_fraud":
64
- return predict_card_fraud(file)
65
-
66
- return "Unknown",0
67
-
68
- # =========================
69
-
70
- @app.route("/")
71
- def index():
72
- return render_template(
73
- "index.html",
74
- models=MODEL_CATALOG,
75
- selected_id=MODEL_CATALOG[0]["id"],
76
- result=None,
77
- text_value=""
78
- )
79
-
80
- @app.route("/predict",methods=["POST"])
81
- def predict():
82
-
83
- mid = request.form.get("model")
84
- text = request.form.get("text","")
85
- file = request.files.get("file")
86
- path = save_file(file)
87
-
88
- label,conf = run_inference(mid,text,path)
89
-
90
- result = {
91
- "verdict":label,
92
- "note":"Inference Completed",
93
- "details":[
94
- {"label":"Confidence","value":f"{conf:.3f}"}
95
- ]
96
- }
97
-
98
- return render_template(
99
- "index.html",
100
- models=MODEL_CATALOG,
101
- selected_id=mid,
102
- result=result,
103
- text_value=text
104
- )
105
-
106
- if __name__=="__main__":
107
- app.run(debug=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
environment.yml ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: bert
2
+ channels:
3
+ - pytorch
4
+ - nvidia
5
+ - conda-forge
6
+ - defaults
7
+ - https://repo.anaconda.com/pkgs/main
8
+ - https://repo.anaconda.com/pkgs/r
9
+ - https://repo.anaconda.com/pkgs/msys2
10
+ dependencies:
11
+ - aom=3.12.1=h00a0c3c_0
12
+ - asttokens=3.0.1=pyhd8ed1ab_0
13
+ - audioread=3.0.1=py310h5588dad_3
14
+ - blas=1.0=mkl
15
+ - bottleneck=1.4.2=py310h540bb41_1
16
+ - brotlicffi=1.2.0.0=py310h885b0b7_0
17
+ - bzip2=1.0.8=h2bbff1b_6
18
+ - ca-certificates=2026.1.4=h4c7d964_0
19
+ - cached-property=1.5.2=hd8ed1ab_1
20
+ - cached_property=1.5.2=pyha770c72_1
21
+ - cairo=1.18.4=he9e932c_0
22
+ - certifi=2026.1.4=pyhd8ed1ab_0
23
+ - cffi=2.0.0=py310h02ab6af_1
24
+ - charset-normalizer=3.4.4=py310haa95532_0
25
+ - click=8.2.1=py310haa95532_1
26
+ - colorama=0.4.6=py310haa95532_0
27
+ - comm=0.2.3=pyhe01879c_0
28
+ - contourpy=1.3.1=py310h214f63a_0
29
+ - cuda-cccl=13.1.115=h415d894_0
30
+ - cuda-cccl_win-64=13.1.115=hc667259_0
31
+ - cuda-cudart=12.1.105=0
32
+ - cuda-cudart-dev=12.1.105=0
33
+ - cuda-cupti=12.1.105=0
34
+ - cuda-libraries=12.1.0=0
35
+ - cuda-libraries-dev=12.1.0=0
36
+ - cuda-nvrtc=12.1.105=0
37
+ - cuda-nvrtc-dev=12.1.105=0
38
+ - cuda-nvtx=12.1.105=0
39
+ - cuda-opencl=13.1.115=hd7d98ca_0
40
+ - cuda-opencl-dev=13.1.115=hd7d98ca_0
41
+ - cuda-profiler-api=13.1.115=h415d894_0
42
+ - cuda-runtime=12.1.0=0
43
+ - cuda-version=13.1=hd92462c_3
44
+ - cycler=0.12.1=py310haa95532_0
45
+ - dav1d=1.2.1=h2bbff1b_0
46
+ - debugpy=1.8.20=py310h699e580_0
47
+ - decorator=5.2.1=pyhd8ed1ab_0
48
+ - exceptiongroup=1.3.1=pyhd8ed1ab_0
49
+ - executing=2.2.1=pyhd8ed1ab_0
50
+ - expat=2.7.3=h885b0b7_4
51
+ - filelock=3.20.3=py310haa95532_0
52
+ - fontconfig=2.15.0=hd211d86_0
53
+ - fonttools=4.61.0=py310h02ab6af_0
54
+ - freeglut=3.8.0=hfcef157_0
55
+ - freetype=2.14.1=hfbffc0b_0
56
+ - fribidi=1.0.16=haf45083_0
57
+ - giflib=5.2.2=h7edc060_0
58
+ - gmp=6.3.0=h537511b_0
59
+ - gmpy2=2.2.2=py310h8598115_0
60
+ - graphite2=1.3.14=hd77b12b_1
61
+ - h5py=3.15.1=nompi_py310hb7e4da9_101
62
+ - harfbuzz=12.3.0=h3ef6528_1
63
+ - hdf5=1.14.6=nompi_h89f0904_105
64
+ - icc_rt=2022.1.0=h6049295_2
65
+ - icu=73.1=h6c2663c_0
66
+ - idna=3.11=py310haa95532_0
67
+ - intel-openmp=2023.1.0=h59b6b97_46320
68
+ - ipykernel=7.1.0=pyh6dadd2b_0
69
+ - ipython=8.37.0=pyha7b4d00_0
70
+ - jedi=0.19.2=pyhd8ed1ab_1
71
+ - jinja2=3.1.6=py310haa95532_0
72
+ - joblib=1.5.3=py310haa95532_0
73
+ - jpeg=9f=ha349fce_0
74
+ - jupyter_client=8.8.0=pyhcf101f3_0
75
+ - jupyter_core=5.9.1=pyh6dadd2b_0
76
+ - khronos-opencl-icd-loader=2025.07.22=h79b28c9_0
77
+ - kiwisolver=1.4.9=py310h03f52e7_0
78
+ - krb5=1.21.3=hdf4eb48_0
79
+ - lame=3.100=hcfcfb64_1003
80
+ - lazy-loader=0.4=pyhd8ed1ab_2
81
+ - lazy_loader=0.4=pyhd8ed1ab_2
82
+ - lcms2=2.17=h3732fa5_0
83
+ - lerc=4.0.0=h5da7b33_0
84
+ - libaec=1.1.5=haf901d7_0
85
+ - libavif=1.3.0=h5bd13ec_0
86
+ - libcublas=12.1.0.26=0
87
+ - libcublas-dev=12.1.0.26=0
88
+ - libcufft=11.0.2.4=0
89
+ - libcufft-dev=11.0.2.4=0
90
+ - libcurand=10.4.1.81=hd7d98ca_0
91
+ - libcurand-dev=10.4.1.81=hd7d98ca_0
92
+ - libcurl=8.18.0=h43ecb02_0
93
+ - libcusolver=11.4.4.55=0
94
+ - libcusolver-dev=11.4.4.55=0
95
+ - libcusparse=12.0.2.55=0
96
+ - libcusparse-dev=12.0.2.55=0
97
+ - libdeflate=1.22=h5bf469e_0
98
+ - libexpat=2.7.3=h885b0b7_4
99
+ - libffi=3.4.4=hd77b12b_1
100
+ - libflac=1.5.0=h08124e9_1
101
+ - libglib=2.86.3=h9bccc14_0
102
+ - libhwloc=2.12.1=default_hfa10c62_1000
103
+ - libiconv=1.16=h2bbff1b_3
104
+ - libjpeg-turbo=2.0.0=h196d8e1_0
105
+ - libkrb5=1.22.1=hb237eb7_0
106
+ - libnpp=12.0.2.50=0
107
+ - libnpp-dev=12.0.2.50=0
108
+ - libnvjitlink=12.1.105=0
109
+ - libnvjitlink-dev=12.1.105=0
110
+ - libnvjpeg=12.1.1.14=0
111
+ - libnvjpeg-dev=12.1.1.14=0
112
+ - libogg=1.3.5=h2466b09_1
113
+ - libopenjpeg=2.5.4=h02ab6af_1
114
+ - libopus=1.6.1=h6a83c73_0
115
+ - libpng=1.6.54=ha15c746_0
116
+ - libpq=17.6=h64815fc_1
117
+ - librosa=0.11.0=pyhd8ed1ab_0
118
+ - libsndfile=1.2.2=hc3b4fa0_2
119
+ - libsodium=1.0.20=hc70643c_0
120
+ - libssh2=1.11.1=h9aa295b_0
121
+ - libtiff=4.7.1=h3a18249_0
122
+ - libuv=1.48.0=h827c3e9_0
123
+ - libvorbis=1.3.7=h5112557_2
124
+ - libwebp=1.6.0=h55ef9bb_0
125
+ - libwebp-base=1.6.0=hbf3958f_0
126
+ - libxml2=2.13.9=h6201b9f_0
127
+ - libzlib=1.3.1=h02ab6af_0
128
+ - llvmlite=0.46.0=py310hfe4b161_0
129
+ - lz4-c=1.9.4=h2bbff1b_1
130
+ - markupsafe=3.0.2=py310h827c3e9_0
131
+ - matplotlib=3.10.8=py310haa95532_0
132
+ - matplotlib-base=3.10.8=py310h26e45b9_0
133
+ - matplotlib-inline=0.2.1=pyhd8ed1ab_0
134
+ - mkl=2023.1.0=h6b88ed4_46358
135
+ - mkl-service=2.4.0=py310h827c3e9_2
136
+ - mkl_fft=1.3.11=py310h827c3e9_0
137
+ - mkl_random=1.2.8=py310hc64d2fc_0
138
+ - mpc=1.3.1=h827c3e9_0
139
+ - mpfr=4.2.1=h56c3642_0
140
+ - mpg123=1.32.9=h01009b0_0
141
+ - mpmath=1.3.0=py310haa95532_0
142
+ - msgpack-python=1.1.2=py310he9f1925_1
143
+ - nest-asyncio=1.6.0=pyhd8ed1ab_1
144
+ - networkx=3.4.2=py310haa95532_0
145
+ - nltk=3.9.2=py310ha55a155_0
146
+ - numba=0.63.1=py310h04bad52_0
147
+ - numexpr=2.11.0=py310hdb065b2_0
148
+ - numpy=2.2.5=py310h5f75535_0
149
+ - numpy-base=2.2.5=py310h23d94f8_0
150
+ - opencl-headers=2025.07.22=h885b0b7_0
151
+ - openssl=3.6.1=hf411b9b_1
152
+ - packaging=25.0=py310haa95532_1
153
+ - pandas=2.3.3=py310h42c1672_1
154
+ - parso=0.8.5=pyhcf101f3_0
155
+ - pcre2=10.46=h5740b90_0
156
+ - pickleshare=0.7.5=pyhd8ed1ab_1004
157
+ - pillow=12.1.0=py310h6b7a805_0
158
+ - pip=25.3=pyhc872135_0
159
+ - pixman=0.46.4=h4043f72_0
160
+ - platformdirs=4.5.1=pyhcf101f3_0
161
+ - pooch=1.9.0=pyhd8ed1ab_0
162
+ - prompt-toolkit=3.0.52=pyha770c72_0
163
+ - psutil=7.2.2=py310h1637853_0
164
+ - pure_eval=0.2.3=pyhd8ed1ab_1
165
+ - pycparser=2.23=py310haa95532_0
166
+ - pygments=2.19.2=pyhd8ed1ab_0
167
+ - pyparsing=3.2.5=py310haa95532_0
168
+ - pyqt=6.7.1=py310h378bd72_2
169
+ - pyqt6-sip=13.9.1=py310h02ab6af_2
170
+ - pysocks=1.7.1=py310haa95532_1
171
+ - pysoundfile=0.13.1=pyhd8ed1ab_0
172
+ - python=3.10.19=h981015d_0
173
+ - python-dateutil=2.9.0post0=py310haa95532_2
174
+ - python-tzdata=2025.3=pyhd3eb1b0_0
175
+ - python_abi=3.10=2_cp310
176
+ - pytorch=2.5.1=py3.10_cuda12.1_cudnn9_0
177
+ - pytorch-cuda=12.1=hde6ce7c_6
178
+ - pytorch-mutex=1.0=cuda
179
+ - pytz=2025.2=py310haa95532_0
180
+ - pywin32=311=py310h282bd7d_1
181
+ - pyyaml=6.0.3=py310hb9a58be_0
182
+ - pyzmq=27.1.0=py310h535538e_0
183
+ - qtbase=6.7.3=hd088775_4
184
+ - qtdeclarative=6.7.3=h885b0b7_1
185
+ - qtsvg=6.7.3=h9d4b640_1
186
+ - qttools=6.7.3=hcb596f7_1
187
+ - qtwebchannel=6.7.3=h885b0b7_1
188
+ - qtwebsockets=6.7.3=h885b0b7_1
189
+ - regex=2025.11.3=py310h02ab6af_0
190
+ - requests=2.32.5=py310haa95532_1
191
+ - scikit-learn=1.7.2=py310h7f7e138_1
192
+ - scipy=1.15.3=py310h180bac5_0
193
+ - seaborn=0.13.2=py310haa95532_3
194
+ - setuptools=72.1.0=py310haa95532_0
195
+ - sip=6.10.0=py310h5da7b33_0
196
+ - six=1.17.0=py310haa95532_0
197
+ - soxr=0.1.3=hcfcfb64_3
198
+ - soxr-python=1.0.0=py310h73ae2b4_1
199
+ - sqlite=3.51.1=hda9a48d_0
200
+ - stack_data=0.6.3=pyhd8ed1ab_1
201
+ - standard-aifc=3.13.0=py310h5588dad_3
202
+ - standard-sunau=3.13.0=py310h5588dad_3
203
+ - tbb=2021.8.0=h59b6b97_0
204
+ - tbb-devel=2021.8.0=h59b6b97_0
205
+ - threadpoolctl=3.5.0=py310h4442805_1
206
+ - tk=8.6.15=hf199647_0
207
+ - tomli=2.4.0=py310haa95532_0
208
+ - tornado=6.5.4=py310h02ab6af_0
209
+ - tqdm=4.67.1=py310h4442805_1
210
+ - traitlets=5.14.3=pyhd8ed1ab_1
211
+ - typing_extensions=4.15.0=py310haa95532_0
212
+ - tzdata=2025c=he532380_0
213
+ - ucrt=10.0.22621.0=haa95532_0
214
+ - urllib3=2.6.3=py310haa95532_0
215
+ - vc=14.42=haa95532_5
216
+ - vc14_runtime=14.44.35208=h4927774_10
217
+ - vs2015_runtime=14.44.35208=ha6b5a95_10
218
+ - wcwidth=0.5.3=pyhd8ed1ab_0
219
+ - wheel=0.46.3=py310haa95532_0
220
+ - win_inet_pton=1.1.0=py310haa95532_1
221
+ - xz=5.6.4=h4754444_1
222
+ - yaml=0.2.5=he774522_0
223
+ - zeromq=4.3.5=h5bddc39_9
224
+ - zipp=3.23.0=pyhcf101f3_1
225
+ - zlib=1.3.1=h02ab6af_0
226
+ - zstd=1.5.7=h56299aa_0
227
+ - pip:
228
+ - absl-py==2.4.0
229
+ - accelerate==1.12.0
230
+ - aiohappyeyeballs==2.6.1
231
+ - aiohttp==3.13.3
232
+ - aiosignal==1.4.0
233
+ - alembic==1.18.3
234
+ - annotated-doc==0.0.4
235
+ - annotated-types==0.7.0
236
+ - anyio==4.12.1
237
+ - astunparse==1.6.3
238
+ - async-timeout==5.0.1
239
+ - attrs==25.4.0
240
+ - blinker==1.9.0
241
+ - cachetools==6.2.6
242
+ - cloudpickle==3.1.2
243
+ - cryptography==46.0.4
244
+ - databricks-sdk==0.82.0
245
+ - datasets==4.5.0
246
+ - dill==0.4.0
247
+ - docker==7.1.0
248
+ - evaluate==0.4.6
249
+ - fastapi==0.128.0
250
+ - flask==2.3.3
251
+ - flask-cors==6.0.2
252
+ - flatbuffers==25.12.19
253
+ - frozenlist==1.8.0
254
+ - fsspec==2025.10.0
255
+ - gast==0.7.0
256
+ - gitdb==4.0.12
257
+ - gitpython==3.1.46
258
+ - google-auth==2.48.0
259
+ - google-pasta==0.2.0
260
+ - graphene==3.4.3
261
+ - graphql-core==3.2.7
262
+ - graphql-relay==3.2.0
263
+ - greenlet==3.3.1
264
+ - grpcio==1.76.0
265
+ - h11==0.16.0
266
+ - hf-xet==1.2.0
267
+ - httpcore==1.0.9
268
+ - httpx==0.28.1
269
+ - huey==2.6.0
270
+ - huggingface-hub==1.3.5
271
+ - imbalanced-learn==0.14.1
272
+ - importlib-metadata==8.7.1
273
+ - itsdangerous==2.2.0
274
+ - keras==3.12.0
275
+ - libclang==18.1.1
276
+ - mako==1.3.10
277
+ - markdown==3.10.1
278
+ - markdown-it-py==4.0.0
279
+ - mdurl==0.1.2
280
+ - ml-dtypes==0.5.4
281
+ - mlflow==3.9.0
282
+ - mlflow-skinny==3.9.0
283
+ - mlflow-tracing==3.9.0
284
+ - multidict==6.7.1
285
+ - multiprocess==0.70.18
286
+ - namex==0.1.0
287
+ - opencv-python==4.13.0.90
288
+ - opentelemetry-api==1.39.1
289
+ - opentelemetry-proto==1.39.1
290
+ - opentelemetry-sdk==1.39.1
291
+ - opentelemetry-semantic-conventions==0.60b1
292
+ - opt-einsum==3.4.0
293
+ - optree==0.18.0
294
+ - prettytable==3.17.0
295
+ - propcache==0.4.1
296
+ - protobuf==6.33.5
297
+ - pyarrow==22.0.0
298
+ - pyasn1==0.6.2
299
+ - pyasn1-modules==0.4.2
300
+ - pydantic==2.12.5
301
+ - pydantic-core==2.41.5
302
+ - python-dotenv==1.2.1
303
+ - rich==14.3.2
304
+ - rsa==4.9.1
305
+ - safetensors==0.7.0
306
+ - shellingham==1.5.4
307
+ - sklearn-compat==0.1.5
308
+ - skops==0.13.0
309
+ - smmap==5.0.2
310
+ - sqlalchemy==2.0.46
311
+ - sqlparse==0.5.5
312
+ - starlette==0.50.0
313
+ - sympy==1.13.1
314
+ - tensorboard==2.20.0
315
+ - tensorboard-data-server==0.7.2
316
+ - tensorflow==2.20.0
317
+ - termcolor==3.3.0
318
+ - tokenizers==0.22.2
319
+ - torchaudio==2.5.1
320
+ - torchvision==0.20.1
321
+ - transformers==5.0.0
322
+ - typer-slim==0.21.1
323
+ - typing-inspection==0.4.2
324
+ - uvicorn==0.40.0
325
+ - waitress==3.0.2
326
+ - werkzeug==3.1.5
327
+ - wordcloud==1.9.6
328
+ - wrapt==2.1.1
329
+ - xxhash==3.6.0
330
+ - yarl==1.22.0
331
+ prefix: D:\Anaconda\envs\bert