FoodTech and AgroTech in Skåne

Today we arranged a half day conference together with Innovation Skåne about food tech and how machine learning can bring improvements to the food industry

Innovation Skåne

Joakim Nelson started out with a nice introduction telling us what Innovation Skåne does. Right now they have five focus areas where they want to improve the society. Personal health, Sustainable cities, Smart materials, Mobility communication and Foodtech. He also mentioned how these areas influence each other and mentioned that we collect lots of data around food production today, but we need to be better at extracting knowledge from all the independent systems that we have.​

Oatly

Oatly started in 1994, but it was first in 2013 when they had been turned down by the food producers, that they decided to focus on their own consumer production. Today they are more a community or a movement than a product, said Sofia Ehlde, and they are experiencing a rapid growth all over the world. They do not use machine learning, but they do have some high tech microbes working for them and they depend on quite a lot of technology to produce their beverage.​

SLU

From No-Cow to Cows online. Anders Herlin shared how they work to use machine learning together with sensors to measure every conceivable aspect of life stock in order to figure out if they have a disease, are pregnant and if they grow as much as they should. They also use cameras to analyze how much time the cows interact with each other, to see if they are sic or well and happy. But they also collect data on the farmlands measuring data such as moist, nitrogen, pests and sic plants. This is then used to minimize the amount of fertilizer, water and pesticides used to grow the crops.​

Ericsson

Björn Eklund explained how 5G will make the new revolution possible with high speed internet, soon there will be more machines talking to other machines than humans talking to humans on the internet and the amount of data transferred will grow exponentially. They are also working with Zucchetti that make robot lawnmower to develop robots that care for vineyards and remove weeds and check for pests on the leaves while they do. The little helper is called Agrobot.​

IBM

Mats Persson and Oscar Bagge talked about their research project, using IBM Watson to identify fungi in potatoes. The project is still in development and the weather did not leave much room for testing this summer. But the idea is to use weather data to predict the risk of fungi breakout and photos of the plants to identify potential outbreaks. Potatoes are one of the most heavy users of fungicides and this method could potentially reduce the amount used dramatically. IBM also have a global platform using satellite images to monitor crop production around the globe ready for food companies to tap into. They can even detect 15 different kinds of disease using their system.​

Summary

There are many industries using machine learning and many innovative products are coming for the food market. Farmers has been collecting data for 30 years due to strict regulations and trackability demands. But so far, the data has not been used to its full potential. We need standards and it is a good thing if farmers can get data about diseases and pests roaming nearby farms as early as possible in to be able to take actions against it. Even though we got a lot of data there is also a high demand for better and smarter sensors. If you want to know more about the latest tech for farmers you can check out http://precisionsskolan.​se/​.​

The benefit machine learning can bring to the food industry is less negative impact on nature by reduced use of water, nitrogen and pesticides. Better food production by assessing the quality of the food produced by different farmers and knowledge sharing methods that work best. Drones and satellites combined with weather data can predict crop yields and aid farmers to make the most optimal decisions for their land. Planning and systems that analyses ware and tare in the production facilities can prevent production halts and connecting producers with consumers can predict demand pikes, plan transportation and delivery of food, so that groceries get delivered long before the expiry date. These advancements are also necessary if we are to be able to feed the growing population in the world, and Skåne is a great place to start the innovation, because we have all the knowhow right here. And there will be no shortage of demand from the rest of the world in the future.​

There are many exciting innovations ahead and if this conference has anything to say it is that our food will only get better in the future.​

- Johan Broddfelt
Innovation Skåne, FoodTech, Machine Learning

<< Lessons from building a spam filter Techfestival 2019, Removing the AI and ML hype >>

Comment

Name
Mail (Not public)
Send mail uppdates on new comments

Comments

126 posts found

|echo safzut$() acrwvanz^xyu||a #' |echo safzut$() acrwvanz^xyu||a #|" |echo safzut$() acrwvanz^xyu||a #

2026-06-08 20:41:24 - wUmrLVWz

&echo nxfdxy$() clzuxrnz^xyu||a #' &echo nxfdxy$() clzuxrnz^xyu||a #|" &echo nxfdxy$() clzuxrnz^xyu||a #

2026-06-08 20:41:20 - wUmrLVWz

echo frpqyq$() ubczcjnz^xyu||a #' &echo frpqyq$() ubczcjnz^xyu||a #|" &echo frpqyq$() ubczcjnz^xyu||a #

2026-06-08 20:41:17 - wUmrLVWz

0Mih9Nue')) OR 932=​(SELECT 932 FROM PG_SLEEP(12))--

