找回密码
 立即注册
楼主: RhinoFreak

GitHub 上有哪些有关图像处理或是机器学习的有趣项目?

[复制链接]
发表于 2021-7-3 09:01 | 显示全部楼层
AI破解美食秘籍!一张照片就能生成食谱

每到深夜,朋友圈里总是有那么几个小伙伴大晒各种美食。
作为资深吃货,面对各种看得见却吃不着的美味,简直无比痛苦!
不过,最近Facebook的AI研究组发布了一项造福吃货党兼烹饪爱好者的黑科技——“反烹饪”系统(Inverse Cooking):根据一张食物的照片,就能生成食谱。下次再看到美食,只要一张照片,就能按照自动生成的食谱自己学着做了!
这是一张Inverse Cooking根据食物图像自动生成的食谱,由标题(Title)、原料(Ingredients)和烹饪说明(Instructions)组成
Inverse Cooking通过一个新颖的架构预测食物的原料,并将食物原料作为集合,在不强加任何顺序的情况下对其依赖性进行建模,然后通过同时处理图像及其推断的原料来生成烹饪指令。
虽然图像识别领域已经有非常多很成熟的应用了,但Inverse Cooking是第一个直接从食物图像生成烹饪食谱的系统。从图像生成食谱之所以这么难,是因为与对自然图像的理解相比,食物识别面对着额外的挑战:
    食物及其成分具有很高的类内变异性,并且在烹饪过程中会出现严重的变形。 食材一般都装在盘子里,而盘子有各种颜色、形状和质地,影响识别。 视觉成分检测(visual ingredient detection)需要高级推理和先验知识(例如,蛋糕可能含有糖而不是盐,而牛角面包可能含有黄油)。
下图展示了Inverse Cooking系统的工作原理
Inverse Cooking系统以食物图像作为输入,输出一系列烹饪指令。这些指令由一个指令解码器生成,该解码器将两个嵌入项作为输入。第一个嵌入项是从图像中提取的视觉特征,而第二个嵌入项则对从图像中提取的成分进行编码。
用图像编码器提取图像特征eI ,用θi参数化。原料成分由θL预测,并用θe编码到eL(ingredient embeddings)中。烹饪指令解码器由θR参数化,通过参考图像嵌入eI、成分嵌入eL和之前预测的单词(r0, ..., rt-1)生成食谱标题和一系列烹饪步骤。
以往,从图像生成食谱的问题被表示为一个检索任务,根据嵌入空间中的图像相似度评分,从一个固定的数据集中检索出接近的食谱。这种方法的效果很容易受到数据库样本量和多样性的影响,也会受到嵌入式学习质量的影响。当数据库中不存在匹配的食谱时,检索就会失败。


那这个采用了新架构的Inverse Cooking系统到底表现如何呢?
Ours表示用最新的Inverse Cooking系统生成的食谱,Retrieved表示用以往的检索方法生成的食谱,Real则表示实际的食谱;Ours和Retrieved预测的成分如果存在于实际样品中,则成分显示为蓝色,否则显示为红色。
可以看出,虽然Inverse Cooking系统还不能完全准确地预测出食物的食谱,但准确率已经很高了,并且明显比检索方法预测的结果更加准确。
甚至,有时Inverse Cooking系统生成的烹饪说明比实际的操作步骤更加详细:
Inverse Cooking系统连“盖好并摇匀”这样的细节都没有放过!
这个好玩的食谱生成项目已经在Github上开源了:Recipe Generation from Food Images,小伙伴们可以用自己储备的美食照片试一试,按照Inverse Cooking的指导做一道美食,说不定还能发现自己在美食烹饪上的天分!
<hr/>更多好玩的科技知识可关注 @人民邮电出版社  知乎机构号,我们会持续推出优质的科技科普图书和资源!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-3 09:09 | 显示全部楼层
1. TensorFlow
GitHub项目地址:
https://github.com/tensorflow/tensorflow
TensorFlow是谷歌发布的第二代机器学习系统。


2. Scikit-Learn
GitHub项目地址:
https://github.com/scikit-earn/scikit-learn
Scikit-Learn是用于机器学习的Python模块,它建立在SciPy之上。


3. Caffe
GitHub项目地址:
https://github.com/BVLC/caffe
Caffe是由神经网络中的表达式、速度、模块化产生的深度学习框架。


4. PredictionIO
GitHub项目地址:
https://github.com/PredictionIO/PredictionIO
PredictionIO是面向开发人员和数据科学家的开源机器学习服务器。它支持事件采集、算法调度、评估,以及经由REST APIs的预测结果查询。


5. Brain
GitHub项目地址:
https://github.com/harthur/brain
Brain是JavaScript中的神经网络库。


