milai-tk commited on
Commit
d0a7b8d
ยท
1 Parent(s): 698968f

Initial commit

Browse files
Files changed (6) hide show
  1. app.py +57 -0
  2. examples-01.jpg +0 -0
  3. examples-02.jpg +0 -0
  4. examples-03.jpg +0 -0
  5. requirements.txt +7 -0
  6. sentences_ja.txt +50 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import clip
2
+ import gradio as gr
3
+ import numpy as np
4
+ import simple_chalk as chalk
5
+ import torch
6
+ from googletrans import Translator
7
+ from PIL import Image
8
+
9
+ TOP_N = 5
10
+
11
+
12
+ def match_texts(in_img: Image) -> list:
13
+
14
+ """ใƒขใƒ‡ใƒซๆบ–ๅ‚™"""
15
+ device = "cuda" if torch.cuda.is_available() else "cpu"
16
+ model, preprocess = clip.load("ViT-B/32", device=device)
17
+
18
+ """ ใƒ†ใ‚ญใ‚นใƒˆๅ‰ๅ‡ฆ็† """
19
+ translator = Translator()
20
+ trans_dict = {}
21
+ with open("./sentences_ja.txt") as f:
22
+ for ja_sentence in f:
23
+ en_sentence = translator.translate(ja_sentence, dest="en", src="ja").text
24
+ trans_dict[en_sentence] = ja_sentence
25
+ en_sentences = list(trans_dict.keys())
26
+ texts = clip.tokenize(en_sentences).to(device)
27
+
28
+ """ ็”ปๅƒๅ‰ๅ‡ฆ็† """
29
+ # image: Tensor (3, 224, 224) -> (1, 3, 224, 224)
30
+ image = preprocess(in_img).unsqueeze(0).to(device)
31
+
32
+ """ CLIP ใƒขใƒ‡ใƒซใงๅ‡ฆ็† """
33
+ with torch.no_grad():
34
+ logits_per_image, logits_per_text = model(image, texts)
35
+ probs = logits_per_image.softmax(dim=-1).cpu().numpy()
36
+ probs_per_image = probs.reshape(-1)
37
+ sort_index = np.argsort(probs_per_image)[::-1]
38
+
39
+ """ ๅ‡ฆ็†็ตๆžœ๏ผˆใƒ†ใ‚ญใ‚นใƒˆ๏ผ‰ๅ‡บๅŠ› """
40
+ idxs = sort_index.tolist()
41
+ # ่‹ฑ่ชžๅ‡บๅŠ›
42
+ # confidences = {en_sentences[i]: float(probs_per_image[i]) for i in idxs}
43
+ # ๆ—ฅๆœฌ่ชžๅค‰ๆ›ๅ‡บๅŠ›
44
+ confidences = {trans_dict[en_sentences[i]]: float(probs_per_image[i]) for i in idxs}
45
+ return confidences
46
+
47
+
48
+ if __name__ == "__main__":
49
+ inputs = gr.Image(type="pil", label="็”ปๅƒใ‚’ๅ…ฅๅŠ›")
50
+ outputs = gr.Label(num_top_classes=TOP_N, label=f"ไธ€่‡ดใ—ใŸใƒ†ใ‚ญใ‚นใƒˆ Top-{TOP_N}")
51
+ gr.Interface(
52
+ fn=match_texts,
53
+ inputs=inputs,
54
+ outputs=outputs,
55
+ examples=["examples-01.jpg", "examples-02.jpg", "examples-03.jpg"],
56
+ allow_flagging="never",
57
+ ).launch(share=False)
examples-01.jpg ADDED
examples-02.jpg ADDED
examples-03.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ clip-by-openai==1.1.0
2
+ googletrans==4.0.0rc1
3
+ gradio==3.0.13
4
+ numpy==1.22.3
5
+ pillow==9.1.0
6
+ simple-chalk==0.1.0
7
+ torch
sentences_ja.txt ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ๆ‚ฉใ‚“ใงใ„ใ‚‹
2
+ ้›ป่ฉฑใ‚’ใ‹ใ‘ใฆใ„ใ‚‹
3
+ ่ฉฑใ—ใชใŒใ‚‰็ฌ‘ใฃใฆใ„ใ‚‹
4
+ ๆ€’ใฃใฆใ„ใ‚‹
5
+ ่ณ‡ๆ–™ใ‚’่ชญใ‚“ใงใ„ใ‚‹
6
+ ๆŽฅๅฎขใ—ใฆใ„ใ‚‹
7
+ ๅ•ใ„ๅˆใ‚ใ›ๅฏพๅฟœใ—ใฆใ„ใ‚‹
8
+ ่ชžใ‚Šใ‹ใ‘ใฆใ„ใ‚‹
9
+ ๅฅ‘็ด„ๆ›ธใ‚’่ชฌๆ˜Žใ—ใฆใ„ใ‚‹
10
+ ๅ•†ๅ“ใ‚’ๅ‹งใ‚ใฆใ„ใ‚‹
11
+ ใƒ‘ใƒผใƒ†ใ‚ฃใƒผใธๆ‹›ๅพ…ใ—ใฆใ„ใ‚‹
12
+ ๅพŒใ‚ใ‹ใ‚‰ๅฃฐใ‚’ใ‹ใ‘ใฆใ„ใ‚‹
13
+ ใŠๅฎขๆง˜ใซใ‚ใ„ใ•ใคใ—ใฆใ„ใ‚‹
14
+ ็ฌ‘้ก”ใงๅพฎ็ฌ‘ใ‚“ใงใ„ใ‚‹
15
+ ๆถ™ใ‚’ๆตใ—ใฆใ„ใ‚‹
16
+ ๆ‚ฒใ—ใ‚“ใงใ„ใ‚‹
17
+ ๅคงๅฃฐใ‚’ๅ‡บใ—ใฆ็ฌ‘ใฃใฆใ„ใ‚‹
18
+ ๅ–ๅผ•ใฎๆ‰‹็ถšใใ‚’่กŒใชใฃใฆใ„ใ‚‹
19
+ ๆ‰‹็ถšใใซใคใ„ใฆใ”ๆกˆๅ†…ใ—ใฆใ„ใ‚‹
20
+ ้“ใ‚’่žใ‹ใ‚Œใฆใ„ใ‚‹
21
+ ใƒ‘ใ‚ฝใ‚ณใƒณใงใƒ‡ใƒผใ‚ฟใ‚’ๅ…ฅๅŠ›ใ—ใฆใ„ใ‚‹
22
+ ใ‚ซใƒกใƒฉใงๆ’ฎๅฝฑใ—ใฆใ„ใ‚‹
23
+ ๆ–ใ‚’ใคใ„ใฆๆญฉใ„ใฆใ„ใ‚‹
24
+ ่ปŠใ‚’้‹่ปขใ—ใฆใ„ใ‚‹
25
+ ่‡ช่ปข่ปŠใซไน—ใฃใฆใ„ใ‚‹
26
+ ใƒกใ‚ฌใƒใ‚’ใ‹ใ‘ใฆใ„ใ‚‹
27
+ ใ‚ตใƒณใ‚ฐใƒฉใ‚นใ‚’ใ‹ใ‘ใฆใ„ใ‚‹
28
+ ้Ÿณๆฅฝใ‚’่žใ„ใฆใ„ใ‚‹
29
+ ๆฑ—ใ‚’ๆตใ—ใฆ่ตฐใฃใฆใ„ใ‚‹
30
+ ่พบใ‚Šใ‚’่ฆ‹ๅ›žใ—ใฆใ„ใ‚‹
31
+ ่…•ใ‚’ไธŠใ’ใฆใ„ใ‚‹
32
+ ็”ป้ขใ‚’่ฆ—ใ่พผใ‚“ใงใ„ใ‚‹
33
+ ใ‚คใ‚นใซๅบงใฃใฆใ„ใ‚‹
34
+ ่‚ฉใซๆ‰‹ใ‚’ๅ›žใ—ใฆใ„ใ‚‹
35
+ ๆกๆ‰‹ใ—ใฆใ„ใ‚‹
36
+ ็›ฎใ‚’ใคใถใฃใฆใ„ใ‚‹
37
+ ่…•ใ‚’็ต„ใ‚“ใง่€ƒใˆ่พผใ‚“ใงใ„ใ‚‹
38
+ ้ ญใ‚’ๆŠฑใˆใฆใ„ใ‚‹
39
+ ่…•็ซ‹ใฆไผใ›ใ‚’ใ—ใฆใ„ใ‚‹
40
+ ่…•ใ‚’ๅ›žใ—ใฆใ„ใ‚‹
41
+ ๆ–‡็ซ ใ‚’ๆ›ธใ„ใฆใ„ใ‚‹
42
+ ๆ›ธ้กžใ‚’ไฝœๆˆใ—ใฆใ„ใ‚‹
43
+ ไป•ไบ‹ใซ่ฟฝใ‚ใ‚Œใฆใ„ใ‚‹
44
+ ใŠ่ฉซใณใ‚’ใ—ใฆใ„ใ‚‹
45
+ ้ ญใ‚’ไธ‹ใ’ใฆใ„ใ‚‹
46
+ ๅฌ‰ใ—ใใ†ใซ็ฌ‘ใฃใฆใ„ใ‚‹
47
+ ไฝ•ใ‹ใ‚’ๆŽขใ—ใฆใ„ใ‚‹
48
+ ๆฉŸๆขฐใ‚’ๆ“ไฝœใ—ใฆใ„ใ‚‹
49
+ ๆ‰‹ใ‚’ๆŒฏใฃใฆใ„ใ‚‹
50
+ ็ตๆžœใ‚’่ฆ‹ใฆ่ฝใก่พผใ‚“ใงใ„ใ‚‹