獨(dú)家 | 圖片主題建模?為什么不呢?!

作者:Maarten Grootendorst 翻譯:陳超
校對:趙茹萱
本文約3200字,建議閱讀5分鐘
本文介紹了使用圖片主題進(jìn)行建模。



pip install conceptimport?os | |
import?glob | |
import?zipfile | |
from?tqdm?import?tqdm | |
from?sentence_transformers?import?util | |
# Download 25k images from Unsplash | |
img_folder?=?'photos/' | |
if?not?os.path.exists(img_folder) or?len(os.listdir(img_folder)) ==?0: | |
????os.makedirs(img_folder, exist_ok=True) | |
????photo_filename?=?'unsplash-25k-photos.zip' | |
????if?not?os.path.exists(photo_filename): ??#Download dataset if does not exist | |
????????util.http_get('http://sbert.net/datasets/'+photo_filename, photo_filename) | |
????#Extract all images | |
????with?zipfile.ZipFile(photo_filename, 'r') as?zf: | |
????????for?member?in?tqdm(zf.infolist(), desc='Extracting'): | |
????????????zf.extract(member, img_folder) | |
# Load image paths | |
img_names?=?list(glob.glob('photos/*.jpg')) |
import?random |
import?nltk |
nltk.download("wordnet") |
from?nltk.corpus?import?wordnet?as?wn |
all_nouns?=?[word?for?synset?in?wn.all_synsets('n') for?word?in?synset.lemma_names() |
?????????????if?"_"?not?in?word] |
selected_nouns?=?random.sample(all_nouns, 50_000) |
from?concept?import?ConceptModel |
concept_model?=?ConceptModel() |
concepts?=?concept_model.fit_transform(img_names, docs=selected_nouns) |
import?pickle | |
from?sentence_transformers?import?util | |
# Load pre-trained image embeddings | |
emb_filename?=?'unsplash-25k-photos-embeddings.pkl' | |
if?not?os.path.exists(emb_filename): ??#Download dataset if does not exist | |
????util.http_get('http://sbert.net/datasets/'+emb_filename, emb_filename) | |
with?open(emb_filename, 'rb') as?fIn: | |
????img_names, image_embeddings?=?pickle.load(fIn) | |
img_names?=?[f"photos/{path}"?for?path?in?img_names] |
view rawpretrained_embeddings.py?hosted with ??by?GitHub
之后,我們將預(yù)訓(xùn)練的嵌入添加到模型中并訓(xùn)練它:
from?concept?import?ConceptModel ? | |
# Train Concept using the pre-trained image embeddings | |
concept_model?=?ConceptModel() | |
concepts?=?concept_model.fit_transform(img_names, | |
???????????????????????????????????????image_embeddings=image_embeddings, | |
???????????????????????????????????????docs=selected_nouns) |
fig?=?concept_model.visualize_concepts() |
view rawvisualize.py?hosted with ??by?GitHub


>>>?search_results?=concept_model.find_concepts("beach") | |
>>>?search_results | |
[(100, 0.277577825349102), | |
?(53, 0.27431058773894657), | |
?(95, 0.25973751319723837), | |
?(77, 0.2560122597417548), | |
?(97, 0.25361988261846297)] |
view rawsearch.py?hosted with ??by?GitHub
|
view rawvisualize_search.py?hosted with ??by?GitHub


譯者簡介
陳超,北京大學(xué)應(yīng)用心理碩士在讀。本科曾混跡于計(jì)算機(jī)專業(yè),后又在心理學(xué)的道路上不懈求索。越來越發(fā)現(xiàn)數(shù)據(jù)分析和編程已然成為了兩門必修的生存技能,因此在日常生活中盡一切努力更好地去接觸和了解相關(guān)知識,但前路漫漫,我仍在路上。
翻譯組招募信息
工作內(nèi)容:需要一顆細(xì)致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據(jù)科學(xué)/統(tǒng)計(jì)學(xué)/計(jì)算機(jī)類的留學(xué)生,或在海外從事相關(guān)工作,或?qū)ψ约和庹Z水平有信心的朋友歡迎加入翻譯小組。
你能得到:定期的翻譯培訓(xùn)提高志愿者的翻譯水平,提高對于數(shù)據(jù)科學(xué)前沿的認(rèn)知,海外的朋友可以和國內(nèi)技術(shù)應(yīng)用發(fā)展保持聯(lián)系,THU數(shù)據(jù)派產(chǎn)學(xué)研的背景為志愿者帶來好的發(fā)展機(jī)遇。
其他福利:來自于名企的數(shù)據(jù)科學(xué)工作者,北大清華以及海外等名校學(xué)生他們都將成為你在翻譯小組的伙伴。
點(diǎn)擊文末“閱讀原文”加入數(shù)據(jù)派團(tuán)隊(duì)~
轉(zhuǎn)載須知
如需轉(zhuǎn)載,請?jiān)陂_篇顯著位置注明作者和出處(轉(zhuǎn)自:數(shù)據(jù)派ID:DatapiTHU),并在文章結(jié)尾放置數(shù)據(jù)派醒目二維碼。有原創(chuàng)標(biāo)識文章,請發(fā)送【文章名稱-待授權(quán)公眾號名稱及ID】至聯(lián)系郵箱,申請白名單授權(quán)并按要求編輯。
發(fā)布后請將鏈接反饋至聯(lián)系郵箱(見下方)。未經(jīng)許可的轉(zhuǎn)載以及改編者,我們將依法追究其法律責(zé)任。
點(diǎn)擊“閱讀原文”擁抱組織