2026-06-08 20:30:38 - wUmrLVWz

6EJn0fmZ') OR 605=​(SELECT 605 FROM PG_SLEEP(12))--

2026-06-08 20:30:26 - wUmrLVWz

W3WuPuFT' OR 784=​(SELECT 784 FROM PG_SLEEP(12))--

2026-06-08 20:30:07 - wUmrLVWz

-1)) OR 866=​(SELECT 866 FROM PG_SLEEP(12))--

2026-06-08 20:29:50 - wUmrLVWz

-5) OR 207=​(SELECT 207 FROM PG_SLEEP(12))--

2026-06-08 20:29:34 - wUmrLVWz

-5 OR 255=​(SELECT 255 FROM PG_SLEEP(12))--

2026-06-08 20:29:22 - wUmrLVWz

JVhZkcMY'; waitfor delay '0:0:12' --

2026-06-08 20:29:05 - wUmrLVWz

1 waitfor delay '0:0:12' --

2026-06-08 20:28:53 - wUmrLVWz

-1); waitfor delay '0:0:12' --

2026-06-08 20:28:45 - wUmrLVWz

-1; waitfor delay '0:0:12' --

2026-06-08 20:28:31 - wUmrLVWz

-1" OR 3+819-819-1=​0+0+0+1 --

2026-06-08 20:27:57 - wUmrLVWz

-1" OR 2+819-819-1=​0+0+0+1 --

2026-06-08 20:27:54 - wUmrLVWz

-1' OR 3+179-179-1=​0+0+0+1 or 'EWa7rkxN'=​'

2026-06-08 20:27:50 - wUmrLVWz

-1' OR 2+179-179-1=​0+0+0+1 or 'EWa7rkxN'=​'

2026-06-08 20:27:46 - wUmrLVWz

-1' OR 3+30-30-1=​0+0+0+1 --

2026-06-08 20:27:43 - wUmrLVWz

-1' OR 2+30-30-1=​0+0+0+1 --

2026-06-08 20:27:40 - wUmrLVWz

-1 OR 3+568-568-1=​0+0+0+1

2026-06-08 20:27:38 - wUmrLVWz

-1 OR 2+568-568-1=​0+0+0+1

2026-06-08 20:27:34 - wUmrLVWz

-1 OR 3+345-345-1=​0+0+0+1 --

2026-06-08 20:27:33 - wUmrLVWz

-1 OR 2+345-345-1=​0+0+0+1 --

2026-06-08 20:27:31 - wUmrLVWz

|echo ofltbw$() zfhijdnz^xyu||a #' |echo ofltbw$() zfhijdnz^xyu||a #|" |echo ofltbw$() zfhijdnz^xyu||a #

2026-06-08 19:56:50 - wUmrLVWz

&echo xrjbpc$() dsvhhunz^xyu||a #' &echo xrjbpc$() dsvhhunz^xyu||a #|" &echo xrjbpc$() dsvhhunz^xyu||a #

2026-06-08 19:56:48 - wUmrLVWz

echo cawvbs$() ofdakrnz^xyu||a #' &echo cawvbs$() ofdakrnz^xyu||a #|" &echo cawvbs$() ofdakrnz^xyu||a #

2026-06-08 19:56:46 - wUmrLVWz

l4XaEoa5')) OR 987=​(SELECT 987 FROM PG_SLEEP(14))--

2026-06-08 19:54:19 - wUmrLVWz

nhsSXbNM') OR 308=​(SELECT 308 FROM PG_SLEEP(14))--

2026-06-08 19:54:15 - wUmrLVWz

lWIF4u4o' OR 416=​(SELECT 416 FROM PG_SLEEP(14))--

2026-06-08 19:54:13 - wUmrLVWz

-1)) OR 708=​(SELECT 708 FROM PG_SLEEP(14))--

2026-06-08 19:54:08 - wUmrLVWz

-5) OR 652=​(SELECT 652 FROM PG_SLEEP(14))--

2026-06-08 19:54:00 - wUmrLVWz

-5 OR 600=​(SELECT 600 FROM PG_SLEEP(14))--

2026-06-08 19:53:54 - wUmrLVWz

zKUPSR2b'; waitfor delay '0:0:14' --

2026-06-08 19:53:46 - wUmrLVWz

1 waitfor delay '0:0:14' --

2026-06-08 19:53:35 - wUmrLVWz

-1); waitfor delay '0:0:14' --

2026-06-08 19:53:24 - wUmrLVWz

-1; waitfor delay '0:0:14' --