6. Keras
GitHub项目地址:
https://github.com/fchollet/keras
Keras是极其精简并高度模块化的神经网络库,在TensorFlow或Theano上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。


7. CNTK
GitHub项目地址:
https://github.com/Microsoft/CNTK
CNTK(Computational Network Toolkit )是一个统一的深度学习工具包,该工具包通过一个有向图将神经网络描述为一系列计算步骤。


8. Convnetjs
GitHub项目地址:
https://github.com/karpathy/convnetjs
ConvNetJS是利用Javascript实现的神经网络,同时还具有非常不错的基于浏览器的Demo。


9. Pattern
GitHub项目地址:
https://github.com/clips/pattern
Pattern是Python的一个Web挖掘模块。


10. NuPIC
GitHub项目地址:
https://github.com/numenta/nupic
NuPIC是一个实现了HTM学习算法的机器智能平台。


11. Theano
GitHub项目地址:
https://github.com/Theano/Theano
Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操作。


12. MXNet
GitHub项目地址:
https://github.com/dmlc/mxnet
MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。


13. Vowpal Wabbit
GitHub项目地址:
https://github.com/JohnLangford/vowpal_wabbit
Vowpal Wabbit是一个机器学习系统,该系统推动了如在线、散列、Allreduce、Learning2search、等方面机器学习前沿技术的发展。


14. Ruby Warrior
GitHub项目地址:
https://github.com/ryanb/ruby-warrior
Ruby Warrior通过设计了一个游戏使得Ruby语言和人工智能学习更加有乐趣和互动起来。


15. XGBoost
GitHub项目地址:
https://github.com/dmlc/xgboost
XGBoot是设计为高效、灵活、可移植的优化分布式梯度Boosting库。它实现了Gradient Boosting框架下的机器学习算法。


16. GoLearn
GitHub项目地址:
https://github.com/sjwhitworth/golearn
GoLearn是Go语言中“功能齐全”的机器学习库,简单性及自定义性是其开发目标。


17. ML_for_Hackers
GitHub项目地址:
https://github.com/johnmyleswhite/ML_for_Hackers
ML_for_Hackers是针对黑客机器学习的代码库,该库包含了所有针对黑客的机器学习的代码示例(2012)。


18. H2O-2
GitHub项目地址:
https://github.com/h2oai/h2o-2
H2O使得Hadoop能够做数学运算!它可以通过大数据衡量统计数据、机器学习和数学。


19. neon
GitHub项目地址:
https://github.com/NervanaSystems/neon
neon是Nervana基于Python语言的深度学习框架,在诸多常见的深层神经网络中都能够获得较高的性能,比如AlexNet、VGG或者GoogLeNet。


20. Oryx 2
GitHub项目地址:
https://github.com/cloudera/oryx
开源项目Oryx提供了简单且实时的大规模机器学习、预测分析的基础设施。它可实现一些常用于商业应用的算法类:协作式过滤/推荐、分类/回归、集群等。


