From fe522db30f270f12a59bbda2e60f3bffad9fd7ed Mon Sep 17 00:00:00 2001 From: vik Date: Fri, 29 Dec 2023 16:57:42 -0800 Subject: [PATCH] download model from HF hub --- .gitignore | 1 - README.md | 37 +++++++++++++++++++++++++++++++++++++ assets/demo-4.jpg | Bin 5959 -> 30184 bytes requirements.txt | 12 ++++++------ sample.py | 7 +++++-- 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index ee94f05..19e0e6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .venv -model Scratchpad.ipynb __pycache__ \ No newline at end of file diff --git a/README.md b/README.md index 56b313a..cd71705 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,41 @@ Initial prototype built using SigLIP, Phi-1.5, and the LLaVa training dataset. The model is for research purposes only, and is subject to the Phi and LLaVa license restrictions. +**Examples** +| Image | Examples | +| --- | --- | +| ![](assets/demo-1.jpg) | **What is the title of this book?**
The Little Book of Deep Learning
Author: Francois Flaubert

**What can you tell me about this book?**
The book in question is a small paperback titled "The Little Book of Deep Learning." It appears to be a guide or reference for those interested in deep learning, as the title suggests. The book is likely to be helpful for individuals who are new to the field or looking to expand their knowledge in this area. The image shows the book being held by a person, possibly a reader or a professional in the field.

**What is the person holding?**
The person is holding a book, which is titled "The Little Book of Deep Learning." | +| ![](assets/demo-2.jpg) | **What type of food is the girl holding?**
The girl is holding a sandwich.

**What color is the woman's hair?**
The woman's hair is white.

**What is the girl doing in the image?**
The girl in the image is eating a sandwich, specifically a hamburger, while sitting at a table. | +| ![](assets/demo-3.jpg) | **What color is the train?**
The train is red.

**What is the bus doing in the image?**
The bus in the image is traveling down a city street, passing by tall buildings and driving under a street light.

**What kind of public transportation is in the image?**
The image features a red light-rail train, which is a type of public transportation. | +| ![](assets/demo-4.jpg) | **What is the girl looking at?**
The girl is looking at her reflection in a mirror.

**What color is the woman's hair?**
The woman has black hair.

**What is the woman doing in the mirror?**
The woman is looking at herself in the mirror, possibly adjusting her hair or makeup. | +| ![](assets/demo-5.jpg) | **What might be the reason for the dog's aggressive behavior?**
The dog's aggressive behavior could be attributed to the fact that it is being bitten by a person, which is a form of animal abuse. The dog's eyes are red, and it appears to be growling, which are signs of fear or pain. The aggressive behavior might be a result of the dog's attempt to protect itself or its owner from the perceived threat. It is essential to address such behavior in dogs to ensure their well-being and prevent potential harm to both the dog and the person involved.

**What kind of dog is in the picture?**
The dog in the picture is a Chihuahua.

**What color is the dog?**
The dog is black and white. | +| ![](assets/demo-6.jpg) | **What is the man wearing?**
The man is wearing a large, inflatable suit or a giant inflatable costume.

**Is he indoors or outdoors?**
The man is outdoors, standing in front of a building.