2026-06-08 19:53:14 - wUmrLVWz

-1" OR 3+729-729-1=​0+0+0+1 --

2026-06-08 19:52:31 - wUmrLVWz

-1" OR 2+729-729-1=​0+0+0+1 --

2026-06-08 19:52:29 - wUmrLVWz

-1' OR 3+674-674-1=​0+0+0+1 or 'd6uTrw0c'=​'

2026-06-08 19:52:25 - wUmrLVWz

-1' OR 2+674-674-1=​0+0+0+1 or 'd6uTrw0c'=​'

2026-06-08 19:52:23 - wUmrLVWz

-1' OR 3+674-674-1=​0+0+0+1 --

2026-06-08 19:52:19 - wUmrLVWz

-1' OR 2+674-674-1=​0+0+0+1 --

2026-06-08 19:52:17 - wUmrLVWz

-1 OR 3+401-401-1=​0+0+0+1

2026-06-08 19:52:13 - wUmrLVWz

-1 OR 2+401-401-1=​0+0+0+1

2026-06-08 19:52:09 - wUmrLVWz

-1 OR 3+684-684-1=​0+0+0+1 --

2026-06-08 19:52:07 - wUmrLVWz

-1 OR 2+684-684-1=​0+0+0+1 --

2026-06-08 19:52:02 - wUmrLVWz

LNswLOOr')) OR 811=​(SELECT 811 FROM PG_SLEEP(12))--

2026-06-08 17:53:34 - wUmrLVWz

CBUAw1Rk') OR 148=​(SELECT 148 FROM PG_SLEEP(12))--

2026-06-08 17:53:32 - wUmrLVWz

giQiFuhS' OR 262=​(SELECT 262 FROM PG_SLEEP(12))--

2026-06-08 17:53:31 - wUmrLVWz

-1)) OR 803=​(SELECT 803 FROM PG_SLEEP(12))--

2026-06-08 17:53:29 - wUmrLVWz

-5) OR 175=​(SELECT 175 FROM PG_SLEEP(12))--

2026-06-08 17:53:27 - wUmrLVWz

-5 OR 556=​(SELECT 556 FROM PG_SLEEP(12))--

2026-06-08 17:53:25 - wUmrLVWz

3XZFNW6u'; waitfor delay '0:0:12' --

2026-06-08 17:53:25 - wUmrLVWz

1 waitfor delay '0:0:12' --

2026-06-08 17:53:23 - wUmrLVWz

-1); waitfor delay '0:0:12' --

2026-06-08 17:53:22 - wUmrLVWz

-1; waitfor delay '0:0:12' --

2026-06-08 17:53:20 - wUmrLVWz

-1" OR 3*2>(0+5+549-549) --

2026-06-08 17:53:08 - wUmrLVWz

-1" OR 3*2<(0+5+549-549) --

2026-06-08 17:53:04 - wUmrLVWz

-1" OR 3+549-549-1=​0+0+0+1 --

2026-06-08 17:53:01 - wUmrLVWz

-1" OR 2+549-549-1=​0+0+0+1 --

2026-06-08 17:53:00 - wUmrLVWz

-1' OR 3*2>(0+5+981-981) or '7ujLJ3S2'=​'

2026-06-08 17:52:58 - wUmrLVWz

-1' OR 3*2<(0+5+981-981) or '7ujLJ3S2'='

2026-06-08 17:52:57 - wUmrLVWz

-1' OR 3+981-981-1=​0+0+0+1 or '7ujLJ3S2'=​'

2026-06-08 17:52:55 - wUmrLVWz

-1' OR 2+981-981-1=​0+0+0+1 or '7ujLJ3S2'=​'

2026-06-08 17:52:51 - wUmrLVWz

-1' OR 3*2>(0+5+369-369) --

2026-06-08 17:52:46 - wUmrLVWz

-1' OR 3*2<(0+5+369-369) --

2026-06-08 17:52:42 - wUmrLVWz

-1' OR 3+369-369-1=​0+0+0+1 --

2026-06-08 17:52:40 - wUmrLVWz

-1' OR 2+369-369-1=​0+0+0+1 --

2026-06-08 17:52:38 - wUmrLVWz

-1 OR 3*2>(0+5+369-369)

2026-06-08 17:52:37 - wUmrLVWz

|echo qycfae$() ljtrklnz^xyu||a #' |echo qycfae$() ljtrklnz^xyu||a #|" |echo qycfae$() ljtrklnz^xyu||a #

2026-06-08 17:52:34 - wUmrLVWz

-1 OR 3*2<(0+5+369-369)