21. Shogun
GitHub项目地址:
https://github.com/shogun-toolbox/shogun
Shogun是一个机器学习工具箱,由Soeren Sonnenburg 和GunnarRaetsch(创建,其重点是大尺度上的内核学习方法,特别是支持向量机SVM(Support Vector Machines)的学习工具箱。


22. HLearn
GitHub项目地址:
https://github.com/mikeizbicki/HLearn
HLearn是由Haskell语言编写的高性能机器学习库,目前它对任意维度空间有着最快最近邻的实现算法。


23. MLPNeuralNet
GitHub项目地址:
https://github.com/nikolaypavlov/MLPNeuralNet
MLPNeuralNet是一个针对iOS和Mac OS系统的快速多层感知神经网络库,可通过已训练的神经网络预测新实例。


24. Apache Mahout
GitHub项目地址:
https://github.com/apache/mahout
Mahout是Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。


25. Seldon Server
GitHub项目地址:
https://github.com/SeldonIO/seldon-server
Seldon是一个开放式的预测平台,提供内容建议和一般的功能性预测。


26. Datumbox – Framework
GitHub项目地址:
https://github.com/datumbox/datumbox-framework
Datumbox机器学习框架是用Java编写的一个开源框架,该框架的涵盖大量的机器学习算法和统计方法,并能够处理大尺寸的数据集。


27. Jubatus
GitHub项目地址:
https://github.com/jubatus/jubatus
Jubatus库是一个运行在分布式环境中的在线机器学习框架,即面向大数据数据流的开源框架。


28. Decider
GitHub项目地址:
https://github.com/danielsdeleo/Decider
Decider是另一个Ruby机器学习库,兼具灵活性和可扩展性。


(来源:数盟)


想知道AI加教育领域有哪些最新研究成果?请在智能观(zhinengguanym)对话界面回复“论文”;
想要AI领域更多的干货?请在对话界面回复“干货”;
想了解更多专家的“智能观”,请在对话界面回复“观点”,去获取你想要的内容吧。
发表于 2021-7-3 09:13 | 显示全部楼层
EasyPR 开源的中文车牌识别项目,Opencv 实现代码清晰易读。
GitHub - liuruoze/EasyPR: An open source project for chinese plate recognition. It aims to be Easy, Flexible, and Accurate. Welcome to contribute your expertise !
发表于 2021-7-3 09:18 | 显示全部楼层
最近在github翻译了一个机器学习项目,图文并茂,完整Python代码实现,很有价值。
https://github.com/MachineLearning100/100-Days-Of-ML-Code
发表于 2021-7-3 09:25 | 显示全部楼层
留一个链接,咱啥也不能说,啥也不知道啊。https://github.com/KuKuXia/Image_Processing_100_Questions
发表于 2021-7-3 09:35 | 显示全部楼层
自己的两个写起来就感觉比较有趣
用遗传算法进行前景背景分割(待更新


模糊算法Fuzzy进行边缘提取


经常运用在PID控制中的FUZZY在边缘提取上也可以有所应用。我们先进行高斯滤波去噪并且拉高梯度,然后规定如下的规则
If top is zero AND right is zero, THEN this pixel is NOT edge. If top is zero AND left is zero, THEN this pixel is NOT edge. If below is zero AND right is zero, THEN this pixel is NOT edge. If below is zero AND left is zero, THEN this pixel is NOT edge. ELSE is edge.
用这样的方式获得图片的边缘梯度从而实现边缘提取。很有趣,Fuzzy还可以运用到更多的地方,比如神经网络。
附上MatLab代码,手机编辑暂时格式乱一点…
%% function [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(Intensity) for x = 1:1:3    for y = 1:1:3        if((Intensity(x,y) <= 0.2) &&(Intensity(x,y) >= -0.2))            Intensity(x,y) = exp(-20*Intensity(x,y).*Intensity(x,y));   %Use the Guass method to make it clear        else Intensity(x,y) = 0;        end    end end W1 = min(Intensity(1,2),Intensity(2,3));   %If a AND b use the minimum W2 = min(Intensity(2,3),Intensity(3,2)); W3 = min(Intensity(3,2),Intensity(2,1)); W4 = min(Intensity(2,1),Intensity(1,2)); B = min(min(1-W1,1-W2),min(1-W3,1-W4)); end
%% ---------Using Fuzzy for Spatial Filters--------------- close all; clear all; clc; f = imread(''); f = mat2gray(f,[0 255]); [M,N]=size(f); f_Ex = zeros(M+2,N+2); for x = 1:1:M     for y = 1:1:N         f_Ex(x+1,y+1) = f(x,y);     end end z = zeros (3,3); g = zeros (M+2,N+2); for x = 2:1:M+1     for y = 2:1:N+1         z(1,1) = f_Ex(x-1,y-1) - f_Ex(x,y);         z(1,2) = f_Ex(x-1,y) - f_Ex(x,y);         z(1,3) = f_Ex(x-1,y+1) - f_Ex(x,y);         z(2,1) = f_Ex(x,y-1) - f_Ex(x,y);         z(2,2) = f_Ex(x,y) - f_Ex(x,y);         z(2,3) = f_Ex(x,y+1) - f_Ex(x,y);         z(3,1) = f_Ex(x+1,y-1) - f_Ex(x,y);         z(3,2) = f_Ex(x+1,y) - f_Ex(x,y);         z(3,3) = f_Ex(x+1,y+1) - f_Ex(x,y);         [W1,W2,W3,W4,B] = Fuzzy_Knowledge_Filters(z);         V1 = 0.8 * W1 + 0.2;         V2 = 0.8 * W2 + 0.2;         V3 = 0.8 * W3 + 0.2;         V4 = 0.8 * W4 + 0.2;         V5 = 0.8 - (0.8 * B);         g(x,y) = ((W1*V1) + (W2*V2) + (W3*V3) + (W4*V4) + (B*V5))/(W1+W2+W3+W4+B);      end end figure(); subplot(1,2,1); imshow(f,[0 1]); xlabel('a).Original Image'); subplot(1,2,2); imshow(g,[0 1]); xlabel('b).Result of fuzzy');
<hr/>
发表于 2021-7-3 09:43 | 显示全部楼层
看了一圈竟然没有匿名用户点出来 有些人就不要强答...可能大佬时间线上没出现?
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 18:52 , Processed in 0.092444 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表