**What is in the background?**
In the background, there is a building visible behind the person dressed up in a large amount of plastic wrap. | + +**Usage** + +Clone this repository and install the dependencies: + +```bash +pip install -r requirements.txt +``` + +Use the `sample.py` script to run the model on CPU: + +```bash +python sample.py --image [IMAGE_PATH] [--interactive] +``` + +When the `--interactive` flag is not set, the script will predict three questions and try +to answer them. + +**Limitations** + +* The model may generate inaccurate statements. +* It may struggle to adhere to intricate or nuanced instructions. +* It is primarily designed to understand English. Informal English, slang, and + non-English languages may not work well. +* The model may not be free from societal biases. Users should be aware of this + and exercise caution and critical thinking when using the model. +* The model may generate offensive, inappropriate, or hurtful content if it is + prompted to do so. diff --git a/assets/demo-4.jpg b/assets/demo-4.jpg index b0bf78651e8e2b377d5a9b0d314a11cab2b20da0..1300387566de333f5850623950525d22fb674dfe 100644 GIT binary patch literal 30184 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 Y$f~`i1zm2$7!J{#t?1&*SO%Z}*}|#zGXMYp literal 5959 zcma)Ac|6qJ_x~^$Teh-{J+h5>?6S^?(9j4oWKDUHu`ff`P$F5f46-JMF_xt4sZl-F z>|@^v8M`b=`04w5zR&mj=l9&#>%8tg_q@(MuY1pV-*fNj=;*d!(oh`+udg{wWDyrw3MmF%XpqK+R4CVy8O&4Dg*fNDcb!>OVwFM+Kq* zQ=d&5vH{doAP_Z(mWqji4t%CTMGb&x*l9T~(#h+X-T|K%@rg{nAbLsRs@dI?g4g|= zT#6{)sMMALZe?@7mv5DH(T-`=TW6NIseaQxOZ@JfS^m8~`#c7j;g@ z0cOydbL=2?00!*ei;aklrT<@9rnn`x@>NZpNT#F38-5wyE2XAM1p5oYwZgZSl|wrH z+c}{kF11VO-Y#)ehB4VIT$;EvkgR$01!{PrRdtd-Vru6CvJ3feFjcH#xJ<=J%Y7)| zQfj)3L|zCf+rxg8IcqmU=;+BW=lo@XjJ>7@+pebo(f5JE?hHlc6qqa7%Kng*E<|2G z1wNLXWb&mFE{{gr5NYyA=&KJxQ!LuspJ5wyO`OJu1AgolMI6&ZIF$T3n_<7iY_c8a zHp;a7kJ~2eH|G|p=Qy4ph`;vgR^OE+hhIY-C?gITV*@t!M9-HPukw0WZiF;?xY{mY z(9$*ETV2Uuw_h=GGNy9OUug8;dV2rGOmMyNKO=A__>q(43o8S~m`Mv~Yo$oi-NMUX zW>VtRBo@{8rZ71CdFzIcU!f69ii-SDXrfh8MsKIiEx zk3BX{|K}8w$6HhNDXC`l#g&iPqtpb6Q{UVTtm>(2+ zntU21HGPilQ>Li;cMV8D5sh-vX4#3~z6F_!&5DRniwOV297rYD5b%dVnH{zIGRu)o zCA%0w+dQYw2unk=BjVEglAFtZWFt=hDoGHoq06eD8#o>fmBd&O-u4ALU$k78Q=c~n+nW)5 z9KHOo9egXr<5q%v6iy+BY=fH^gXE(3TAueF?y)Ih?NY6Wcq^(?+Epe8?X~t;x!N2} zVLU>@2A*QoJuA>b>$Fh?^)hK{dg1sedK}`|*){2tyDXs;>=%t7lUjO~ia$s0CZBX; z<7`$(O$jwpgEAIVDXwcCP)zy6TrOuIc+JouRELA9Y_Ice zr`1@*NFanE|F5El+p8ZQ18b~)%kl814HR%8*3ZSsaJW9W5i}#n z!K}%&HbM8W28{7KVl7D+Lb`C36%W)Gk=S+7=W_|RiK~8)5Jk62CWIm-3t>Wywoa<0)mRT1_}WNM z_|=qG6WjFMkjzYRy1QqAX}MR%cTk#b^Z8{q97?7&Z<4soQ@~}Q$>YETOUtj^yfXsYL5_#3wGPN9f)`nNxTZ^LFk*X*%3RszChzIM zP6*fZ(H|Q@7i}6-+hR3y8A_UB$dwt~+_!}J^Re&;2G{*Y9q6<}ol%K+!i+^B9>aC= ztwzV}4GR~Z(Zz?>*WmJnKULJ$wZhIWmWfY`ppCPHyr(M3GO(IA+TIiTT9u@CL)!b% zI&;x?lBi}dd`ejTgD!VK_YLGY;TqzPd7LHAAymWRCj=&^N6(TpoG?WsV<*r?=H+?P zXqI7~t&Xq35QnrlqXY4`@Oj*^0?9AZM~``dT5=h3dIJbiF=-Q)#WJt8F|`UxrLf4OMu|) zmG!qf3I>q#3&mJbKNtPk%0aU%c>&TTUvROXm|w`u0oDojdlr8n${APLh4Xd_ON#=W)g5WAej z(8E-x=@a!YRaCHS zV52`29MB-F)4HkeCM^ySKVY8s_Gjo9=VHEot!d`ZAE2i?enHClyT)Kx%o}^s{fsEI zVG??ywSSh;ql16hwKQqr3B@mKXE@i|14)!FWLBtRE((6w5^1#W5~#;ihTzm4z~2sI zmUECqQ{i+rKY{so#P;uR+8${Yx<_q%87huj*&N80mp05#SV=@$zGrAv+e)zr@0LVg zD>X7}^ml;VQh%ni4QA82>WU%Ko55vrsP&O_hM=}Ym%InnaSui|VYUw#7y{SU^$Yb! zHoBrJ^lR)EBe9b0nYwe&e*Jn8a_Py)<~UAR3K$~Fm0UNuyMAa4Q-;gVynJl_VC))f z^&r0z_9z~|HYB)#2Zi`wgQECVwrsE#BVo?6=w2tgBCcMVAjh^R>HFp;;H{&cww<;uT*fzIh!l5I z{lykBBbK8~=!>??0nfAyapHrXdC6;&j@RF|{knJxjCSb}kCa6Z#Ye!fkng=3*&^0O zgx|X#$yfGm_yBc0)qRQZo+`$1siZOgrb~`nc$;hL`;Sd#4!-OiPC{cok8fA5_^jH$ z!WR!%NF z$7ZeNZJ?*}$N*v;7s$F9-|O73Oy%Q&m_rfDZtzRB2+Q>_2&utWHvbIRZ7&TotrQZ* zbyx>&p7}}f4lOCNvB4`@`;(!PjKo657v2Dk{)--ue)8wu_}BQKUGIul$+eiDVW>GG6Y-C)1S^)n#=2QS|L1{-htC17(A0K32&i^Tm%Kjf%fzuFNodDa&HsJjEFZV-z}BC_sZ&~r!(Uf$R(;2Z#C^= zPdfe8aWgv`R4u{K`srI-tAQGgOX94Fbm?uYekAK$z|(m7E)Vzj7EU!*%Rff`S-zg8Rs5m?N7W%aqBrx(1Ag&vi^lwH1h& z;FuVY$La-{LT28ijsSQ7Z(xU7XA+y9YwYw&G7Ks$^ujh3`m?QOl@T6CwOaSM&osPz zR;Y?cFuv`)9d9QE!lRJ6(!}y+kdojl=3AHPHX-05D1qz%=tqr$(1sW zj zr$CVFgYTZF!1^?8qu-SK==66!mD;uaiHA8q9Ti`OUZHW=*Mz^^UF;m4R>|xAp@rov zf1U)WE=-haZ5cu}J%@-8jVUAOMJvglXV3I8JN+u(l zy5!z=t*{tsYpvdEqbm&m5nWs(^{kU}hF#E4!pD!zw1_iu1^V6S?2W7fTj9IYl;@U& z3z8C7+6EO3uDM-Uue@zE*_u8-T-jxc9Omn8@&Yz&Q#6MWc?sIy;?52z><5=DZ2#q5 zYPBBw=LhcBw}nG5{rX&L8^Td1u^EWv?oYnGAN6K<9-L}(CIW9}pl=01MZyOgZQja8 z46f5-{6SaN_OySH4ihG&4yj~(K)?+&g($7T#;J4J!~y7#SW!upY)1QzjDQezUJvI& zI-ll8<@riR!DQOk7xyCT3T{rK>xXRF4|LsM@I}>SIc4_5jU-j6K2PF8CQz+m~WY2vPfFGg7X0 zP?wR^^gZSslqDPi9-#erufCEHzX3qvpA&A)O8lRKh}UUdW_!3>u?~@Fk933Xq)rWnb8JWTuO%vfj-~jjVaB z0b0mwtKZ$G=~O9jGB+}72+s10sAREQ7y9^;mDlR)t4Ph@wer_f#EReym4h<9$8Spg zkQFlJf29)%2V_GMfqJe=Z82tnnTPM#(WKt3F_8O0T1~LB6l(h0?v$iCoZNC1jZ3c9 zLWXqBn9Rhb?R$1fg1pt3KcrAXb@-Q8=OwIHP_6en?ph@QZv?;2U+$MBpFCad#2VH# z5{j#H%j|TlEw5}}g@0Or*s_{PeG~4qMEO%Dm7$iLw*A2mH{s@JN3S`bL8W+I|DN>5ADE}s z;AW-(8Fb7NxiW-Rt}v5N`8~eWy6o1<{orGw#istKpsHek%Vsp>>-G29eXdsh2dJGd z*Mo6<8KtHlAd^4xr_}uu#G@-N>Q86A{3Al3cUgX;n-Y{F_n+8e=Mc3Uxo2%YWmjb~ zFT6-mT{5>{`<&xAOv7z|oBRMp4~5MBp~LBr(m2JVZm+tcktktJtue@5v? z*BA>I=fkddXcxnGdvI1|?+flz4-+Ceo_)RflBcQ|8RQ$}IH52B;sD*EbQw7xU@^|G zc#0yL&6AV2WDOU39LuqvTroYF$~kfV=Np1wZ4p3iG+%!*d>_cYlAadnw<#+$Ut!e{ z=r=R387&a86RCIyyXh(eFK;5NjF?q6Kt4&Wg-M`D=jG0$tudrBK!=7ch(>TWNvc*j zXwfsb%*p>1o;?OpK0IXAJV7hTWA4|j5XcNlex|`7((IcyDqG-X-Iv#E8rUzSTF{x`Sbh=Hh%Hv!h0jP<~<2_U)RR80QX1eOWP?7YK!;3(@bz1)`6&_ zg|*mWkIGjq(xZMxGm_1ny4BN0X8Ei#E~8^xS>zwiz^c@wuoy8#FXvZ*zO99FFICMD zIH-oe9+DHKC{z{HTcKL$361tZykBIgIaeb`E3%Nh$-hW+SZHYDSaESdrpTxp5{Llf z3rQeg7D?cZ76V^_2vdi8YcRYyFaK|BVLyK(IOJKSVY{gCZ2XUhvko3#Dptd65YeWd zPt2NI>^>%lO_Bn-^4hii@(&a9N4!pfLz$E3(gpsEmIl=u1hO)M=y`##fwu3=j$~BqAVEYGzCX$2 zU5Nr{zRvnBueP1%jD%jz;b37=e3;0h={y=~IT(DaqI1e_#EnR3a^=?3D`x0Y5ZQjW zy&XtOKPxDo5Np>f9`(2*W-C|cu%F#WsKmG?m@p6E$Z825u1P zu9H9#4Q)^Ma(G)4uCCB(Jen+cDAi$MA@E$l8{Mpv;zRv%iY2yX-AneH+)nur+bQ4* z-Jo+nai4xbse_ezojk$Ba*7UeXD(RO_da&*6Q!v5DU%1Wakn|8$5nY?{X+#CEs$S7 z-I1FwI2PEXo(^T8V!0bVJ_hoAySu2s8Y=ObXpotn%~W8KLT2oQ=unXhnSUtcp?)HB z;B1P2Un>6v0qj&Fvi_*x3KXh5z6In?=&X3l#$Z3z(i-ZmS@aH`F!+|}Z#8E0h77gJ feJVdLS13^h`b0kLko@Pj@9&q@|L}z?bUOBbkT3fA diff --git a/requirements.txt b/requirements.txt index 371bd08..0d68e1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -torch -pillow -torchvision -transformers -accelerate -huggingface_hub \ No newline at end of file +accelerate==0.25.0 +huggingface-hub==0.20.1 +Pillow==10.1.0 +torch==2.1.2 +torchvision==0.16.2 +transformers==4.36.2 diff --git a/sample.py b/sample.py index 666ef79..d1955cd 100644 --- a/sample.py +++ b/sample.py @@ -1,9 +1,12 @@ from moondream import VisionEncoder, TextModel from PIL import Image +from huggingface_hub import snapshot_download import argparse -vision_encoder = VisionEncoder() -text_model = TextModel() +model_path = snapshot_download("vikhyatk/moondream0") + +vision_encoder = VisionEncoder(model_path) +text_model = TextModel(model_path) parser = argparse.ArgumentParser() parser.add_argument("--image", type=str, required=True)