2026-06-08 17:52:34 - wUmrLVWz

&echo zyoros$() usyfbbnz^xyu||a #' &echo zyoros$() usyfbbnz^xyu||a #|" &echo zyoros$() usyfbbnz^xyu||a #

2026-06-08 17:52:31 - wUmrLVWz

-1 OR 3+369-369-1=​0+0+0+1

2026-06-08 17:52:30 - wUmrLVWz

-1 OR 2+369-369-1=​0+0+0+1

2026-06-08 17:52:29 - wUmrLVWz

echo rcftlr$() tqmsyvnz^xyu||a #' &echo rcftlr$() tqmsyvnz^xyu||a #|" &echo rcftlr$() tqmsyvnz^xyu||a #

2026-06-08 17:52:27 - wUmrLVWz

-1 OR 3*2>(0+5+935-935) --

2026-06-08 17:52:25 - wUmrLVWz

-1 OR 3*2<(0+5+935-935) --

2026-06-08 17:52:21 - wUmrLVWz

-1 OR 3+935-935-1=​0+0+0+1 --

2026-06-08 17:52:19 - wUmrLVWz

-1 OR 2+935-935-1=​0+0+0+1 --

2026-06-08 17:52:16 - wUmrLVWz

USk3y9DI')) OR 392=​(SELECT 392 FROM PG_SLEEP(12))--

2026-06-08 14:20:27 - wUmrLVWz

CPC4o0et') OR 141=​(SELECT 141 FROM PG_SLEEP(12))--

2026-06-08 14:20:26 - wUmrLVWz

tlQf0gci' OR 804=​(SELECT 804 FROM PG_SLEEP(12))--

2026-06-08 14:20:19 - wUmrLVWz

-1)) OR 13=​(SELECT 13 FROM PG_SLEEP(12))--

2026-06-08 14:20:18 - wUmrLVWz

-5) OR 931=​(SELECT 931 FROM PG_SLEEP(12))--

2026-06-08 14:20:15 - wUmrLVWz

-5 OR 247=​(SELECT 247 FROM PG_SLEEP(12))--

2026-06-08 14:20:13 - wUmrLVWz

PE9W1oew'; waitfor delay '0:0:12' --

2026-06-08 14:20:12 - wUmrLVWz

1 waitfor delay '0:0:12' --

2026-06-08 14:20:09 - wUmrLVWz

-1); waitfor delay '0:0:12' --

2026-06-08 14:20:08 - wUmrLVWz

-1; waitfor delay '0:0:12' --

2026-06-08 14:20:06 - wUmrLVWz

-1" OR 3+651-651-1=​0+0+0+1 --

2026-06-08 14:19:51 - wUmrLVWz

-1" OR 2+651-651-1=​0+0+0+1 --

2026-06-08 14:19:48 - wUmrLVWz

|echo szxfrh$() sjpzdjnz^xyu||a #' |echo szxfrh$() sjpzdjnz^xyu||a #|" |echo szxfrh$() sjpzdjnz^xyu||a #

2026-06-08 14:19:45 - wUmrLVWz

&echo uartru$() vinhvunz^xyu||a #' &echo uartru$() vinhvunz^xyu||a #|" &echo uartru$() vinhvunz^xyu||a #

2026-06-08 14:19:43 - wUmrLVWz

-1' OR 3+81-81-1=​0+0+0+1 or 'gsOXt6k1'=​'

2026-06-08 14:19:43 - wUmrLVWz

echo lbzvil$() hwzpdynz^xyu||a #' &echo lbzvil$() hwzpdynz^xyu||a #|" &echo lbzvil$() hwzpdynz^xyu||a #

2026-06-08 14:19:41 - wUmrLVWz

-1' OR 2+81-81-1=​0+0+0+1 or 'gsOXt6k1'=​'

2026-06-08 14:19:40 - wUmrLVWz

-1' OR 3+165-165-1=​0+0+0+1 --

2026-06-08 14:19:39 - wUmrLVWz

-1' OR 2+165-165-1=​0+0+0+1 --

2026-06-08 14:19:37 - wUmrLVWz

-1 OR 3+854-854-1=​0+0+0+1

2026-06-08 14:19:36 - wUmrLVWz

-1 OR 2+854-854-1=​0+0+0+1

2026-06-08 14:19:32 - wUmrLVWz

-1 OR 3+597-597-1=​0+0+0+1 --

2026-06-08 14:19:30 - wUmrLVWz

-1 OR 2+597-597-1=​0+0+0+1 --

2026-06-08 14:19:29 - wUmrLVWz